From 5e1fa91e85abf1ef5a4aa70138a67136adb4f992 Mon Sep 17 00:00:00 2001
From: Philipp Winkel
Date: Mon, 2 Nov 2020 09:34:03 +0100
Subject: [PATCH] Various Bugfixes for Filename Input
---
Forms/MainFrm.dfm | 36 +++++++++++++++++++++---------------
Forms/MainFrm.pas | 26 +++++++++++++++++---------
2 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/Forms/MainFrm.dfm b/Forms/MainFrm.dfm
index d859bea..adf8064 100644
--- a/Forms/MainFrm.dfm
+++ b/Forms/MainFrm.dfm
@@ -69,6 +69,9 @@ object MainForm: TMainForm
TabOrder = 2
object spFile: TTabSheet
TabVisible = False
+ DesignSize = (
+ 408
+ 83)
object lblFile: TLabel
Left = 4
Top = 7
@@ -76,13 +79,15 @@ object MainForm: TMainForm
Height = 13
Caption = 'Output file:'
end
- object feFile: TEdit
- Left = 76
+ object feFile: TJvFilenameEdit
+ Left = 89
Top = 3
Width = 316
Height = 21
+ DialogOptions = [ofHideReadOnly, ofCreatePrompt]
+ Anchors = [akLeft, akTop, akRight]
TabOrder = 0
- Text = 'D:\Temp\test.pas'
+ Text = ''
end
end
object spFolder: TTabSheet
@@ -114,7 +119,6 @@ object MainForm: TMainForm
Width = 316
Height = 21
TabOrder = 0
- Text = 'Edit1'
end
object edtFolderPostfix: TEdit
Left = 89
@@ -122,22 +126,22 @@ object MainForm: TMainForm
Width = 316
Height = 21
TabOrder = 1
- Text = 'Edit1'
end
object deFolder: TEdit
Left = 89
Top = 4
- Width = 256
+ Width = 245
Height = 21
TabOrder = 2
end
- object BrowseOutputFolderButton: TButton
- Left = 351
- Top = 4
- Width = 64
+ object deFolderPropertiesButton: TButton
+ Left = 340
+ Top = 3
+ Width = 65
Height = 22
- Caption = 'BrowseOutputFolderButton'
+ Caption = 'Properties'
TabOrder = 3
+ OnClick = deFolderPropertiesButtonClick
end
end
end
@@ -202,19 +206,21 @@ object MainForm: TMainForm
Top = 8
Width = 316
Height = 21
+ OnAfterDialog = feSchemaAfterDialog
+ DialogOptions = [ofHideReadOnly, ofFileMustExist]
TabOrder = 4
- Text = 'feSchema'
+ Text = ''
end
object dlgSchema: TOpenDialog
Filter = 'W3C XML Schema files (*.xsd)|*.xsd|All files (*.*)|*.*'
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
- Left = 212
+ Left = 284
Top = 40
end
object dlgOutputFile: TSaveDialog
Filter = 'Delphi source files (*.pas)|*.pas|All files (*.*)|*.*'
Options = [ofHideReadOnly, ofPathMustExist, ofEnableSizing]
- Left = 323
- Top = 45
+ Left = 387
+ Top = 37
end
end
diff --git a/Forms/MainFrm.pas b/Forms/MainFrm.pas
index b45d313..5bbfecc 100644
--- a/Forms/MainFrm.pas
+++ b/Forms/MainFrm.pas
@@ -50,20 +50,22 @@ type
cbGenerateGetOptionalOrDefault: TCheckBox;
edtFolderPrefix: TEdit;
edtFolderPostfix: TEdit;
- feFile: TEdit;
deFolder: TEdit;
feSchema: TJvFilenameEdit;
- BrowseOutputFolderButton: TButton;
+ deFolderPropertiesButton: TButton;
+ feFile: TJvFilenameEdit;
procedure btnCloseClick(Sender: TObject);
procedure btnGenerateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OutputTypeClick(Sender: TObject);
procedure feFilePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
- procedure deFolderPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
+ procedure deFolderPropertiesButtonClick(Sender: TObject);
procedure feSchemaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure feSchemaPropertiesChange(Sender: TObject);
procedure btnHintsClick(Sender: TObject);
+ procedure feSchemaAfterDialog(Sender: TObject; var AName: string;
+ var AAction: Boolean);
private
function CheckValidSchemaFile: Boolean;
function CheckReadOnly(const AFileName: String): Boolean;
@@ -174,11 +176,11 @@ begin
if rbFile.Checked then
begin
- if not CheckReadOnly(feFile.Text) then
+ if not CheckReadOnly(feFile.FileName) then
Exit;
generator.OutputType := otSingle;
- generator.OutputPath := feFile.Text;
+ generator.OutputPath := feFile.FileName;
end else if rbFolder.Checked then
begin
generator.OutputType := otMultiple;
@@ -188,9 +190,9 @@ begin
generator.HasChecksEmpty := cbHasChecksEmpty.Checked;
generator.HasGenerateGetOptionalOrDefault := cbGenerateGetOptionalOrDefault.Checked;
generator.OnGetFileName := GetFileName;
- generator.Execute(feSchema.Text);
+ generator.Execute(feSchema.Filename);
- SaveSettings(feSchema.Text);
+ SaveSettings(feSchema.FileName);
ShowMessage('The data binding has been generated.');
finally
@@ -223,7 +225,7 @@ begin
end;
-procedure TMainForm.deFolderPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
+procedure TMainForm.deFolderPropertiesButtonClick(Sender: TObject);
var
directory: String;
@@ -233,6 +235,12 @@ begin
end;
+procedure TMainForm.feSchemaAfterDialog(Sender: TObject; var AName: string;
+ var AAction: Boolean);
+begin
+ feFile.FileName := ChangeFileExt(AName, '.pas');
+end;
+
procedure TMainForm.feSchemaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
if dlgSchema.Execute then
@@ -331,7 +339,7 @@ end;
function TMainForm.CheckValidSchemaFile: Boolean;
begin
- Result := FileExists(feSchema.Text);
+ Result := FileExists(feSchema.FileName);
if not Result then
begin