* Bugfix: If the notes directory did not exist, the configuration dialog should have been shown automatically. But apparently that does not work in the constructor of the main form in a Lazaraus program.
* Bugfix: Tf_DenkzettelCompanion.FormCloseQuery wow checks that FCategoriesFrame is assigned before calling its OnCloseQuery method.
* Bugfix: Tfr_Categories.OnCloseQuery now checks that FNotesFrame is assigned before calling its FormCloseQuery method
* Bugfix: Tfr_Notes.FormCloseQuery now checks that FEditframe is assigned before calling its FormCloseQuery method.
@@ -11,6 +11,7 @@ | ||
11 | 11 | Forms, |
12 | 12 | Controls, |
13 | 13 | Menus, |
14 | + StdCtrls, | |
14 | 15 | wf_Categories; |
15 | 16 | |
16 | 17 | type |
@@ -18,11 +19,21 @@ | ||
18 | 19 | { Tf_DenkzettelCompanion } |
19 | 20 | |
20 | 21 | Tf_DenkzettelCompanion = class(TForm) |
21 | - procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); | |
22 | - procedure FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState); | |
22 | + b_Configure: TButton; | |
23 | + l_NotConfigured: TLabel; | |
24 | + procedure b_ConfigureClick(Sender: TObject); | |
25 | + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); | |
26 | + procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | |
23 | 27 | private |
24 | - FBasePath: string; | |
28 | + const | |
29 | + WM_CONFIG = WM_USER + 4711; | |
30 | + | |
31 | + procedure InitCategoryFrame; | |
32 | + private | |
33 | + FBasePath: String; | |
25 | 34 | FCategoriesFrame: Tfr_Categories; |
35 | + procedure WmConfig(var _msg: TMessage); message WM_CONFIG; | |
36 | + procedure FirstConfig; | |
26 | 37 | public |
27 | 38 | constructor Create(_Owner: TComponent); override; |
28 | 39 | destructor Destroy; override; |
@@ -58,18 +69,13 @@ | ||
58 | 69 | end; |
59 | 70 | |
60 | 71 | if not DirectoryExists(FBasePath) then begin |
61 | - if not Tf_Settings.Execute(Self, FBasePath) then | |
62 | - Abort; | |
63 | - if not DirectoryExists(FBasePath) then begin | |
64 | - if not CreateDir(FBasePath) then | |
65 | - raise Exception.Create('Could not create directory.'); | |
66 | - end; | |
72 | + b_Configure.Visible := True; | |
73 | + l_NotConfigured.Visible := True; | |
74 | + PostMessage(self.Handle, WM_CONFIG, 0, 0); | |
75 | + Exit; //==> | |
67 | 76 | end; |
68 | 77 | |
69 | - FCategoriesFrame := Tfr_Categories.Create(Self); | |
70 | - FCategoriesFrame.Parent := Self; | |
71 | - FCategoriesFrame.Align := alClient; | |
72 | - FCategoriesFrame.Init(FBasePath); | |
78 | + InitCategoryFrame; | |
73 | 79 | end; |
74 | 80 | |
75 | 81 | destructor Tf_DenkzettelCompanion.Destroy; |
@@ -90,13 +96,34 @@ | ||
90 | 96 | inherited Destroy; |
91 | 97 | end; |
92 | 98 | |
93 | -procedure Tf_DenkzettelCompanion.FormCloseQuery(Sender: TObject; var CanClose: boolean); | |
99 | +procedure Tf_DenkzettelCompanion.FormCloseQuery(Sender: TObject; var CanClose: Boolean); | |
94 | 100 | begin |
101 | + if not Assigned(FCategoriesFrame) then | |
102 | + Exit; //==> | |
95 | 103 | FCategoriesFrame.OnCloseQuery(Sender, CanClose); |
96 | 104 | end; |
97 | 105 | |
98 | -procedure Tf_DenkzettelCompanion.FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState); | |
106 | +procedure Tf_DenkzettelCompanion.FirstConfig; | |
99 | 107 | begin |
108 | + FreeAndNil(FCategoriesFrame); | |
109 | + if not Tf_Settings.Execute(Self, FBasePath) then | |
110 | + Abort; | |
111 | + if not DirectoryExists(FBasePath) then begin | |
112 | + if not CreateDir(FBasePath) then | |
113 | + raise Exception.Create('Could not create directory.'); | |
114 | + end; | |
115 | + InitCategoryFrame; | |
116 | + b_Configure.Visible := False; | |
117 | + l_NotConfigured.Visible := False; | |
118 | +end; | |
119 | + | |
120 | +procedure Tf_DenkzettelCompanion.b_ConfigureClick(Sender: TObject); | |
121 | +begin | |
122 | + FirstConfig; | |
123 | +end; | |
124 | + | |
125 | +procedure Tf_DenkzettelCompanion.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | |
126 | +begin | |
100 | 127 | if not Assigned(FCategoriesFrame) then |
101 | 128 | Exit; //==> |
102 | 129 | if Key = VK_F10 then begin |
@@ -113,4 +140,17 @@ | ||
113 | 140 | end; |
114 | 141 | end; |
115 | 142 | |
143 | +procedure Tf_DenkzettelCompanion.InitCategoryFrame; | |
144 | +begin | |
145 | + FCategoriesFrame := Tfr_Categories.Create(Self); | |
146 | + FCategoriesFrame.Parent := Self; | |
147 | + FCategoriesFrame.Align := alClient; | |
148 | + FCategoriesFrame.Init(FBasePath); | |
149 | +end; | |
150 | + | |
151 | +procedure Tf_DenkzettelCompanion.WmConfig(var _msg: TMessage); | |
152 | +begin | |
153 | + FirstConfig; | |
154 | +end; | |
155 | + | |
116 | 156 | end. |
@@ -96,7 +96,7 @@ | ||
96 | 96 | |
97 | 97 | procedure Tfr_Categories.OnCloseQuery(_Sender: TObject; var _CanClose: boolean); |
98 | 98 | begin |
99 | - if not FNotesFrame.Visible then | |
99 | + if not Assigned(FNotesFrame) or not FNotesFrame.Visible then | |
100 | 100 | Exit; //==> |
101 | 101 | FNotesFrame.FormCloseQuery(_Sender, _CanClose); |
102 | 102 | end; |
@@ -155,7 +155,7 @@ | ||
155 | 155 | |
156 | 156 | procedure Tfr_Notes.FormCloseQuery(_Sender: TObject; var _CanClose: boolean); |
157 | 157 | begin |
158 | - if not FEditFrame.Visible then | |
158 | + if not Assigned(FEditFrame) or not FEditFrame.Visible then | |
159 | 159 | Exit; //==> |
160 | 160 | FEditFrame.FormCloseQuery(_Sender, _CanClose); |
161 | 161 | end; |