![]() |
Frage zu SaveDialog
Wenn jemand im Datei-Menü auf "Speichern" klickt
und keine Datei ausgewählt wurde , dann gibt es eine Exception Ich hab das mit if OpenDialog1.FileName <>'' abgefangen , ist aber nicht besonders elegant
Delphi-Quellcode:
Wie schreibt man das normalerweise ?
procedure TForm1.Speichern1Click(Sender: TObject);
begin SaveDialog1.Options:= [ofOverwritePrompt]; if OpenDialog1.FileName <>'' then Clientdataset1.Savetofile(OpenDialog1.FileName) else SaveDialog1.Execute end; |
Re: Frage zu SaveDialog
Hallo,
normalerweise schreibt man es so, um beim Klick auf "Abbrechen" keine Exception auszulösen:
Delphi-Quellcode:
Wenn keine Datei gewählt wurde, sollte sich der Dialog dann auch nicht schließen.
if SaveDialog1.Execute then
// "OK" geklickt Edit: Und den Dateinamen, den du beim OpenDialog gewählt hast, würde ich in einer Variablen speichern und dann auf diese zugreifen. Arbeite so wenig wie möglich "direkt" mit der VCL. Grüße |
Re: Frage zu SaveDialog
Ich glaube die Dateivariable speichert man mit
Delphi-Quellcode:
var f : File;
procedure TForm1.FormCreate(Sender:TObject); begin Assignfile(f,'c:.....\Datei.txt'); . . . . end; |
Re: Frage zu SaveDialog
nö, eigentlich eher so ....
Delphi-Quellcode:
ist also eine ganz normale string var
var s: string;
... if od.execute then s := od.filename; |
Re: Frage zu SaveDialog
Das stimmt aber auch nicht ganz
Wenn man "Speichern" anklickt, dann sollte das SaveDialog1 nur ausgeführt werden, wenn noch keine Datei geöffnet wurde ,ansonsten wird es in der Datei gespeichert, die schon geöffnet ist.
Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
begin if SaveDialog1.execute then begin SaveDialog1.Options:= [ofOverwritePrompt]; Clientdataset1.Savetofile (OpenDialog1.FileName); end; end; |
Re: Frage zu SaveDialog
Hai Thomm,
du solltest die Options setzen bevor Du den Dialog mit .Execute aufrufst. |
Re: Frage zu SaveDialog
ausserdem speicherst du die daten unter einem anderen namen (opendialog) anstatt dem von user selektieren (savedialog)
|
Re: Frage zu SaveDialog
Nochmal das angesprochene Prinzip:
Delphi-Quellcode:
type
TMyForm = class(TForm) ... private FFilename: TFilename; ... end; ... procedure TMyForm.FormCreate(Sender: TObject); begin FFilename := ''; end; procedure TMyForm.Datei_oeffnen; begin if OpenDialog.Execute then FFilename := OpenDialog.Filename; end; procedure TMyForm.Datei_speichern; begin if FFilename = '' then begin if SaveDialog.Execute then FFilename := SaveDialog.Filename; end; if FFilename <> '' then Speichern(FFilename); //z.B. TStrings.SaveToFile end; |
Re: Frage zu SaveDialog
jetzt funktionierts :hello:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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