Entwickler-Ecke
Dateizugriff - Vista File Open Dialog Probleme
Grafix - Sa 17.07.10 18:00
Titel: Vista File Open Dialog Probleme
Hey,
ich möchte mit einer FileOpenDialog-Komponente den User einen Dateipfad festlegen lassen. Nach dem Auswählen soll der Pfad in einer Edit gespeichert werden und anschließend nur in einer Textdatei gespeichert werden.
Wenn ich drei Pfade angeben lassen möchte, brauche ich dafür 3 dieser Komponenten? Oder kann ich einfach jeweils mit einem anderen Button diese Komponente ansprechen und entsprechend in eine andere EditKomponente einfügen?
Am ende der Form soll der User bestätigen und mittels diesem Button sollen die drei FODs mit Free gelöscht werden. Ist das so ok oder besser gleich nach der Dateiauswahl freen?
Lg
Grafix
Gausi - Sa 17.07.10 18:09
Wenn du die File-Open-Komponente auf der Form hast, dann solltest du die gar nicht selber freigeben. Das passiert am Ende das Programmes automatisch.
Zu dem anderen: Nein, du brauchst nur eine Komponente. Jeweils nach dem Execute des Dialogs trägst du den Filename an der passenden Stelle ein.
Xion - Sa 17.07.10 19:00
Grafix hat folgendes geschrieben : |
Wenn ich drei Pfade angeben lassen möchte, brauche ich dafür 3 dieser Komponenten? Oder kann ich einfach jeweils mit einem anderen Button diese Komponente ansprechen und entsprechend in eine andere EditKomponente einfügen? |
Nein, brauchst du nicht. Wie Gausi sagte. Evtl wäre es sinnvoll, dass man alle Dateien auf einmal anwählen kann, da gibts ne MultiSelect(?) Option des OpenDialogs für.
Grafix hat folgendes geschrieben : |
Am ende der Form soll der User bestätigen und mittels diesem Button sollen die drei FODs mit Free gelöscht werden. Ist das so ok oder besser gleich nach der Dateiauswahl freen? |
Das kommt auf deine Implementierung an. Wenn du sie dynamisch erstellst, dann musst du sie löschen. Wenn du sie jedes mal beim Dialog öffnen createst, dann musst du es nach jedem Aufruf löschen ;)
jaenicke - Sa 17.07.10 22:30
Xion hat folgendes geschrieben : |
Wenn du sie dynamisch erstellst, dann musst du sie löschen. Wenn du sie jedes mal beim Dialog öffnen createst, dann musst du es nach jedem Aufruf löschen ;) |
Aber
nur, wenn kein Owner angegeben wurde, also nil.
Denn wenn ein Owner angegeben ist, kümmert sich dieser schon selbst darum. Wenn man die Komponente dann selbst freigibt, kann das seltsame Effekte nach sich ziehen.
Grafix - So 18.07.10 12:37
Ich habe leider nur die Hälfte verstanden, von eurer Ausführlichen Erklärung :(
Was hat das mit dem Owner zu tun?
Zur dynamischen Programmierung: Ich habe es denke ich nicht dynamisch programmiert, es können maximal drei Pfade ausgewählt werden, mittels drei Buttons. Ich möchte es jedoch nicht mit Mehrfachauswahl machen.
Habe hier einfach mal meinen Code gepastet, dreimal das selbe und recht simple, wieso gibt er mir da eine Zugriffsverletzung sobald ich einen Button zur Auswahl drücke??
Ist es bei diesem Code nötig am ende FileOpenDialog.Free auszuführen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| implementation
{$R *.dfm}
procedure TFInstall.BSkin_SearchClick(Sender: TObject); begin if FileOpenDialog.Execute then ESkin.Text := FileOpenDialog.FileName else ESkin.Text := ''; end;
procedure TFInstall.BSP_SearchClick(Sender: TObject); begin if FileOpenDialog.Execute then ESP.Text := FileOpenDialog.FileName else ESP.Text := ''; end;
procedure TFInstall.BWOM_SearchClick(Sender: TObject); begin if FileOpenDialog.Execute then begin EWOM.Text := FileOpenDialog.FileName; end else EWOM.Text := ''; end;
procedure TFInstall.FormCreate(Sender: TObject); begin FileOpenDialog.Free; end; end. |
danke für eure Hilfe
Andreas L. - So 18.07.10 16:18
Im OnCreate-Ereignis gibst du den Dialog frei, welchen Sinn macht das? ;-)
Entferne
und alles sollte klappen.
EDIT: Du brauchst den Code für die Buttons auch nicht 3 mal schreiben. Definiere folgende Methoden und stell diese dann im Objekt-Inspektor der Buttons ein
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TFInstall.SelectFileClick(Sender: TObject); var btn: TButton; begin if Sender is TButton then begin if FileOpenDialog.Execute then begin btn := TButton(Sender); if btn = BSkin_Search then ESkin.Text := FileOpenDialog.FileName else if btn = BSp_Search then ESP.Text := FileOpenDialog.FileName else if btn = BWOM_Search then EWOM.Text := FileOpenDialog.FileName; end; end; end; |
Grafix - So 18.07.10 22:51
Vielen Dank, Problem gelöst =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!