pascal
1unit MainForm;
2
3{ DONE : Form information succesvol gedownload centreren op parent form }
4{ DONE : Form information succesvol geïmporteerd centreren op parent form }
5{ DONE : Assigning categaories centreren op parent form }
6{ DONE : Bug: na één keer Rabobank download wordt de verkeerde filename (oude) geïmporteerd, die er dan niet meer is natuurlijk. }
7interface
8
9uses
10 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, System.WideStrUtils,
11 System.DateUtils, System.UITypes, System.IOUtils, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
12 Vcl.ExtCtrls, DataModule, Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.GraphUtil, FlatDesignColorsFull, Vcl.Menus,
13 Vcl.WinXCtrls, Data.Win.ADODB, Vcl.DBCtrls, Vcl.DBCGrids, DetailForm, Vcl.ComCtrls, TL.Components, RaboBrowser;
14
15const
16 wm_AppStarted = wm_User + 101;
17
18type
19 TfrmMain = class(TLForm)
20 pnlButtons: TPanel;
21 btnDecYear: TButton;
22 btnIncYear: TButton;
23 btnShowSubCat: TButton;
24 lblYear: TLabel;
25 pnlMain: TPanel;
26 LDBGridCat: TLDBGrid;
27 LDBGridSubCat: TLDBGrid;
28 Splitter1: TSplitter;
29 MainMenu: TMainMenu;
30 Exit2: TMenuItem;
31 Import1: TMenuItem;
32 Import2: TMenuItem;
33 Categorien1: TMenuItem;
34 Categorien2: TMenuItem;
35 Budget1: TMenuItem;
36 AssigCategories1: TMenuItem;
37 Mutaties1: TMenuItem;
38 Aftrekpostenbelastingaangifte1: TMenuItem;
39 FileOpenDialog: TFileOpenDialog;
40 btnToonDetails: TButton;
41 StatusBar1: TStatusBar;
42 btnLeft: TButton;
43 btnRight: TButton;
44 pnlGrids: TPanel;
45 RaboBank1: TMenuItem;
46 btnShowBudgetPlan: TButton;
47 Help1: TMenuItem;
48 AboutFinAdm1: TMenuItem;
49 PrintDialog1: TPrintDialog;
50 PrinterSetupDialog1: TPrinterSetupDialog;
51 procedure btnShowSubCatClick(Sender: TObject);
52 procedure btnDecYearClick(Sender: TObject);
53 procedure btnIncYearClick(Sender: TObject);
54 procedure LDBGridCatDrawColumnCell(
55 Sender: TObject;
56 const Rect: TRect;
57 DataCol: Integer;
58 Column: TColumn;
59 State: TGridDrawState);
60 procedure FormCreate(Sender: TObject);
61 procedure LDBGridSubCatDrawColumnCell(
62 Sender: TObject;
63 const Rect: TRect;
64 DataCol: Integer;
65 Column: TColumn;
66 State: TGridDrawState);
67 procedure Splitter1Moved(Sender: TObject);
68 procedure Categorien1Click(Sender: TObject);
69 procedure Budget1Click(Sender: TObject);
70 procedure Import1Click(Sender: TObject);
71 procedure AssigCategories1Click(Sender: TObject);
72 procedure Mutaties1Click(Sender: TObject);
73 procedure Aftrekpostenbelastingaangifte1Click(Sender: TObject);
74 procedure btnToonDetailsClick(Sender: TObject);
75 procedure AssignCategories;
76 function Import(AFileName: string): boolean;
77 procedure btnLeftClick(Sender: TObject);
78 procedure btnRightClick(Sender: TObject);
79 procedure FormKeyDown(
80 Sender: TObject;
81 var Key: Word;
82 Shift: TShiftState);
83 procedure LDBGridCatKeyDown(
84 Sender: TObject;
85 var Key: Word;
86 Shift: TShiftState);
87 procedure LDBGridSubCatColEnter(Sender: TObject);
88 procedure RaboBank1Click(Sender: TObject);
89 procedure btnShowBudgetPlanClick(Sender: TObject);
90 procedure AboutFinAdm1Click(Sender: TObject);
91 private
92 ShowBudgetPlan: bool;
93 { Private declarations }
94 procedure Refresh(
95 DataSet: TDataSet;
96 Grid: TLDBGrid);
97 procedure wmAppStarted(var Msg: tMessage); message wm_AppStarted;
98 public
99 { Public declarations }
100 end;
101
102var
103 frmMain: TfrmMain;
104
105implementation
106
107{$R *.dfm}
108
109uses
110 BudgetForm, MutatiesForm, CategoriesForm, ReportForm, LoginForm, MessageForm, ProgressForm, AboutForm;
111
112function Locate(
113 DataSet: TDataSet;
114 FieldName: string;
115 FieldValue: variant): boolean;
116// var
117// BM: TBookmark;
118begin
119 Result:= False;
120 if DataSet.IsEmpty then
121 Exit;
122 // BM := DataSet.Bookmark;
123 DataSet.DisableControls;
124 try
125 DataSet.First;
126 while not DataSet.eof do
127 begin
128 if LowerCase(DataSet.FieldByname(FieldName).Value) = LowerCase(FieldValue) then
129 begin
130 Result:= True;
131 Break;
132 end;
133 DataSet.Next;
134 end;
135 // if not Result then DataSet.Bookmark := BM;
136 finally
137 DataSet.EnableControls;
138 end;
139end;
140
141function TfrmMain.Import(AFileName: string): boolean;
142var
143 FileNameFull, FileName: string;
144 ImportPath: string;
145
146const
147 SQLcommand: string =
148 'LOAD DATA LOCAL INFILE ''FileName.csv'' INTO TABLE Mutaties ' +
149 'FIELDS TERMINATED BY '','' ENCLOSED BY ''"'' ESCAPED BY '''' ' +
150 'LINES TERMINATED BY ''\r\n'' IGNORE 1 ROWS ' +
151 ' (`IBAN_BBAN`, `Munt`, `BIC`, `Volgnr`, `Datum`, `Rentedatum`, @var1, @var2, `Tegenrekening_IBAN_BBAN`, ' +
152 ' `Naam_tegenpartij`, `Naam_uiteindelijke_partij`, `Naam_initierende_partij`, `BIC_tegenpartij`, `CODE`, ' +
153 ' `Batch_ID`, `Transactiereferentie`, `Machtigingskenmerk`, `Incassant_ID`, `Betalingskenmerk`, ' +
154 ' `Omschrijving_1`, `Omschrijving_2`, `Omschrijving_3`, `Reden_retour`, @var3, `Oorspr_munt`, @var4) ' +
155 'SET ' +
156 ' `Bedrag` = CONVERT(REPLACE(@var1,'','', ''.''), DECIMAL(20,2)), ' +
157 ' `Saldo_na_trn` = CONVERT(REPLACE(@var2,'','', ''.''), DECIMAL(20,2)), ' +
158 ' `Oorspr_bedrag` = CONVERT(REPLACE(IF(@var3='''',''0'',@var3),'','', ''.''), DECIMAL(20,2)), ' +
159 ' `Koers` = CONVERT(REPLACE(IF(@var4='''',''0'',@var4),'','', ''.''), DECIMAL(20,2)); ';
160
161begin
162 Result:= False;
163 if AFileName = '' then
164 begin
165 FileOpenDialog.DefaultFolder:= Folder.DownLoads;
166 if FileOpenDialog.Execute then
167 begin
168 FileNameFull:= FileOpenDialog.FileName;
169 FileName:= ExtractFileName(FileNameFull);
170 end
171 else
172 Exit;
173 end
174 else
175 begin
176 FileNameFull:= AFileName;
177 FileName:= ExtractFileName(FileNameFull);
178 end;
179
180 // Creates a new directory, including the creation of parent directories as needed
181 ImportPath:= Folder.ProgramData + '\Langstraat\FinAdm\Import\';
182 if not System.SysUtils.ForceDirectories(ImportPath) then
183 raise Exception.Create(ImportPath);
184
185 // Refresh
186 dm.DataSetImportHistory.Close;
187 dm.DataSetImportHistory.Open;
188
189 if not Locate(dm.DataSetImportHistory, 'FileName', FileName) then
190 begin
191 dm.CommandImport.CommandText:= SQLcommand;
192 dm.DataSetImportHistory.AppendRecord([nil, nil, nil, ExtractFileName(FileName)]);
193 dm.CommandImport.CommandText:= WideStringReplace(
194 dm.CommandImport.CommandText,
195 'filename.csv',
196 FileNameFull.Replace('\', '/'),
197 [rfReplaceAll, rfIgnoreCase]);
198 dm.CommandImport.Execute;
199
200 TFile.Move(
201 FileNameFull,
202 ImportPath + FileName);
203
204 frmMessage.Execute(
205 'Information',
206 'Het bestand: ' + FileName + ' is succesvol geïmporteerd!');
207
208 Result:= True;
209 end
210 else
211 frmMessage.Execute(
212 'Information',
213 'Het bestand: ' + FileName + ' is al geïmporteerd!');
214end;
215
216procedure TfrmMain.Import1Click(Sender: TObject);
217begin
218 if Self.Import('') then
219 begin
220 Self.AssignCategories;
221
222 // Refresh
223 frmMutaties.GridMutaties.DataSource.DataSet.Close;
224 frmMutaties.GridMutaties.DataSource.DataSet.Open;
225 frmMutaties.ToggleSwitchNotAssigned.State:= tssOn;
226 frmMutaties.ShowModal;
227
228 // Refresh
229 Refresh(
230 dm.DataSetReportCat,
231 Self.LDBGridCat);
232 Refresh(
233 dm.DataSetReportSubCat,
234 Self.LDBGridSubCat);
235 end;
236end;
237
238procedure TfrmMain.RaboBank1Click(Sender: TObject);
239begin
240 frmRaboBrowser:= TfrmRaboBrowser.Create(Self);
241 try
242 frmRaboBrowser.LoadConfig;
243 frmRaboBrowser.ShowModal;
244 frmRaboBrowser.SaveConfig;
245 if frmRaboBrowser.FResultFilePath <> '' then
246 if Import(frmRaboBrowser.FResultFilePath) then
247 begin
248
249 Self.AssignCategories;
250
251 // Refresh
252 frmMutaties.GridMutaties.DataSource.DataSet.Close;
253 frmMutaties.GridMutaties.DataSource.DataSet.Open;
254 frmMutaties.ToggleSwitchNotAssigned.State:= tssOn;
255 frmMutaties.ShowModal;
256
257 // Refresh
258 Refresh(
259 dm.DataSetReportCat,
260 Self.LDBGridCat);
261 Refresh(
262 dm.DataSetReportSubCat,
263 Self.LDBGridSubCat);
264 end;
265
266 finally
267 frmRaboBrowser.Free;
268 end;
269end;
270
271procedure TfrmMain.Refresh(
272 DataSet: TDataSet;
273 Grid: TLDBGrid);
274begin
275 DataSet.Active:= False;
276 DataSet.Active:= True;
277 Grid.SetColumnAttr;
278 Self.LDBGridSubCat.Columns[0].Width:= Self.LDBGridCat.Columns[0].Width;
279end;
280
281procedure TfrmMain.Splitter1Moved(Sender: TObject);
282begin
283 Self.RegVars.Values['SubCatHeigth']:= IntToStr(Self.LDBGridSubCat.Height);
284end;
285
286procedure TfrmMain.AboutFinAdm1Click(Sender: TObject);
287begin
288 frmAbout.Execute;
289end;
290
291procedure TfrmMain.Aftrekpostenbelastingaangifte1Click(Sender: TObject);
292begin
293 dm.DataSetReport.Parameters.ParamByName('BelastingJaar').Value:= lblYear.Caption;
294
295 dm.DatasetReport.Active:= True;
296
297 frmReport.RLReportAftrekpostenIB.Preview(nil);
298 dm.DatasetReport.Active:= False
299end;
300
301procedure TfrmMain.AssignCategories;
302var
303 Splitted: TArray<string>;
304 i: Integer;
305var
306 AdoQuery: TADOQuery;
307 S: string;
308 ADOCommand: TADOCommand;
309 RecCount: Integer;
310begin
311 AdoQuery:= TADOQuery.Create(nil);
312 try
313 AdoQuery.Connection:= dm.Connection;
314 AdoQuery.SQL.Add('SELECT * FROM AutoAssignCategorie');
315 AdoQuery.Open;
316
317 frmProgress.Show;
318 RecCount:= 0;
319 while not AdoQuery.eof do
320 begin
321 Inc(RecCount);
322 frmProgress.ProgressBar.Position:= Round(RecCount / (AdoQuery.RecordCount) * 100);
323 Application.ProcessMessages;
324 S:= AdoQuery.FieldByname('Zoekstring').AsString;
325 Splitted:= S.Split([';']);
326 for i:= 0 to Length(Splitted) - 1 do
327 begin
328 ADOCommand:= TADOCommand.Create(nil);
329 try
330 ADOCommand.Connection:= dm.Connection;
331 ADOCommand.Parameters.Clear;
332 ADOCommand.CommandText:=
333 'UPDATE Mutaties SET Categorie=:Cat, Subcategorie=:Subcat WHERE `Categorie` = 0 AND (`Naam_tegenpartij` LIKE :Zoekstr1 OR `Omschrijving_1` LIKE :Zoekstr2)';
334 ADOCommand.ParamCheck:= False;
335 ADOCommand.Parameters.ParamByName('Cat').Value:= AdoQuery.FieldByname('CategorieID').AsString;
336 ADOCommand.Parameters.ParamByName('Subcat').Value:= AdoQuery.FieldByname('SubcategorieID').AsString;
337 ADOCommand.Parameters.ParamByName('Zoekstr1').Value:= Splitted[i];
338 ADOCommand.Parameters.ParamByName('Zoekstr2').Value:= Splitted[i];
339 ADOCommand.Execute;
340 finally
341 ADOCommand.Free;
342 end;
343 end;
344 AdoQuery.Next;
345 end;
346 finally
347 AdoQuery.Free;
348 frmProgress.hide;
349 end;
350 frmMutaties.GridMutaties.DataSource.DataSet.Close;
351 frmMutaties.GridMutaties.DataSource.DataSet.Open;
352end;
353
354procedure TfrmMain.AssigCategories1Click(Sender: TObject);
355begin
356 AssignCategories;
357 frmMutaties.ShowModal;
358end;
359
360procedure TfrmMain.btnDecYearClick(Sender: TObject);
361var
362 Jaar: Integer;
363begin
364 Jaar:= dm.DataSetReportCat.Parameters.ParamByName('Jaar').Value;
365 Dec(Jaar);
366 Self.lblYear.Caption:= Jaar.ToString;
367 Self.RegVars.Values['CurrentYear']:= Jaar.ToString;
368
369 for var i:= 0 to dm.DataSetReportCat.Parameters.Count - 1 do
370 begin
371 if dm.DataSetReportCat.Parameters[i].Name = 'Jaar' then
372 dm.DataSetReportCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
373 if dm.DataSetReportCat.Parameters[i].Name = 'CatInkomsten' then
374 dm.DataSetReportCat.Parameters[i].Value:= 16;
375 end;
376 Refresh(
377 dm.DataSetReportCat,
378 LDBGridCat);
379
380 for var i:= 0 to dm.DataSetReportSubCat.Parameters.Count - 1 do
381 begin
382 if dm.DataSetReportSubCat.Parameters[i].Name = 'Jaar' then
383 dm.DataSetReportSubCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
384 if dm.DataSetReportSubCat.Parameters[i].Name = 'Cat' then
385 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('ID').AsInteger;
386 if dm.DataSetReportSubCat.Parameters[i].Name = 'VasteKosten' then
387 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('VK').AsInteger;
388 end;
389 Refresh(
390 dm.DataSetReportSubCat,
391 LDBGridSubCat);
392end;
393
394procedure TfrmMain.btnIncYearClick(Sender: TObject);
395var
396 Jaar: Integer;
397begin
398 Jaar:= dm.DataSetReportCat.Parameters.ParamByName('Jaar').Value;
399 Inc(Jaar);
400 Self.lblYear.Caption:= Jaar.ToString;
401 Self.RegVars.Values['CurrentYear']:= Jaar.ToString;
402
403 for var i:= 0 to dm.DataSetReportCat.Parameters.Count - 1 do
404 begin
405 if dm.DataSetReportCat.Parameters[i].Name = 'Jaar' then
406 dm.DataSetReportCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
407 if dm.DataSetReportCat.Parameters[i].Name = 'CatInkomsten' then
408 dm.DataSetReportCat.Parameters[i].Value:= 16;
409 end;
410 Refresh(
411 dm.DataSetReportCat,
412 LDBGridCat);
413
414 for var i:= 0 to dm.DataSetReportSubCat.Parameters.Count - 1 do
415 begin
416 if dm.DataSetReportSubCat.Parameters[i].Name = 'Jaar' then
417 dm.DataSetReportSubCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
418 if dm.DataSetReportSubCat.Parameters[i].Name = 'Cat' then
419 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('ID').AsInteger;
420 if dm.DataSetReportSubCat.Parameters[i].Name = 'VasteKosten' then
421 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('VK').AsInteger;
422 end;
423 Refresh(
424 dm.DataSetReportSubCat,
425 LDBGridSubCat);
426end;
427
428procedure TfrmMain.btnLeftClick(Sender: TObject);
429begin
430 // Shift left
431 for var i:= 1 to Self.LDBGridCat.Columns.Count - 2 do
432 Self.LDBGridCat.Columns[i].Visible:= Self.LDBGridCat.Columns[i + 1].Visible;
433 Self.LDBGridCat.Columns[Self.LDBGridCat.Columns.Count - 1].Visible:= True;
434 // Sync SubCatGrid
435 for var i:= 1 to Self.LDBGridCat.Columns.Count - 1 do
436 Self.LDBGridSubCat.Columns[i].Visible:= Self.LDBGridCat.Columns[i].Visible;
437end;
438
439procedure TfrmMain.btnRightClick(Sender: TObject);
440begin
441 // Shift Right
442 for var i:= Self.LDBGridCat.Columns.Count - 1 downto 2 do
443 Self.LDBGridCat.Columns[i].Visible:= Self.LDBGridCat.Columns[i - 1].Visible;
444 Self.LDBGridCat.Columns[1].Visible:= False;
445 // Sync SubCatGrid
446 for var i:= 1 to Self.LDBGridCat.Columns.Count - 1 do
447 Self.LDBGridSubCat.Columns[i].Visible:= Self.LDBGridCat.Columns[i].Visible;
448end;
449
450procedure TfrmMain.btnShowSubCatClick(Sender: TObject);
451begin
452 if Self.LDBGridSubCat.Height = 0 then
453 Self.LDBGridSubCat.Height:= 300;
454
455 Self.LDBGridSubCat.Visible:= Self.LDBGridSubCat.Visible xor True;
456 Self.btnToonDetails.Visible:= Self.LDBGridSubCat.Visible;
457 Self.Splitter1.Visible:= Self.LDBGridSubCat.Visible;
458 if Self.LDBGridSubCat.Visible then
459 Self.btnShowSubCat.Caption:= 'Verberg Subcategoriën'
460 else
461 Self.btnShowSubCat.Caption:= 'Toon Subcategoriën';
462 Self.RegVars.Values['SubCatVisible']:= BoolToStr(Self.LDBGridSubCat.Visible);
463end;
464
465procedure TfrmMain.Budget1Click(Sender: TObject);
466begin
467 frmBudget.ShowModal
468end;
469
470procedure TfrmMain.btnShowBudgetPlanClick(Sender: TObject);
471begin
472 if ShowBudgetPlan then
473 begin
474 Self.btnLeft.Visible:= True;
475 Self.btnRight.Visible:= True;
476 for var i:= 0 to Self.LDBGridCat.Columns.Count - 1 do
477 begin
478 if Self.LDBGridCat.Columns[i].Title.Caption[1] = 'P' then
479 Self.LDBGridCat.Columns[i].Visible:= True;
480 if Self.LDBGridSubCat.Columns[i].Title.Caption[1] = 'P' then
481 Self.LDBGridSubCat.Columns[i].Visible:= True;
482 end;
483 Self.btnShowBudgetPlan.Caption:= 'Verberg budgetplan';
484 end
485 else
486 begin
487 Self.btnLeft.Visible:= False;
488 Self.btnRight.Visible:= False;
489 for var i:= 0 to Self.LDBGridCat.Columns.Count - 1 do
490 begin
491 if Self.LDBGridCat.Columns[i].Title.Caption[1] = 'P' then
492 Self.LDBGridCat.Columns[i].Visible:= False;
493 if Self.LDBGridSubCat.Columns[i].Title.Caption[1] = 'P' then
494 Self.LDBGridSubCat.Columns[i].Visible:= False;
495 end;
496 Self.btnShowBudgetPlan.Caption:= 'Toon budgetplan';
497 end;
498 ShowBudgetPlan:= ShowBudgetPlan xor True;
499 Self.RegVars.Values['ShowBudgetPlan']:= BoolToStr(ShowBudgetPlan);
500 frmMain.SaveConfig;
501end;
502
503procedure TfrmMain.btnToonDetailsClick(Sender: TObject);
504begin
505 if frmDetail.Visible then
506 begin
507 btnToonDetails.Caption:= 'Toon details';
508 frmDetail.Close;
509 end
510 else
511 begin
512 btnToonDetails.Caption:= 'Verberg details';
513 frmDetail.Show;
514 end;
515end;
516
517procedure TfrmMain.Categorien1Click(Sender: TObject);
518begin
519 frmCategories.Show;
520end;
521
522procedure TfrmMain.wmAppStarted(var Msg: tMessage);
523begin
524 for var i:= 0 to dm.DataSetReportCat.Parameters.Count - 1 do
525 begin
526 if dm.DataSetReportCat.Parameters[i].Name = 'Jaar' then
527 dm.DataSetReportCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
528 if dm.DataSetReportCat.Parameters[i].Name = 'CatInkomsten' then
529 dm.DataSetReportCat.Parameters[i].Value:= 16;
530
531 if dm.DataSetReportCat.Parameters[i].Name = 'BetaalRekening' then
532 dm.DataSetReportCat.Parameters[i].Value:= Self.RegVars.Values['BetaalRekening'];
533 if dm.DataSetReportCat.Parameters[i].Name = 'SpaarRekening' then
534 dm.DataSetReportCat.Parameters[i].Value:= Self.RegVars.Values['SpaarRekening'];
535
536 end;
537
538 dm.DataSetReportCat.Active:= False;
539 dm.DataSetReportCat.Active:= True;
540 Self.LDBGridCat.SetColumnAttr;
541
542 for var i:= 0 to dm.DataSetReportSubCat.Parameters.Count - 1 do
543 begin
544 if dm.DataSetReportSubCat.Parameters[i].Name = 'Jaar' then
545 dm.DataSetReportSubCat.Parameters[i].Value:= Self.RegVars.Values['CurrentYear'];
546 if dm.DataSetReportSubCat.Parameters[i].Name = 'Cat' then
547 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('ID').AsInteger;
548 if dm.DataSetReportSubCat.Parameters[i].Name = 'VasteKosten' then
549 dm.DataSetReportSubCat.Parameters[i].Value:= dm.DataSetReportCat.FieldByname('VK').AsInteger;
550
551 if dm.DataSetReportSubCat.Parameters[i].Name = 'BetaalRekening' then
552 dm.DataSetReportSubCat.Parameters[i].Value:= Self.RegVars.Values['BetaalRekening'];
553 if dm.DataSetReportSubCat.Parameters[i].Name = 'SpaarRekening' then
554 dm.DataSetReportSubCat.Parameters[i].Value:= Self.RegVars.Values['SpaarRekening'];
555
556 end;
557
558 dm.DataSetReportSubCat.Active:= False;
559 dm.DataSetReportSubCat.Active:= True;
560 Self.LDBGridSubCat.SetColumnAttr;
561
562 Self.lblYear.Caption:= Self.RegVars.Values['CurrentYear'];
563 dm.DataSetBudgetJaar.Locate(
564 'Jaar',
565 Self.RegVars.Values['CurrentBudgetYear'],
566 []);
567
568 Self.LDBGridSubCat.Columns[0].Width:= Self.LDBGridCat.Columns[0].Width;
569 Self.LDBGridCat.repaint;
570
571 frmCategories.GridCategories.SetColumnAttr;
572
573 frmCategories.GridSubcategories.SetColumnAttr;
574 frmBudget.initGrids;
575 Self.btnShowBudgetPlanClick(Self);
576 Self.pnlMain.Visible:= True;
577end;
578
579procedure TfrmMain.FormCreate(Sender: TObject);
580begin
581 Self.StatusBar1.Panels[1].Text:= PixelsPerInch.ToString;
582 Self.StatusBar1.Panels[3].Text:= Screen.Width.ToString;
583 Self.StatusBar1.Panels[5].Text:= Screen.Height.ToString;
584 Self.StatusBar1.Panels[7].Text:= (PixelsPerInch * 100 / 96).ToString + '%';
585
586 Self.RegVars.Values['CurrentYear']:= IntToStr(CurrentYear);
587 Self.RegVars.Values['SubCatVisible']:= BoolToStr(Self.LDBGridSubCat.Visible);
588 Self.RegVars.Values['SubCatHeigth']:= IntToStr(Self.LDBGridSubCat.Height);
589 Self.RegVars.Values['CurrentBudgetYear']:= IntToStr(CurrentYear);
590 Self.RegVars.Values['ShowBudgetPlan']:= BoolToStr(False);
591 Self.RegVars.Values['BetaalRekening']:= 'NL83RABO0146805151';
592 Self.RegVars.Values['SpaarRekening']:= 'NL65RABO3582228673';
593
594 Self.LoadConfig;
595
596 if StrToBool(Self.RegVars.Values['ShowBudgetPlan']) then
597 ShowBudgetPlan:= True
598 else
599 ShowBudgetPlan:= False;
600 Self.btnShowBudgetPlanClick(Self);
601
602 if StrToBool(Self.RegVars.Values['SubCatVisible']) then
603 begin
604 Self.LDBGridSubCat.Height:= StrToInt(Self.RegVars.Values['SubCatHeigth']);
605 if Self.LDBGridSubCat.Height = 0 then
606 Self.LDBGridSubCat.Height:= 300;
607 Self.LDBGridSubCat.Visible:= True;
608 Self.Splitter1.Visible:= True;
609 end
610 else
611 begin
612 Self.LDBGridSubCat.Visible:= False;
613 Self.Splitter1.Visible:= False;
614 repaint;
615 Application.ProcessMessages;
616 end;
617 if Self.LDBGridSubCat.Visible then
618 Self.btnShowSubCat.Caption:= 'Verberg Subcategoriën'
619 else
620 Self.btnShowSubCat.Caption:= 'Toon Subcategoriën';
621 Self.btnToonDetails.Visible:= Self.LDBGridSubCat.Visible;
622
623 frmMain.Caption:= 'Financiële Administratie - ' + TL.Components.Folder.AppVersion;
624 PostMessage(
625 handle,
626 wm_AppStarted,
627 0,
628 0);
629end;
630
631procedure TfrmMain.FormKeyDown(
632 Sender: TObject;
633 var Key: Word;
634 Shift: TShiftState);
635begin
636 case Key of
637 VK_DOWN:
638 ;
639 VK_UP:
640 ;
641 VK_RIGHT:
642 begin
643 btnRightClick(Self);
644 Key:= 0;
645 end;
646 VK_LEFT:
647 begin
648 btnLeftClick(Self);
649 Key:= 0;
650 end;
651 end;
652end;
653
654procedure TfrmMain.LDBGridCatDrawColumnCell(
655 Sender: TObject;
656 const Rect: TRect;
657 DataCol: Integer;
658 Column: TColumn;
659 State: TGridDrawState);
660var
661 Grid: TLDBGrid;
662begin
663 // Locale variables for coding convinience ;)
664 Grid:= (Sender as TLDBGrid);
665 Grid.SetStyle(
666 DataCol,
667 Grid,
668 Column,
669 State,
670 Grid.DataSource.DataSet.FieldByname('SoortID').AsInteger,
671 Grid.DataSource.DataSet.FieldByname('ID').AsInteger);
672end;
673
674procedure TfrmMain.LDBGridCatKeyDown(
675 Sender: TObject;
676 var Key: Word;
677 Shift: TShiftState);
678begin
679 case Key of
680 VK_DOWN:
681 ;
682 VK_UP:
683 ;
684 VK_RIGHT:
685 btnRightClick(Self);
686 VK_LEFT:
687 btnLeftClick(Self);
688 end;
689end;
690
691procedure TfrmMain.LDBGridSubCatColEnter(Sender: TObject);
692begin
693 var
694 Field:= Self.LDBGridSubCat.SelectedField;
695 var
696 name:= Field.FieldName;
697 if (name[1] = 'A') and (CharInSet(name[2], ['1' .. '9'])) then
698 begin
699 frmDetail.Maand:= name.Remove(0, 1).ToInteger;
700 frmDetail.Jaar:= Self.RegVars.Values['CurrentYear'].ToInteger;
701 frmDetail.Cat:= dm.DataSetReportSubCat.FindField('ID').AsInteger;
702 frmDetail.SubCat:= dm.DataSetReportSubCat.FindField('SubID').AsInteger;
703 frmDetail.Refresh;
704 end
705 else
706 begin
707 dm.DataSetReportDetail.Close;
708 frmDetail.Caption:= ' Mutaties';
709 end;
710end;
711
712procedure TfrmMain.LDBGridSubCatDrawColumnCell(
713 Sender: TObject;
714 const Rect: TRect;
715 DataCol: Integer;
716 Column: TColumn;
717 State: TGridDrawState);
718var
719 Grid: TLDBGrid;
720begin
721 // Create some local variables to write more readable code
722 Grid:= (Sender as TLDBGrid);
723 Grid.SetStyle(
724 DataCol,
725 Grid,
726 Column,
727 State,
728 Grid.DataSource.DataSet.FieldByname('SoortID').AsInteger,
729 Grid.DataSource.DataSet.FieldByname('ID').AsInteger);
730end;
731
732procedure TfrmMain.Mutaties1Click(Sender: TObject);
733begin
734 frmMutaties.Show;
735 // ververs de datasets, er kunnen categorien toegewezen zijn in frmMutaties.
736 Refresh(
737 dm.DataSetReportCat,
738 Self.LDBGridCat);
739 Refresh(
740 dm.DataSetReportSubCat,
741 Self.LDBGridSubCat);
742end;
743
744end.
745