Skip to main navigation Zum Hauptinhalt springen Skip to page footer
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