Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SaveDialog auswerten? (https://www.delphipraxis.net/52805-savedialog-auswerten.html)

smart 4. Sep 2005 11:55


SaveDialog auswerten?
 
Wenn man mit
Delphi-Quellcode:
SaveDialog.Filter := 'Text- Dateien (*.txt)|*.txt|CSV- Dateien (*.csv)|*.csv';
2 Filter gesetzt hat, wie kann man nun auswerten welches Filter der Anwender geklickt hat?

Christian Seehase 4. Sep 2005 12:04

Re: SaveDialog auswerten?
 
Moin Smart,

schau Dir mal TSaveDialog.FilterIndex an.

smart 4. Sep 2005 12:12

Re: SaveDialog auswerten?
 
Zitat:

Zitat von Christian Seehase
Moin Smart,

schau Dir mal TSaveDialog.FilterIndex an.

Habe ich schon mit
Delphi-Quellcode:
If SaveDialog.FilterIndex = 2 Then SaveDialog.Filename := 'Namenlos.csv';
If SaveDialog.FilterIndex = 1 Then SaveDialog.Filename := 'Namenlos.txt';
Bzw:
Delphi-Quellcode:
If SaveDialog.FilterIndex = 1 Then SaveDialog.Filename := 'Namenlos.csv';
If SaveDialog.FilterIndex = 0 Then SaveDialog.Filename := 'Namenlos.txt'
versucht, klappt aber nicht. Was mache ich da falsch?.

Christian Seehase 4. Sep 2005 12:27

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.

smart 4. Sep 2005 12:36

Re: SaveDialog auswerten?
 
Zitat:

Zitat von Christian Seehase
Moin Smart,

die Indizes beginnen bei 1.
An welcher Stelle fragst Du dass denn ab?

An diese:
Delphi-Quellcode:
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);
Du meinst in der OnTypeChange die Abfrage setzen, oder?

marabu 4. Sep 2005 12:57

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:
procedure TDemoForm.SaveButtonClick(Sender: TObject);
begin
  with SaveDialog do begin
    FilterIndex := 1;
    if Execute then
      ShowMessage(Format('(%d) %s', [FilterIndex, FileName]));
  end;
end;
In deinem Beispiel ist die FilterIndex-Abfrage eigentlich überflüssig...

Grüße vom marabu

SirThornberry 4. Sep 2005 13:10

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.

Christian Seehase 4. Sep 2005 13:25

Re: SaveDialog auswerten?
 
Moin Marabu,

Zitat:

Zitat von marabu
die Endung wird korrekt beigesteuert, falls du sie bei der Eingabe des Dateinamens vergessen hast:

nein, wird sie nicht. ;-)
(ich habe das eben noch einmal ausprobiert)
Ggf. wird in dem Falle nur die DefaultExt angehängt.

marabu 4. Sep 2005 13:34

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:
procedure TDemoForm.FormCreate(Sender: TObject);
begin
  SaveDialog.Filter := 'Alle Dateien (*.*)|*.*'
    + '|Text-Dateien (*.txt)|*.txt'
    + '|CSV-Dateien (*.csv)|*.csv';
end;
Ratlose Grüße vom marabu

marabu 4. Sep 2005 13:47

Re: SaveDialog auswerten?
 
Zitat:

Zitat von SirThornberry
wenn du wissen willst welchen Filter der nutzer gewählt hat solltest du die Abfrage dementsprechend auch nach dem SaveDialog1.Execute machen.

Ach du Schreck, smart will den Filename initialisieren!?

Wenn das so ist, dann würde ich das so machen:

Delphi-Quellcode:
SaveDialog.FileName := 'Namenlos';
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.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz