[erledigt] TFileNameEdit: merkwürdiges Verhalten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
RudiRatlos
Beiträge: 17
Registriert: Sa 21. Sep 2019, 13:02
OS, Lazarus, FPC: Windows 10, FPC: 3.2.2, L 3.0
CPU-Target: 64Bit
Wohnort: München

[erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von RudiRatlos »

Hallo in die Runde,

wieder einmal mache ich meinem Name alle Ehre.

Das Problem ist eigentlich einfach, aber für mich rätselhaft: Ein einfaches Programm besteht nur aus einem Objekt TFileNameEdit, das ich aufrufe.

- Ein Klick auf den rechten Button des Objekts ergibt ein Bild wie in Schreenshot (101). Das Feld "Datei" zeigt den Namen links abgeschnitten, also 'sRg\PraxisRg.ini.'
- Klicke ich auf das Feld "Datei" springt die Ansicht um zu Schreenshot (102) und der Name erscheint vollständig, also 'D:\0_Common\pascal\Praxis\PraxisRg\PraxisRg.ini'

Ist das bei Euch auch so? Oder habt Ihr einen anderen Tipp als Brille putzen?

Viele Grüße und schon mal vielen Dank im Voraus

RudiRatlos

Windows 10, Lazarus 3.0
Dateianhänge
2024-03-11 Screenshot (101).jpg
2024-03-11 Screenshot (101).jpg (206.74 KiB) 4639 mal betrachtet
2024-03-11 Screenshot (102).jpg
2024-03-11 Screenshot (102).jpg (203.53 KiB) 4639 mal betrachtet
Zuletzt geändert von RudiRatlos am Mo 11. Mär 2024, 22:48, insgesamt 1-mal geändert.

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

Re: TFileNameEdit: merkwürdiges Verhalten

Beitrag von wp_xyz »

Liegt nicht an dir, sondern das ist eine Eigenheit von Windows, um die sich anscheinend niemand kümmert (Delphi hat's auch, aber auch Notepad++ und viele andere). Die einzige Möglichkeit, es zu verhindern, wäre die Option ofOldStyleDialog zu aktivieren (aber das willst du wahrscheinlich nicht - probier's aus...)

RudiRatlos
Beiträge: 17
Registriert: Sa 21. Sep 2019, 13:02
OS, Lazarus, FPC: Windows 10, FPC: 3.2.2, L 3.0
CPU-Target: 64Bit
Wohnort: München

Re: TFileNameEdit: merkwürdiges Verhalten

Beitrag von RudiRatlos »

vielen Dank für den Hinweis.

Ich habe zwar etwas gegrübelt, wie man das macht, habe aber dann gefunden, dass man ganz einfach

Code: Alles auswählen

FileNameEdit1.DialogOptions:=FileNameEdit1.DialogOptions + [ofOldStyleDialog];
setzen kann.

Das Ergebnis findet Ihr weiter unten und erinnert sehr an uralte Delphi-Zeiten, damit alle was davon haben folgt ein Screenshot!

Vielen Dank,
ich finde es wirklich toll, mit welchem Wissen und welcher Hilfsbereitschaft viele hier aktiv sind !!!

Viele Grüße RudiRatlos
Dateianhänge
2024-03-11 Screenshot (103).jpg
2024-03-11 Screenshot (103).jpg (142.9 KiB) 4572 mal betrachtet

RudiRatlos
Beiträge: 17
Registriert: Sa 21. Sep 2019, 13:02
OS, Lazarus, FPC: Windows 10, FPC: 3.2.2, L 3.0
CPU-Target: 64Bit
Wohnort: München

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von RudiRatlos »

Hallo allerseits,

zur Demonstration habe ich für Windows 10 ein kleines einfaches Programm FileDialog geschrieben, das die Dialogmöglichkeiten mit
  • TFileNameEdit (fehlerhaft)
  • TDirectoryEdit
  • TSaveDialog (kann TFileNameEdit ersetzen)
  • TOpenDialog (kann TFileNameEdit ersetzen)
enthält.

Vielleicht hilft es dem einen oder anderen ....

Viele Grüße
RudiRatlos
Dateianhänge
2024-03-13 Screenshot (101).jpg
2024-03-13 Screenshot (101).jpg (30.87 KiB) 4510 mal betrachtet
FileDialog.zip
(142.29 KiB) 56-mal heruntergeladen

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von Soner »

Das hat mit TFileNameEdit nichts zu tun. TFileNameEdit verwendet verschiedene Dialoge die von TFileDialog abstammen, ähnliches verhalten gibt es auch dort, siehe TFileNameEdit.DialogKind oder irgendein FileDialog aus Dialogs-Unit. Ich habe auf die schnelle nach Fehlern gesucht, aber ich konnte nichts finden.
Ich denke bevor Windows-Dateidialog geöffnet wird muss Pfadangabe etwa so "WindowsDateiDialog.FileName:=:=ExtractFilePath(Filename);" entfernt werden.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von Soner »

Ich habe in lcl\include\FileDialog.inc folgende Änderung gemacht:

Code: Alles auswählen

procedure TFileDialog.SetFileName(const value : string);
begin
  //original: if FFilename=Value then exit;
  //original: FFileName := Value;  // make sure this is defined first before the CNSendMessage
  FInitialDir:=ExtractFilePath(value);
  FFileName := ExtractFileName(value);
end; 
Jetzt wird Dateiname richtig angezeigt, aber Initialdir ist falsch, weil vor dem Ausführen des Dialogs InitialDir nochmal neu gesetzt wird mit "InitialDir:=ExtractFilePath(FileName);", wozu?
Ich denke InitialDir sollte nur bei SetFileName und SetInitialDir gesetzt werden.
Man muss die Unit mal komplett durchschauen und korrigieren.

RudiRatlos
Beiträge: 17
Registriert: Sa 21. Sep 2019, 13:02
OS, Lazarus, FPC: Windows 10, FPC: 3.2.2, L 3.0
CPU-Target: 64Bit
Wohnort: München

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von RudiRatlos »

Vielen Dank Soner, das ist richtig ...

Aber so wie jetzt SetFilename in lcl\include\FileDialog.inc definiert ist, stellt man fest, dass InitialDir leer ist, deshalb habe ich es gesetzt. Ich habe keine Ahnung, wie man erreicht, dass FileDialog.inc geändert wird. An wen muss man sich wenden?

Bevor das nicht geändert wird, muss ich das in meinem Programm setzen.

Viele Grüße und nochmal vielen Dank für den Hinweis

RR

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von af0815 »

RudiRatlos hat geschrieben:
Do 14. Mär 2024, 09:32
Aber so wie jetzt SetFilename in lcl\include\FileDialog.inc definiert ist, stellt man fest, dass InitialDir leer ist, deshalb habe ich es gesetzt
DIe Frage ist hier, ob das leere InitialDir absicht ist. Damit kann der Dialog das letzte dem System bekannte Verzeichnis verwenden. Setzt du es explizit dann überschreibst du ein eventuell gewolltes Verhalten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

RudiRatlos
Beiträge: 17
Registriert: Sa 21. Sep 2019, 13:02
OS, Lazarus, FPC: Windows 10, FPC: 3.2.2, L 3.0
CPU-Target: 64Bit
Wohnort: München

Re: [erledigt] TFileNameEdit: merkwürdiges Verhalten

Beitrag von RudiRatlos »

unter
https://gitlab.com/freepascal.org/lazar ... sues/40845

hat jemand gestern einen Call dazu aufgemacht, ob das Zufall ist, oder auf diesen thread zurückgeht, weiß ich nicht

Antworten