![]() |
SaveDialog auswerten?
Wenn man mit
Delphi-Quellcode:
2 Filter gesetzt hat, wie kann man nun auswerten welches Filter der Anwender geklickt hat?
SaveDialog.Filter := 'Text- Dateien (*.txt)|*.txt|CSV- Dateien (*.csv)|*.csv';
|
Re: SaveDialog auswerten?
Moin Smart,
schau Dir mal TSaveDialog.FilterIndex an. |
Re: SaveDialog auswerten?
Zitat:
Delphi-Quellcode:
Bzw:
If SaveDialog.FilterIndex = 2 Then SaveDialog.Filename := 'Namenlos.csv';
If SaveDialog.FilterIndex = 1 Then SaveDialog.Filename := 'Namenlos.txt';
Delphi-Quellcode:
versucht, klappt aber nicht. Was mache ich da falsch?.
If SaveDialog.FilterIndex = 1 Then SaveDialog.Filename := 'Namenlos.csv';
If SaveDialog.FilterIndex = 0 Then SaveDialog.Filename := 'Namenlos.txt' |
Re: SaveDialog auswerten?
Moin Smart,
die Indizes beginnen bei 1. An welcher Stelle fragst Du dass denn ab? Ggf. könnte auch das Ereignis OnTypeChange für Dich von Interesse sein. |
Re: SaveDialog auswerten?
Zitat:
Delphi-Quellcode:
Du meinst in der OnTypeChange die Abfrage setzen, oder?
SaveDialog1.Title := 'Exportieren';
SaveDialog1.Filter := 'Text- Dateien (*.txt)|*.txt|CSV- Dateien (*.csv)|*.csv'; // Abfrage If SaveDialog1.FilterIndex = 2 Then SaveDialog1.Filename := 'Namenlos.csv'; If SaveDialog1.FilterIndex = 1 Then SaveDialog1.Filename := 'Namenlos.txt'; if SaveDialog1.Execute then Memo1.Lines.SaveToFile(Form1.SaveDialog1.Filename); |
Re: SaveDialog auswerten?
Hi smart,
normalerweise interessiert dich der Index gar nicht, da er vom common dialog berücksichtigt wird - die Endung wird korrekt beigesteuert, falls du sie bei der Eingabe des Dateinamens vergessen hast:
Delphi-Quellcode:
In deinem Beispiel ist die FilterIndex-Abfrage eigentlich überflüssig...
procedure TDemoForm.SaveButtonClick(Sender: TObject);
begin with SaveDialog do begin FilterIndex := 1; if Execute then ShowMessage(Format('(%d) %s', [FilterIndex, FileName])); end; end; Grüße vom marabu |
Re: SaveDialog auswerten?
wenn du wissen willst welchen Filter der nutzer gewählt hat solltest du die Abfrage dementsprechend auch nach dem SaveDialog1.Execute machen.
|
Re: SaveDialog auswerten?
Moin Marabu,
Zitat:
(ich habe das eben noch einmal ausprobiert) Ggf. wird in dem Falle nur die DefaultExt angehängt. |
Re: SaveDialog auswerten?
Hi Chris,
wir machen da gänzlich verschiedene Erfahrungen. Mein Beispiel-Code, ergänzt um die Initialisierung, tut genau das, was ich beschrieben habe.
Delphi-Quellcode:
Ratlose Grüße vom marabu
procedure TDemoForm.FormCreate(Sender: TObject);
begin SaveDialog.Filter := 'Alle Dateien (*.*)|*.*' + '|Text-Dateien (*.txt)|*.txt' + '|CSV-Dateien (*.csv)|*.csv'; end; |
Re: SaveDialog auswerten?
Zitat:
Wenn das so ist, dann würde ich das so machen:
Delphi-Quellcode:
Alles andere macht ja der common dialog. Wenn man die Erweiterung vorgibt, dann schaltet man den internen Mechanismus aus. Bei vorhandenem .txt wird diese Erweiterung verwendet, auch wenn der User per FilterIndex .csv ausgewählt hat.
SaveDialog.FileName := 'Namenlos';
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz