TFileNameEdit

Rund um die LCL und andere Komponenten
Antworten
Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

TFileNameEdit

Beitrag von Joachim Raap »

[gelöst] Hallo,
1. ich scheitere als Neuling immer wieder daran, daß ich die Bedeutung der Eigenschaften nicht kenne. So suche ich schon länger für TFileNameEdit
die Eigentschaft, in der nach Auswahl einer Datei in einem Verzeichnis der Pfad "zurückgegeben" wird (und welches Ereignis dafür zuständig ist).
Kann mir da jemand aufs Pferd helfen?

2. Gibt es irgendwo (vozugsweise in deutsch) ein Kompendium, wo man so etwas mal nachlesen kann?

Danke
Zuletzt geändert von Joachim Raap am So 17. Mai 2020, 21:44, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TFileNameEdit

Beitrag von wp_xyz »

Joachim Raap hat geschrieben:
So 17. Mai 2020, 12:02
Hallo,
1. ich scheitere als Neuling immer wieder daran, daß ich die Bedeutung der Eigenschaften nicht kenne. So suche ich schon länger für TFileNameEdit
die Eigentschaft, in der nach Auswahl einer Datei in einem Verzeichnis der Pfad "zurückgegeben" wird (und welches Ereignis dafür zuständig ist).
Kann mir da jemand aufs Pferd helfen?
Auf Palette "Misc"
Joachim Raap hat geschrieben:
So 17. Mai 2020, 12:02
2. Gibt es irgendwo (vozugsweise in deutsch) ein Kompendium, wo man so etwas mal nachlesen kann?
Ich habe das in den Bookmarks:
https://wiki.lazarus.freepascal.org/LCL_Components

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TFileNameEdit

Beitrag von Mathias »

So suche ich schon länger für TFileNameEdit
die Eigentschaft, in der nach Auswahl einer Datei in einem Verzeichnis der Pfad "zurückgegeben" wird
Da mir diese Funktion zu wenig Komfort hatte, habe ich mir selbst so eine FileOpenBox geschrieben.
Diese hat den Vorteil, das die geöffneten Dateien in eine ComboBox schreibt, anstelle eines Edits.
So nebenbei werden die Auswahlen der ComboBox in eine XML-Datei geschrieben.

Wen ich mal Lust habe mache ich daraus eine Komponente.
Dateianhänge
FileOpen_with_XML.zip
(107.11 KiB) 84-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Re: TFileNameEdit

Beitrag von Joachim Raap »

.....da ist alles sehr schön.
Wie aber funktioniert die Auswahl mit TFileNameEdit? Die Abfrage der Eigenschaft FileName ist bei mir jedenfalls leer...

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TFileNameEdit

Beitrag von wp_xyz »

Du kannst mit dem Control auf zwei Arten arbeiten: einmal kannst du es wie ein normales Edit benutzen und den Dateinamen eintippen. Hier solltest du einen Handler für das Ereignis OnEditingDone schreiben - das kommt, wenn das Edit-Feld verlassen wird oder die ENTER-Taste gedrückt wird. Hier kannst du mit den Property Filename den eingegebenen Dateinamen abfragen, um die zugehörige Datei in ein Memo zu laden:

Code: Alles auswählen

procedure TForm1.FileNameEdit1EditingDone(Sender: TObject);
begin
  Memo1.Lines.LoadfromFile(FileNameEdit1.FileName);
end; 
Zum anderen kannst du auf den Button neben dem Edit-Feld klicken und einen Dateiauswahldialog öffnen. Hier kannst du wie bei anderen Programmen auch, den Dateinamen durch Klicken auswählen oder ins dortige Eingabefeld schreiben und abschließend "Öffnen" klicken. Hier wird das Ereignis OnAcceptFileName ausgelöst. Allerdings kommt das Ereignis, bevor der gewählte Dateiname an die FileName-Eigenschaft übertragen wurde. Stattdessen gibt es einen var-Parameter "Value", der den aktuell gewählten Dateinamen enthält. Da es sich um einen var-Parameter handelt, könntest du hier auch einen anderen Dateinamen eintragen, z.B. wenn die Auswahl ungültig ist, könntest du einen leeren String in Value zurückgeben, so dass das aufrufende Programm dies erkennt und entsprechend reagieren kann. Im Normalfall ist aber Value ok und du könnst nun auch auf diesem Weg die zugehörige Datei in ein Memo laden:

Code: Alles auswählen

procedure TForm1.FileNameEdit1AcceptFileName(Sender: TObject; var Value: String
  );
begin
  Memo1.Lines.LoadFromFile(Value);
end; 

Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Re: TFileNameEdit

Beitrag von Joachim Raap »

Danke wp_xyz
Ich hatte mit "FileNameEdit1AcceptFileName" schon mal probiert - hatte aber kein Ergebnis. Lag aber, wie ich jetzt gesehen habe daran, das ein Fehler im Code war - na ja, manchmal muß man nur darüber sprechen!!!
Hast Du aber für mich Dummy schön erklärt......

Antworten