Entwickler-Ecke
Dateizugriff - Open/Save-Dialog
Eugen - So 21.07.02 21:54
Titel: Open/Save-Dialog
:?: Ich möchte beim Schliessen des Open/Save-Dialogs abfragen, ob der User auf Öffnen/Speichern oder Abbrechen gedrückt hat. Wie geht das?
Tino - So 21.07.02 22:30
Wenn Du die Funktion Execute aufrufst und der User dann auf Abbrechen klickt wir doch False zurück geliefert. Wenn der User auf Öffnen/Speichern klickt wir True zurück gegeben!
Gruß
Eugen - Di 23.07.02 17:23
Titel: DateiFilter
Danke Tino. Jetzt läuft die Abfrage makellos. Ich hab aber wiederum ein Problem mit dem Save-Dialog.
Beim Schliessen prüfe ich, ob der User überhaupt einen Namen für seine Datei eingetragen hat. Falls ja, dann stelle ich fest, ob er auch die Erweiterung (hier *.txt oder *.log) hinzugefügt hat oder nicht. Wenn ja, dann wird die Datei angelegt und abgespeichert, wenn nicht, füge ich die Erweiterung selbst hinzu je nachdem, welcher Dateifilter gerade aktiv ist. Der Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| var F: TextFile ; //SaveD = Save-Dialog if SaveD. Execute then begin SelFile:=ExtractFileName(SaveD.FileName); // Name der Datei Laenge:=Length(SelFile); Ext:=Copy(SelFile, Laenge-3, 4); // Ext = Dateinamenerweiterung if (Ext='.txt') or (Ext='.log') or (Ext='.TXT') or (Ext='.LOG') then begin AssignFile(F, SaveD.FileName); Rewrite(F); CloseFile(F); end else begin if SaveD.Filter='TXT (*.txt)' then //hier hapert's Ext:='.txt' else Ext:='.log'; AssignFile(F, SaveD.FileName + Ext); Rewrite(F); CloseFile(F); end; end; |
Beim Hinzufügen wird aber immer die Erweiterung *.log genommen unabhängig davon ob gerade nur txt- oder log-Dateien angezeigt werden. Delphi interpretiert SaveD.Filter immer als TXT|*.txt|LOG|*.log, da ich ja zwei Filter habe und läuft deshalb den else-Zweig durch. Meine Frage ist, wie kann ich den gerade aktiven Filter feststellen?
Tino - Di 23.07.02 17:52
Also ich habe bislang immer mit dem Property DefaultExt gearbeitet. Schau mal in der Hilfe nach. Diese Eigenschaft sollte eigentlich das machen was Du manuel im Code versuchst zu realisieren.
Gruß
TINO
Eugen - Mi 24.07.02 21:51
Titel: Alles OK
DefaultExt erledigt jetzt die ganze Arbeit. Der Code ist auf wenige Zeilen geschrumpft. Danke.
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!