source: Common/FormEx.pas

Last change on this file was 568, checked in by chronos, 4 months ago
  • Modified: Update Common package.
File size: 2.3 KB
Line 
1unit FormEx;
2
3interface
4
5uses
6 Classes, SysUtils, Forms, PersistentForm, Theme, Translator, ScaleDPI;
7
8type
9
10 { TFormEx }
11
12 TFormEx = class(TForm)
13 private
14 FCounter: Integer; static;
15 protected
16 procedure DoShow; override;
17 procedure DoCreate; override;
18 procedure DoClose(var CloseAction: TCloseAction); override;
19 procedure DoDestroy; override;
20 public
21 PersistentForm: TPersistentForm; static;
22 ThemeManager: TThemeManager; static;
23 Translator: TTranslator; static;
24 ScaleDPI: TScaleDPI; static;
25 OwnsPersistentForm: Boolean; static;
26 OwnsThemeManager: Boolean; static;
27 OwnsTranslator: Boolean; static;
28 OwnsScaleDPI: Boolean; static;
29 end;
30
31procedure Register;
32
33
34implementation
35
36procedure Register;
37begin
38 RegisterNoIcon([TFormEx]);
39end;
40
41{ TFormEx }
42
43procedure TFormEx.DoShow;
44begin
45 inherited;
46 PersistentForm.Load(Self);
47end;
48
49procedure TFormEx.DoCreate;
50begin
51 if not Assigned(PersistentForm) then begin
52 OwnsPersistentForm := True;
53 PersistentForm := TPersistentForm.Create(nil);
54 end;
55 if not Assigned(ThemeManager) then begin
56 OwnsThemeManager := True;
57 ThemeManager := TThemeManager.Create(nil);
58 end;
59 if not Assigned(Translator) then begin
60 Translator := TTranslator.Create(nil);
61 Translator.POFilesFolder := 'Languages';
62 Translator.Language := Translator.Languages.SearchByCode('');
63 OwnsTranslator := True;
64 end;
65 if not Assigned(ScaleDPI) then begin
66 OwnsScaleDPI := True;
67 ScaleDPI := TScaleDPI.Create(nil);
68 end;
69
70 PersistentForm.Load(Self);
71 Translator.TranslateComponentRecursive(Self);
72 ThemeManager.UseTheme(Self);
73 Inc(FCounter);
74 inherited;
75end;
76
77procedure TFormEx.DoClose(var CloseAction: TCloseAction);
78begin
79 PersistentForm.Save(Self);
80 inherited;
81end;
82
83procedure TFormEx.DoDestroy;
84begin
85 Dec(FCounter);
86 if FCounter <= 0 then begin
87 if OwnsPersistentForm then begin
88 FreeAndNil(PersistentForm);
89 OwnsPersistentForm := False;
90 end;
91 if OwnsThemeManager then begin
92 FreeAndNil(ThemeManager);
93 OwnsThemeManager := False;
94 end;
95 if OwnsTranslator then begin
96 FreeAndNil(Translator);
97 OwnsTranslator := False;
98 end;
99 if OwnsScaleDPI then begin
100 FreeAndNil(ScaleDPI);
101 OwnsScaleDPI := False;
102 end;
103 end;
104 inherited;
105end;
106
107end.
108
Note: See TracBrowser for help on using the repository browser.