Autor Beitrag
Eugen
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 21.07.02 21:54 
:?: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 24.07.02 21:51 
Titel: Alles OK
DefaultExt erledigt jetzt die ganze Arbeit. Der Code ist auf wenige Zeilen geschrumpft. Danke.