so würde ich das bei einem image machen:
Delphi-Quellcode:
var
SD: TSaveDialog;
begin
SD := TSaveDialog.Create(Self);
with SD do
begin
Filter := 'Jpeg Files (*.jpg)|*.jpg';
Title := 'Save Image to...';
InitialDir := GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY);
if Execute then
begin
Image1.Picture.SaveToFile(Filename);
end;
end;
SD.Free;
end;
oder automatisch:
Image1.Picture.SaveToFile(IncludeTrailingPathDelimiter(GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY)) + 'beispiel.jpg');
oder so:
Delphi-Quellcode:
var
SD: TSaveDialog;
begin
SD := TSaveDialog.Create(Self);
with SD do
begin
Filter := 'Jpeg Files (*.jpg)|*.jpg';
Title := 'Save Image to...';
InitialDir := GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY); // Initalisierungs Verzeichnis ist Desktop
if Execute then
begin
Image1.Picture.SaveToFile(IncludeTrailingPathDelimiter(ExtractFileDir(Filename)) + 'beispiel.jpg'); // speichert im vom User ausgewählten Verzeichnis ab.
end;
end;
SD.Free;
end;
Das IncludeTrailingPathDelimiter ergänzt das Verzeichnis um einen abschließenden Backslash.
Edit: also wäre die dritte lösung für dich am geeignetsten.
aber wenn du den benutzer nur zur auswahl eines verzeichnisses (und nicht zur nennung eines dateinamens) ermächtigen willst, solltest du dir mal den Befehl "SelectDirectory" ansehen. Da gibt es fertige Komponenten wie die Jedis (Name weiß ich gerade nicht, irgendwas mit BrowseFolder oder so) oder die standalone Komponente TBrowseForFolder (
http://endimus.com).