OSDN Git Service

Fix PrintSurfaceImage -- Invalid file name might be used
[winbottle/winbottle.git] / bottleclient / OpenFileEditor.pas
index 3eb6de5..bdebc71 100755 (executable)
@@ -14,8 +14,10 @@ type
     btnCancel: TButton;
     btnOk: TButton;
     lblCaption: TLabel;
+    SaveDialog: TSaveDialog;
     procedure btnBrowseClick(Sender: TObject);
   private
+    FOpenType: boolean; // behavior of the dialog (to open or to save)
     { Private \90é\8c¾ }
   public
     { Public \90é\8c¾ }
@@ -25,23 +27,29 @@ var
   frmOpenFileEditor: TfrmOpenFileEditor;
 
 function OpenFileEdit(var FileName: String;  Filter, ACaption: String;
-  Options: TOpenOptions): boolean; overload;
-function OpenFileEdit(var FileName: String; Filter, ACaption: String): boolean; overload;
+  Options: TOpenOptions): boolean;
+
+function SaveFileEdit(var FileName: String;  Filter, ACaption: String;
+  Options: TOpenOptions): boolean;
+
 
 implementation
 
 {$R *.dfm}
 
-function OpenFileEdit(var FileName: String;  Filter, ACaption: String;
-  Options: TOpenOptions): boolean; overload;
+function ExecuteFileDialog(var FileName: String;  Filter, ACaption: String;
+  Options: TOpenOptions; IsOpenType: boolean = true): boolean;
 var AForm: TfrmOpenFileEditor;
 begin
   Application.CreateForm(TfrmOpenFileEditor, AForm);
   try
     with AForm do begin
+      FOpenType := IsOpenType;
       lblCaption.Caption := ACaption;
       OpenDialog.Options := Options;
+      SaveDialog.Options := Options;
       OpenDialog.Filter := Filter;
+      SaveDialog.Filter := Filter;
       edtFile.Text := FileName;
       Result := ShowModal = mrOk;
       if Result then FileName := edtFile.Text;
@@ -51,15 +59,35 @@ begin
   end;
 end;
 
-function OpenFileEdit(var FileName: String;
-  Filter, ACaption: String): boolean; overload;
+function OpenFileEdit(var FileName: String;  Filter, ACaption: String;
+  Options: TOpenOptions): boolean;
 begin
-  Result := OpenFileEdit(FileName, Filter, ACaption, []);
+  Result := ExecuteFileDialog(FileName, Filter, ACaption, Options, true);
 end;
 
+function SaveFileEdit(var FileName: String;  Filter, ACaption: String;
+  Options: TOpenOptions): boolean;
+begin
+  Result := ExecuteFileDialog(FileName, Filter, ACaption, Options, false);
+end;
+
+
 procedure TfrmOpenFileEditor.btnBrowseClick(Sender: TObject);
 begin
-  if OpenDialog.Execute then edtFile.Text := OpenDialog.FileName;
+  // Check FOpenType flag
+  if FOpenType then
+  begin
+    if FileExists(edtFile.Text) then
+      OpenDialog.FileName := edtFile.Text;
+    if OpenDialog.Execute then
+      edtFile.Text := OpenDialog.FileName;
+  end else
+  begin
+    if FileExists(edtFile.Text) then
+      SaveDialog.FileName := edtFile.Text;
+    if SaveDialog.Execute then
+      edtFile.Text := SaveDialog.FileName;
+  end;
 end;
 
 end.