Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | daniel-mar | 1 | unit About; |
2 | |||
3 | interface |
||
4 | |||
5 | uses |
||
6 | Windows, Messages, SysUtils, Forms, StdCtrls, ExtCtrls, Inifiles, shellapi, |
||
7 | DCConst, Controls, Classes; |
||
8 | |||
9 | type |
||
10 | TAboutForm = class(TForm) |
||
11 | lbl_name: TLabel; |
||
12 | img_schloss: TImage; |
||
13 | lbl_version: TLabel; |
||
14 | lbl_leader: TLabel; |
||
15 | lbl_copyright: TLabel; |
||
16 | spe_leftshape: TShape; |
||
17 | gbx_lang: TGroupBox; |
||
18 | lbl_lang_value: TLabel; |
||
19 | lbl_translator_value: TLabel; |
||
20 | lbl_revision_value: TLabel; |
||
21 | btn_close: TButton; |
||
22 | lbl_url: TLabel; |
||
23 | lbl_lang_name: TLabel; |
||
24 | lbl_translator_name: TLabel; |
||
25 | lbl_revision_name: TLabel; |
||
26 | procedure form_create(Sender: TObject); |
||
27 | procedure btn_closeClick(Sender: TObject); |
||
28 | procedure lbl_urlClick(Sender: TObject); |
||
29 | private |
||
30 | LangArray, LangArraySig: array of TLanguageEntry; |
||
31 | function GetLangEntry(name: string): string; |
||
32 | function GetLangSig(name: string): string; |
||
33 | end; |
||
34 | |||
35 | var |
||
36 | AboutForm: TAboutForm; |
||
37 | |||
38 | implementation |
||
39 | |||
40 | {$R *.dfm} |
||
41 | |||
42 | function TAboutForm.GetLangEntry(name: string): string; |
||
43 | var |
||
44 | i: integer; |
||
45 | begin |
||
46 | for i := 0 to high(LangArray) do |
||
47 | begin |
||
48 | if LangArray[i].name = name then |
||
49 | begin |
||
50 | result := LangArray[i].text; |
||
51 | break; |
||
52 | end; |
||
53 | end; |
||
54 | end; |
||
55 | |||
56 | function TAboutForm.GetLangSig(name: string): string; |
||
57 | var |
||
58 | i: integer; |
||
59 | begin |
||
60 | for i := 0 to high(LangArraySig) do |
||
61 | begin |
||
62 | if LangArraySig[i].name = name then |
||
63 | begin |
||
64 | result := LangArraySig[i].text; |
||
65 | break; |
||
66 | end; |
||
67 | end; |
||
68 | end; |
||
69 | |||
70 | procedure TAboutForm.lbl_urlClick(Sender: TObject); |
||
71 | begin |
||
10 | daniel-mar | 72 | shellexecute(application.Handle, 'open', 'https://www.viathinksoft.de/', '', '', sw_normal); |
2 | daniel-mar | 73 | end; |
74 | |||
75 | procedure TAboutForm.btn_closeClick(Sender: TObject); |
||
76 | begin |
||
77 | close; |
||
78 | end; |
||
79 | |||
80 | procedure TAboutForm.form_create(Sender: TObject); |
||
81 | var |
||
82 | ini: TIniFile; |
||
83 | str: TStringList; |
||
84 | i: integer; |
||
85 | Y, M, D: Word; |
||
86 | begin |
||
87 | // Sprachdatei & Signatur auslesen |
||
88 | |||
89 | ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
||
90 | str := TStringList.Create(); |
||
91 | try |
||
92 | ini.ReadSection(Name, str); |
||
93 | for i := 0 to str.count-1 do |
||
94 | begin |
||
95 | setlength(LangArray, length(LangArray)+1); |
||
96 | LangArray[length(LangArray)-1].name := str.strings[i]; |
||
97 | LangArray[length(LangArray)-1].text := ini.ReadString(Name, str.strings[i], '?'); |
||
98 | LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
||
99 | end; |
||
100 | |||
101 | ini.ReadSection('Signature', str); |
||
102 | for i := 0 to str.count-1 do |
||
103 | begin |
||
104 | setlength(LangArraySig, length(LangArraySig)+1); |
||
105 | LangArraySig[length(LangArraySig)-1].name := str.strings[i]; |
||
106 | LangArraySig[length(LangArraySig)-1].text := ini.ReadString('Signature', str.strings[i], '?'); |
||
107 | LangArraySig[length(LangArraySig)-1].text := StringReplace(LangArraySig[length(LangArraySig)-1].text, '###', #13#10, [rfReplaceAll]); |
||
108 | end; |
||
109 | finally |
||
110 | ini.free; |
||
111 | str.Free; |
||
112 | end; |
||
113 | |||
114 | // Bilder |
||
115 | |||
116 | icon.LoadFromResourceID(hInstance, 104); |
||
117 | img_schloss.Picture.Bitmap.LoadFromResourceName(hInstance, 'SCHLOSS'); |
||
118 | |||
119 | // Texte |
||
120 | |||
121 | Caption := GetLangEntry('about'); |
||
122 | lbl_translator_value.Caption := GetLangSig('Translator'); |
||
123 | lbl_lang_value.Caption := GetLangSig('Language'); |
||
124 | lbl_revision_value.Caption := GetLangSig('Revision'); |
||
125 | gbx_lang.Caption := GetLangEntry('installedlang'); |
||
126 | lbl_leader.Caption := Format(GetLangEntry('leader'), ['Daniel Marschall']); |
||
127 | lbl_version.Caption := Format(GetLangEntry('version'), [DC4Ver]); |
||
128 | lbl_name.Caption := '(De)Coder'; |
||
129 | lbl_url.Caption := 'www.viathinksoft.de'; |
||
130 | DecodeDate(Now(), Y, M, D); |
||
131 | lbl_copyright.Caption := Format(GetLangEntry('copyright'), [2001, Y, 'ViaThinkSoft']); |
||
132 | lbl_lang_name.Caption := GetLangEntry('lang'); |
||
133 | lbl_translator_name.Caption := GetLangEntry('translator'); |
||
134 | lbl_revision_name.Caption := GetLangEntry('revision'); |
||
135 | btn_close.Caption := GetLangEntry('ok'); |
||
136 | |||
137 | // Horizontal |
||
138 | |||
139 | spe_leftshape.Width := img_schloss.Width + 16; |
||
140 | lbl_name.Left := spe_leftshape.Left + spe_leftshape.Width + 8; |
||
141 | lbl_url.left := lbl_name.left; |
||
142 | lbl_version.left := lbl_url.left; |
||
143 | lbl_leader.left := lbl_version.left; |
||
144 | lbl_copyright.left := lbl_leader.left; |
||
145 | gbx_lang.Left := lbl_copyright.left; |
||
146 | gbx_lang.Width := max_4(lbl_name.width, lbl_version.width, lbl_leader.width, lbl_copyright.width); |
||
147 | btn_close.Left := gbx_lang.left + gbx_lang.width - btn_close.width; |
||
148 | lbl_lang_value.Left := lbl_lang_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
||
149 | lbl_translator_value.left := lbl_translator_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
||
150 | lbl_revision_value.left := lbl_revision_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
||
151 | |||
152 | // Vertikal |
||
153 | |||
154 | spe_leftshape.Height := btn_close.Top + btn_close.Height + 8; |
||
155 | clientheight := spe_leftshape.top + spe_leftshape.Height; |
||
156 | clientwidth := btn_close.Left + btn_close.Width + 8; |
||
157 | end; |
||
158 | |||
159 | end. |