Autor |
Beitrag |
Grafix
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: Sa 17.07.10 18:00
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
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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.
_________________ We are, we were and will not be.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 17.07.10 19:00
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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?
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.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: So 18.07.10 16:18
Im OnCreate-Ereignis gibst du den Dialog frei, welchen Sinn macht das?
Entferne
Delphi-Quelltext
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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: So 18.07.10 22:51
Vielen Dank, Problem gelöst =)
|
|
|