root / UFLicense.pas
Historique | Voir | Annoter | Télécharger (15,905 ko)
1 |
unit UFLicense;
|
---|---|
2 |
|
3 |
interface
|
4 |
|
5 |
uses
|
6 |
Windows, Forms, Classes, Controls, Messages, StdCtrls, Buttons, ExtCtrls, |
7 |
ComCtrls, PBNumEdit, IdBaseComponent, IdComponent, IdTCPConnection, |
8 |
IdTCPClient, IdHTTP, Dialogs, WinInet, IdIOHandler, IdIOHandlerSocket, |
9 |
IdIOHandlerStack, IdSSL, IdSSLOpenSSL; |
10 |
|
11 |
type
|
12 |
TFLicense = class(TForm)
|
13 |
LLastName: TLabel; |
14 |
LCompany: TLabel; |
15 |
ELastName: TEdit; |
16 |
ECompany: TEdit; |
17 |
LFirstName: TLabel; |
18 |
EFirstName: TEdit; |
19 |
LMail: TLabel; |
20 |
EMail: TEdit; |
21 |
RBEvaluation: TRadioButton; |
22 |
RBEducation: TRadioButton; |
23 |
RBComplete: TRadioButton; |
24 |
GBLicenseType: TGroupBox; |
25 |
GBAddress: TGroupBox; |
26 |
EAddress1: TEdit; |
27 |
EAddress2: TEdit; |
28 |
EPostalCode: TEdit; |
29 |
LPostalCode: TLabel; |
30 |
ECity: TEdit; |
31 |
LCity: TLabel; |
32 |
ECountry: TEdit; |
33 |
LCountry: TLabel; |
34 |
LFax: TLabel; |
35 |
EFax: TEdit; |
36 |
LPhone: TLabel; |
37 |
EPhone: TEdit; |
38 |
PLicense: TPanel; |
39 |
BBOk: TBitBtn; |
40 |
BBCancel: TBitBtn; |
41 |
PInfo: TPanel; |
42 |
LOrganisation: TLabel; |
43 |
LLicenseNumber: TLabel; |
44 |
PBLicenseNumber: TPBNumEdit; |
45 |
PComplete: TPanel; |
46 |
PEducation: TPanel; |
47 |
LCourse: TLabel; |
48 |
ECourse: TEdit; |
49 |
REHelp: TRichEdit; |
50 |
BBHelp: TBitBtn; |
51 |
GBExport: TGroupBox; |
52 |
GBImport: TGroupBox; |
53 |
BBAutomatic: TBitBtn; |
54 |
BBImport: TBitBtn; |
55 |
SaveDialogLicFile: TSaveDialog; |
56 |
OpenDialogLicFile: TOpenDialog; |
57 |
IdHTTPLicense: TIdHTTP; |
58 |
BBManual: TBitBtn; |
59 |
IdSSL: TIdSSLIOHandlerSocketOpenSSL; |
60 |
procedure FormShow(Sender: TObject);
|
61 |
procedure FormCreate(Sender: TObject);
|
62 |
procedure RBLicenseTypeClick(Sender: TObject);
|
63 |
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
64 |
procedure BBHelpClick(Sender: TObject);
|
65 |
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; |
66 |
procedure BBAutomaticClick(Sender: TObject);
|
67 |
procedure BBImportClick(Sender: TObject);
|
68 |
procedure ECourseChange(Sender: TObject);
|
69 |
procedure PBLicenseNumberChange(Sender: TObject);
|
70 |
procedure EFirstNameChange(Sender: TObject);
|
71 |
procedure ELastNameChange(Sender: TObject);
|
72 |
procedure ECompanyChange(Sender: TObject);
|
73 |
procedure EAddress1Change(Sender: TObject);
|
74 |
procedure EAddress2Change(Sender: TObject);
|
75 |
procedure EPostalCodeChange(Sender: TObject);
|
76 |
procedure ECityChange(Sender: TObject);
|
77 |
procedure ECountryChange(Sender: TObject);
|
78 |
procedure EPhoneChange(Sender: TObject);
|
79 |
procedure EFaxChange(Sender: TObject);
|
80 |
procedure EMailChange(Sender: TObject);
|
81 |
procedure BBManualClick(Sender: TObject);
|
82 |
private
|
83 |
{ Private declarations }
|
84 |
procedure DisplayLicense;
|
85 |
function LicenseIsValid: Boolean;
|
86 |
public
|
87 |
{ Public declarations }
|
88 |
end;
|
89 |
|
90 |
var
|
91 |
FLicense: TFLicense; |
92 |
|
93 |
implementation
|
94 |
|
95 |
uses
|
96 |
ShellAPI, SHFolder, ShlObj, SysUtils, gnugettext, UVariables, UInit, UStrings, |
97 |
UUtil, UFIntro; |
98 |
|
99 |
{$R *.dfm}
|
100 |
|
101 |
procedure TFLicense.FormCreate(Sender: TObject);
|
102 |
begin
|
103 |
if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1 |
104 |
then
|
105 |
Font.Name := 'Arial Unicode MS';
|
106 |
TranslateComponent(Self); |
107 |
Constraints.MinWidth := 816 + (Width - ClientWidth);
|
108 |
Width := Constraints.MinWidth; |
109 |
Constraints.MinHeight := 568 + (Height - ClientHeight);
|
110 |
Height := Constraints.MinHeight; |
111 |
end;
|
112 |
|
113 |
procedure TFLicense.FormShow(Sender: TObject);
|
114 |
begin
|
115 |
{
|
116 |
ResName := UpperCase('License');
|
117 |
Stream := TResourceStream.Create(ResInstance, ResName, 'TEXT');
|
118 |
try
|
119 |
REHelp.Lines.LoadFromStream(Stream);
|
120 |
finally
|
121 |
Stream.Free;
|
122 |
end;
|
123 |
}
|
124 |
REHelp.Lines.Add(MsgLicense); |
125 |
DisplayLicense; |
126 |
end;
|
127 |
|
128 |
procedure TFLicense.FormClose(Sender: TObject; var Action: TCloseAction); |
129 |
var
|
130 |
s: String;
|
131 |
Ok: Boolean; |
132 |
begin
|
133 |
if ModalResult = mrCancel
|
134 |
then
|
135 |
begin
|
136 |
LoadLicense; |
137 |
Exit; |
138 |
end;
|
139 |
if not LicenseIsValid |
140 |
then
|
141 |
begin
|
142 |
Action := caNone; |
143 |
Exit; |
144 |
end;
|
145 |
case LicenseType of |
146 |
1: s := 'AcceptEducation'; |
147 |
2: s := 'AcceptComplete'; |
148 |
else s := 'AcceptEvaluation'; |
149 |
end;
|
150 |
if not BdRReadBoolean('\Software\InraPorc', s, False) |
151 |
then
|
152 |
begin
|
153 |
FIntro := TFIntro.Create(Self); |
154 |
Ok := FIntro.ShowModal = mrOk; |
155 |
FIntro.Release; |
156 |
if Ok
|
157 |
then // Accepter |
158 |
BdRWriteBoolean('\Software\InraPorc', s, True)
|
159 |
else // Refuser |
160 |
begin
|
161 |
Action := caNone; |
162 |
Exit; |
163 |
end;
|
164 |
end;
|
165 |
SaveLicense; |
166 |
if (RBComplete.Checked and not IsComplete) |
167 |
or (RBEducation.Checked and not IsEducation) |
168 |
then // Licence incorrecte |
169 |
MessageDlg (MsgInvalidLicense + sLineBreak + MsgReadOnly, mtWarning, [mbOk], 0)
|
170 |
else
|
171 |
if (RBEvaluation.Checked or RBEducation.Checked) and TooMuchRecords |
172 |
then // Trop d'enregistrements |
173 |
MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
|
174 |
end;
|
175 |
|
176 |
procedure TFLicense.RBLicenseTypeClick(Sender: TObject);
|
177 |
begin
|
178 |
if RBComplete.Checked
|
179 |
then // Compl?te |
180 |
LicenseType := 2
|
181 |
else
|
182 |
if RBEducation.Checked
|
183 |
then // Education |
184 |
LicenseType := 1
|
185 |
else // Evaluation |
186 |
LicenseType := 0;
|
187 |
// PEducation.Visible := RBEducation.Checked;
|
188 |
LCourse.Enabled := RBEducation.Checked; |
189 |
ECourse.Enabled := RBEducation.Checked; |
190 |
// PComplete.Visible := RBComplete.Checked;
|
191 |
LLicenseNumber.Enabled := RBComplete.Checked; |
192 |
PBLicenseNumber.Enabled := RBComplete.Checked; |
193 |
PInfo.Enabled := RBComplete.Checked or RBEducation.Checked;
|
194 |
EFirstName.Enabled := PInfo.Enabled; |
195 |
ELastName.Enabled := PInfo.Enabled; |
196 |
LOrganisation.Visible := RBEducation.Checked; |
197 |
LCompany.Visible := not LOrganisation.Visible;
|
198 |
ECompany.Enabled := PInfo.Enabled; |
199 |
EAddress1.Enabled := PInfo.Enabled; |
200 |
EAddress2.Enabled := PInfo.Enabled; |
201 |
EPostalCode.Enabled := PInfo.Enabled; |
202 |
ECity.Enabled := PInfo.Enabled; |
203 |
ECountry.Enabled := PInfo.Enabled; |
204 |
EPhone.Enabled := PInfo.Enabled; |
205 |
EFax.Enabled := PInfo.Enabled; |
206 |
EMail.Enabled := PInfo.Enabled; |
207 |
GBExport.Enabled := PInfo.Enabled; |
208 |
end;
|
209 |
|
210 |
procedure TFLicense.BBAutomaticClick(Sender: TObject);
|
211 |
{
|
212 |
const
|
213 |
bSSL = True;
|
214 |
sServer = 'inraporc.inra.fr';
|
215 |
sScript = '/inraporc/SoftwareEnableKey.php';
|
216 |
sMethod = 'POST';
|
217 |
accept: packed array[0..1] of LPWSTR = (PChar('*/*'), nil);
|
218 |
header: string = 'Content-Type: application/x-www-form-urlencoded';
|
219 |
}
|
220 |
var
|
221 |
ParamList: TStringList; |
222 |
ResultString: string;
|
223 |
{
|
224 |
rbsParams: RawByteString;
|
225 |
hInet, hConnect, hRequest: HINTERNET;
|
226 |
port: Word;
|
227 |
flag: DWORD;
|
228 |
i: Integer;
|
229 |
}
|
230 |
begin
|
231 |
if not LicenseIsValid |
232 |
then
|
233 |
Exit; |
234 |
BBAutomatic.Enabled := False; |
235 |
Screen.Cursor := crHourGlass; |
236 |
ParamList := TStringList.Create; |
237 |
try
|
238 |
ParamList.Add(Format('Language=%s', [UpperCase(Copy(LanguageCode, 1, 2))])); |
239 |
ParamList.Add(Format('LicenseType=%d', [LicenseType]));
|
240 |
ParamList.Add(Format('LicenseNumber=%d', [LicenseNumber]));
|
241 |
ParamList.Add(Format('Version=%s', [VersionString]));
|
242 |
ParamList.Add(Format('FirstName=%s', [FirstName]));
|
243 |
ParamList.Add(Format('LastName=%s', [LastName]));
|
244 |
ParamList.Add(Format('Company=%s', [Company]));
|
245 |
ParamList.Add(Format('Address1=%s', [Address1]));
|
246 |
ParamList.Add(Format('Address2=%s', [Address2]));
|
247 |
ParamList.Add(Format('PostalCode=%s', [PostalCode]));
|
248 |
ParamList.Add(Format('City=%s', [City]));
|
249 |
ParamList.Add(Format('Country=%s', [Country]));
|
250 |
ParamList.Add(Format('Phone=%s', [Phone]));
|
251 |
ParamList.Add(Format('Fax=%s', [Fax]));
|
252 |
ParamList.Add(Format('Mail=%s', [Mail]));
|
253 |
ParamList.Add(Format('Course=%s', [Course]));
|
254 |
ParamList.Add(Format('VolumeSerialNumber=%s', [Volume]));
|
255 |
ParamList.Add(Format('FinalDate=%s', [FinalDate]));
|
256 |
ParamList.Add(Format('SoftwareEnableKey=%s', [SoftwareEnableKey]));
|
257 |
{
|
258 |
// M?thode plus propre, mais qui n'enregistre pas les param?tre sans valeur
|
259 |
ParamList.Values['Language'] := UpperCase(Copy(LanguageCode, 1, 2));
|
260 |
ParamList.Values['LicenseType'] := IntToStr(LicenseType);
|
261 |
ParamList.Values['LicenseNumber'] := IntToStr(LicenseNumber);
|
262 |
ParamList.Values['Version'] := VersionString;
|
263 |
ParamList.Values['FirstName'] := FirstName;
|
264 |
ParamList.Values['LastName'] := LastName;
|
265 |
ParamList.Values['Company'] := Company;
|
266 |
ParamList.Values['Address1'] := Address1;
|
267 |
ParamList.Values['Address2'] := Address2;
|
268 |
ParamList.Values['PostalCode'] := PostalCode;
|
269 |
ParamList.Values['City'] := City;
|
270 |
ParamList.Values['Country'] := Country;
|
271 |
ParamList.Values['Phone'] := Phone;
|
272 |
ParamList.Values['Fax'] := Fax;
|
273 |
ParamList.Values['Mail'] := Mail;
|
274 |
ParamList.Values['Course'] := Course;
|
275 |
ParamList.Values['VolumeSerialNumber'] := Volume;
|
276 |
ParamList.Values['FinalDate'] := FinalDate;
|
277 |
ParamList.Values['SoftwareEnableKey'] := SoftwareEnableKey;
|
278 |
}
|
279 |
try
|
280 |
IdHTTPLicense.ConnectTimeout := 10000;
|
281 |
ResultString := IdHTTPLicense.Post(URL_HTTPS + 'SoftwareEnableKey.php', ParamList);
|
282 |
if ResultString <> '' |
283 |
then // Erreur PHP |
284 |
MessageDlg(ResultString, mtError, [mbOk], 0)
|
285 |
else // Enregistrement effectu? |
286 |
MessageDlg(MsgLicenseSuccess, mtConfirmation, [mbOk], 0);
|
287 |
except
|
288 |
// Exception Delphi (Indy HTTP)
|
289 |
MessageDlg(MsgServerUnreachable, mtError, [mbOk], 0);
|
290 |
end;
|
291 |
{
|
292 |
for i := 0 to ParamList.Count - 1 do
|
293 |
if i = 0 then
|
294 |
rbsParams := utf8encode(ParamList[i])
|
295 |
else
|
296 |
rbsParams := rbsParams + '&' + utf8encode(ParamList[i]);
|
297 |
hInet := InternetOpen('InraPorc', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
|
298 |
if not Assigned(hInet) then
|
299 |
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
|
300 |
else try
|
301 |
if bSSL then
|
302 |
port := INTERNET_DEFAULT_HTTPS_PORT
|
303 |
else
|
304 |
port := INTERNET_DEFAULT_HTTP_PORT;
|
305 |
flag := INTERNET_SERVICE_HTTP;
|
306 |
hConnect := InternetConnect(hInet, PWideChar(sServer), port, nil, nil, flag, 0, 0);
|
307 |
if not Assigned(hConnect) then
|
308 |
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
|
309 |
else try
|
310 |
if bSSL then
|
311 |
flag := INTERNET_FLAG_SECURE or INTERNET_FLAG_KEEP_CONNECTION;
|
312 |
hRequest := HttpOpenRequest(hConnect, PWideChar(sMethod), PWideChar(sScript), nil, nil, @accept, flag, 0);
|
313 |
if not Assigned(hRequest) then
|
314 |
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
|
315 |
else try
|
316 |
flag := HTTP_ADDREQ_FLAG_ADD;
|
317 |
HttpAddRequestHeaders(hRequest, Pointer(header), ByteLength(header), flag);
|
318 |
if not HttpSendRequest(hRequest, nil, 0, Pointer(rbsParams), Length(rbsParams)) then
|
319 |
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
|
320 |
else
|
321 |
MessageDlg(MsgLicenseSuccess, mtConfirmation, [mbOk], 0);
|
322 |
finally
|
323 |
InternetCloseHandle(hRequest);
|
324 |
end;
|
325 |
finally
|
326 |
InternetCloseHandle(hConnect);
|
327 |
end;
|
328 |
finally
|
329 |
InternetCloseHandle(hInet);
|
330 |
end;
|
331 |
}
|
332 |
finally
|
333 |
ParamList.Free; |
334 |
Screen.Cursor:= crDefault; |
335 |
BBAutomatic.Enabled := True; |
336 |
end;
|
337 |
end;
|
338 |
|
339 |
procedure TFLicense.BBHelpClick(Sender: TObject);
|
340 |
begin
|
341 |
Application.HelpCommand(HELP_CONTEXT, HelpContext); |
342 |
end;
|
343 |
|
344 |
procedure TFLicense.BBImportClick(Sender: TObject);
|
345 |
var
|
346 |
DesktopPath: array[0..MAX_PATH] of Char; |
347 |
begin
|
348 |
OpenDialogLicFile.FileName := 'InraPorc.lic';
|
349 |
SHGetFolderPath(0, CSIDL_DESKTOP, 0, SHGFP_TYPE_CURRENT, DesktopPath); |
350 |
OpenDialogLicFile.InitialDir := DesktopPath; |
351 |
if OpenDialogLicFile.Execute
|
352 |
then // Importer les informations |
353 |
begin
|
354 |
LoadLicFile(OpenDialogLicFile.FileName); |
355 |
DisplayLicense; |
356 |
end;
|
357 |
end;
|
358 |
|
359 |
procedure TFLicense.BBManualClick(Sender: TObject);
|
360 |
var
|
361 |
DesktopPath: array[0..MAX_PATH] of Char; |
362 |
begin
|
363 |
if not LicenseIsValid |
364 |
then
|
365 |
Exit; |
366 |
SaveDialogLicFile.FileName := 'InraPorc.lic';
|
367 |
SHGetFolderPath(0, CSIDL_DESKTOP, 0, SHGFP_TYPE_CURRENT, DesktopPath); |
368 |
SaveDialogLicFile.InitialDir := DesktopPath; |
369 |
if SaveDialogLicFile.Execute
|
370 |
then // Exporter les informations |
371 |
begin
|
372 |
SaveLicFile(SaveDialogLicFile.FileName); |
373 |
if Copy(LanguageCode, 1, 2) = 'fr' |
374 |
then
|
375 |
ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'key_fr.html'), nil, nil, SW_SHOWNORMAL) |
376 |
else
|
377 |
ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'key_en.html'), nil, nil, SW_SHOWNORMAL); |
378 |
end;
|
379 |
end;
|
380 |
|
381 |
procedure TFLicense.PBLicenseNumberChange(Sender: TObject);
|
382 |
begin
|
383 |
LicenseNumber := PBLicenseNumber.AsInteger; |
384 |
end;
|
385 |
|
386 |
procedure TFLicense.DisplayLicense;
|
387 |
begin
|
388 |
case LicenseType of |
389 |
2: // Compl?te |
390 |
RBComplete.Checked := True; |
391 |
1: // Education |
392 |
RBEducation.Checked := True; |
393 |
else // Evaluation |
394 |
RBEvaluation.Checked := True; |
395 |
end;
|
396 |
PBLicenseNumber.AsInteger := LicenseNumber; |
397 |
ECourse.Text := Course; |
398 |
EFirstName.Text := FirstName; |
399 |
ELastName.Text := LastName; |
400 |
ECompany.Text := Company; |
401 |
EAddress1.Text := Address1; |
402 |
EAddress2.Text := Address2; |
403 |
EPostalCode.Text := PostalCode; |
404 |
ECity.Text := City; |
405 |
ECountry.Text := Country; |
406 |
EPhone.Text := Phone; |
407 |
EFax.Text := Fax; |
408 |
EMail.Text := Mail; |
409 |
end;
|
410 |
|
411 |
function TFLicense.LicenseIsValid: Boolean;
|
412 |
begin
|
413 |
Result := False; |
414 |
if RBComplete.Checked and (DriveType(Drive) <> DRIVE_FIXED) |
415 |
then // La version compl?te doit ?tre install?e sur un disque fixe |
416 |
begin
|
417 |
MessageDlg(MsgFixedDrive, mtWarning, [mbOk], 0);
|
418 |
ActiveControl := RBComplete; |
419 |
Exit; |
420 |
end;
|
421 |
if RBComplete.Checked and (LicenseNumber = 0) |
422 |
then // Num?ro de licence non renseign? |
423 |
begin
|
424 |
MessageDlg(Format(MsgRequiredField, [LLicenseNumber.Caption]), mtWarning, [mbOk], 0);
|
425 |
ActiveControl := PBLicenseNumber; |
426 |
Exit; |
427 |
end;
|
428 |
if (RBEducation.Checked or RBComplete.Checked) and (Length(FirstName) = 0) |
429 |
then // Pr?nom non renseign? |
430 |
begin
|
431 |
MessageDlg(Format(MsgRequiredField, [LFirstName.Caption]), mtWarning, [mbOk], 0);
|
432 |
ActiveControl := EFirstName; |
433 |
Exit; |
434 |
end;
|
435 |
if (RBEducation.Checked or RBComplete.Checked) and (Length(LastName) = 0) |
436 |
then // Nom de famille non renseign? |
437 |
begin
|
438 |
MessageDlg(Format(MsgRequiredField, [LLastName.Caption]), mtWarning, [mbOk], 0);
|
439 |
ActiveControl := ELastName; |
440 |
Exit; |
441 |
end;
|
442 |
if RBEducation.Checked and (Length(Company) = 0) |
443 |
then // Etablissement non renseign? |
444 |
begin
|
445 |
MessageDlg(Format(MsgRequiredField, [LOrganisation.Caption]), mtWarning, [mbOk], 0);
|
446 |
ActiveControl := ECompany; |
447 |
Exit; |
448 |
end;
|
449 |
if (RBEducation.Checked or RBComplete.Checked) and (Length(Mail) = 0) |
450 |
then // Mail non renseign? |
451 |
begin
|
452 |
MessageDlg(MsgMissingMail, mtWarning, [mbOk], 0);
|
453 |
ActiveControl := EMail; |
454 |
Exit; |
455 |
end;
|
456 |
if RBComplete.Checked and ((Length(Address1) = 0) or (Length(City) = 0) or (Length(Country) = 0)) |
457 |
then // Adresse non renseign?e |
458 |
begin
|
459 |
MessageDlg(MsgMissingAddress, mtWarning, [mbOk], 0);
|
460 |
ActiveControl := EAddress1; |
461 |
Exit; |
462 |
end;
|
463 |
Result := True; |
464 |
end;
|
465 |
|
466 |
procedure TFLicense.EAddress1Change(Sender: TObject);
|
467 |
begin
|
468 |
Address1 := EAddress1.Text; |
469 |
end;
|
470 |
|
471 |
procedure TFLicense.EAddress2Change(Sender: TObject);
|
472 |
begin
|
473 |
Address2 := EAddress2.Text; |
474 |
end;
|
475 |
|
476 |
procedure TFLicense.ECityChange(Sender: TObject);
|
477 |
begin
|
478 |
City := ECity.Text; |
479 |
end;
|
480 |
|
481 |
procedure TFLicense.ECompanyChange(Sender: TObject);
|
482 |
begin
|
483 |
Company := ECompany.Text; |
484 |
end;
|
485 |
|
486 |
procedure TFLicense.ECountryChange(Sender: TObject);
|
487 |
begin
|
488 |
Country := ECountry.Text; |
489 |
end;
|
490 |
|
491 |
procedure TFLicense.ECourseChange(Sender: TObject);
|
492 |
begin
|
493 |
Course :=ECourse.Text; |
494 |
end;
|
495 |
|
496 |
procedure TFLicense.EFaxChange(Sender: TObject);
|
497 |
begin
|
498 |
Fax := EFax.Text; |
499 |
end;
|
500 |
|
501 |
procedure TFLicense.EFirstNameChange(Sender: TObject);
|
502 |
begin
|
503 |
FirstName := EFirstName.Text; |
504 |
end;
|
505 |
|
506 |
procedure TFLicense.ELastNameChange(Sender: TObject);
|
507 |
begin
|
508 |
LastName := ELastName.Text; |
509 |
end;
|
510 |
|
511 |
procedure TFLicense.EMailChange(Sender: TObject);
|
512 |
begin
|
513 |
Mail := EMail.Text; |
514 |
end;
|
515 |
|
516 |
procedure TFLicense.EPhoneChange(Sender: TObject);
|
517 |
begin
|
518 |
Phone := EPhone.Text; |
519 |
end;
|
520 |
|
521 |
procedure TFLicense.EPostalCodeChange(Sender: TObject);
|
522 |
begin
|
523 |
PostalCode := EPostalCode.Text; |
524 |
end;
|
525 |
|
526 |
procedure TFLicense.WMSysCommand(var Message: TWMSysCommand); |
527 |
begin
|
528 |
if Message.CmdType = SC_MINIMIZE
|
529 |
then
|
530 |
Application.Minimize |
531 |
else
|
532 |
inherited;
|
533 |
end;
|
534 |
|
535 |
end.
|