Delphi Savedialog: Name der zu speichernden Datei vordefinieren?

kein pc wissen

Cadet 4th Year
Registriert
Feb. 2008
Beiträge
90
Hallo

Ich habe schon etwas erfahrung im umgang mit Delphi 7, lerne aber gerne dazu.

Folgendes:

Delphi ermöglicht das speichern, sowie das öffnen von Inhalten. Manche Programme haben die Fähigkeit, im Speicherdialog unter dem Namen z.B. ' Computerbase.htm' stehen zu haben. Leider kriege ich es nicht hin. Im objektinspektor schaffe ich es, aber im CODE macht er es nicht.
Was habe ich übersehen, was ist nicht ok oder ist alles Falsch?

Info: Savedialog, sowie Opendialog sind mir noch föllig neu.

Hier der CODE (Kopiert) [ Verwendet: Savedialog, Button, Listbox]
//Start//
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls,commdlg;

type
TForm1 = class(TForm)
Button1: TButton;
SaveDialog1: TSaveDialog;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
test:string;
begin
if savedialog1.Execute then begin
test:='hallo';
savedialog1.FileName:=test;
savedialog1.Filter:='Textdateten'|'.txt';
listbox1.Items.SaveToFile(savedialog1.FileName);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
with listbox1.Items do begin

add('Hallo');
add('Hallo');
add('Hallo');
add('Hallo');
add('Hallo');
add('Hallo');
end;
end;

end.

//Ende//

Das Programm läuft nur der "SpeicherDateiname" ist nicht möglich.
 
SaveDialog1.Execute liefert "True" zurück, sobald du im Speichern-Dialog auf speichern klickst.
Somit wird alles in deiner if-anweisung ausgeführt, wenn der Dialog bereits geschlossen ist.

Den Filter musst du also vor der if-Anweisung festlegen:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  test:string;
begin
  test:='hallo';
  savedialog1.FileName:=test;
  savedialog1.Filter:='Textdateten | .*txt';
  if savedialog1.Execute then begin
    listbox1.Items.SaveToFile(savedialog1.FileName);
  end;
end;

mfg
 
Zurück
Oben