root / LicensesMercure / UFOrder.pas @ 5
Historique | Voir | Annoter | Télécharger (16,808 ko)
1 |
unit UFOrder;
|
---|---|
2 |
|
3 |
interface
|
4 |
|
5 |
uses
|
6 |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
7 |
Dialogs, StdCtrls, Buttons, PBNumEdit, IdBaseComponent, IdComponent, |
8 |
IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IdMessage, IdMessageClient, |
9 |
IdAttachmentFile, IdSMTP, IdSMTPBase, IdExplicitTLSClientServerBase, |
10 |
ExtCtrls, mysql, IdIMAP4, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, |
11 |
IdSSL, IdSSLOpenSSL, WinInet; |
12 |
|
13 |
type
|
14 |
TFOrder = class(TForm)
|
15 |
EKey: TEdit; |
16 |
BBSkip: TBitBtn; |
17 |
BBProcess: TBitBtn; |
18 |
BBRemove: TBitBtn; |
19 |
EContact: TEdit; |
20 |
LContact: TLabel; |
21 |
EMail: TEdit; |
22 |
LMail: TLabel; |
23 |
ECompany: TEdit; |
24 |
LCompany: TLabel; |
25 |
LPostalCode: TLabel; |
26 |
LCity: TLabel; |
27 |
LCountry: TLabel; |
28 |
EPostalCode: TEdit; |
29 |
ECity: TEdit; |
30 |
ECountry: TEdit; |
31 |
GBAddress: TGroupBox; |
32 |
EOrderNumber: TEdit; |
33 |
LOrderNumber: TLabel; |
34 |
BBOrderFile: TBitBtn; |
35 |
LWarning: TLabel; |
36 |
LLicenses: TLabel; |
37 |
EFirstName1: TEdit; |
38 |
LFirstName: TLabel; |
39 |
ELastName1: TEdit; |
40 |
LLastName: TLabel; |
41 |
LLicenseNumber: TLabel; |
42 |
EFirstName2: TEdit; |
43 |
ELastName2: TEdit; |
44 |
EFirstName3: TEdit; |
45 |
ELastName3: TEdit; |
46 |
EFirstName4: TEdit; |
47 |
ELastName4: TEdit; |
48 |
EFirstName5: TEdit; |
49 |
ELastName5: TEdit; |
50 |
PBLicenses: TPBNumEdit; |
51 |
PBLicenseNumber1: TPBNumEdit; |
52 |
PBLicenseNumber2: TPBNumEdit; |
53 |
PBLicenseNumber3: TPBNumEdit; |
54 |
PBLicenseNumber4: TPBNumEdit; |
55 |
PBLicenseNumber5: TPBNumEdit; |
56 |
SMTP: TIdSMTP; |
57 |
MInraTransfert: TIdMessage; |
58 |
MObservations: TMemo; |
59 |
MAcknowledgement: TIdMessage; |
60 |
PLicenses: TPanel; |
61 |
EAddress1: TEdit; |
62 |
EAddress2: TEdit; |
63 |
PLicense1: TPanel; |
64 |
PLicense2: TPanel; |
65 |
PLicense3: TPanel; |
66 |
PLicense4: TPanel; |
67 |
PLicense5: TPanel; |
68 |
PLicense6: TPanel; |
69 |
EFirstName6: TEdit; |
70 |
ELastName6: TEdit; |
71 |
PBLicenseNumber6: TPBNumEdit; |
72 |
PLicense7: TPanel; |
73 |
EFirstName7: TEdit; |
74 |
ELastName7: TEdit; |
75 |
PBLicenseNumber7: TPBNumEdit; |
76 |
PLicense8: TPanel; |
77 |
EFirstName8: TEdit; |
78 |
ELastName8: TEdit; |
79 |
PBLicenseNumber8: TPBNumEdit; |
80 |
PLicense9: TPanel; |
81 |
EFirstName9: TEdit; |
82 |
ELastName9: TEdit; |
83 |
PBLicenseNumber9: TPBNumEdit; |
84 |
PLicense10: TPanel; |
85 |
EFirstName10: TEdit; |
86 |
ELastName10: TEdit; |
87 |
PBLicenseNumber10: TPBNumEdit; |
88 |
EVAT: TEdit; |
89 |
IMAP4: TIdIMAP4; |
90 |
OpenSSL_IMAP4: TIdSSLIOHandlerSocketOpenSSL; |
91 |
OpenSSL_SMTP: TIdSSLIOHandlerSocketOpenSSL; |
92 |
procedure FormShow(Sender: TObject);
|
93 |
procedure BBSkipClick(Sender: TObject);
|
94 |
procedure BBProcessClick(Sender: TObject);
|
95 |
procedure BBRemoveClick(Sender: TObject);
|
96 |
procedure BBOrderFileClick(Sender: TObject);
|
97 |
procedure FormCreate(Sender: TObject);
|
98 |
private
|
99 |
{ D?clarations priv?es }
|
100 |
Key: String;
|
101 |
Language: String;
|
102 |
Contact, Mail, Company, VAT: String;
|
103 |
Address1, Address2, PostalCode, City, Country: String;
|
104 |
OrderNumber, OrderFile: String;
|
105 |
Licenses: Integer; |
106 |
FirstName, LastName: array[1..10] of String; |
107 |
Observations: String;
|
108 |
procedure DisplayRequest;
|
109 |
public
|
110 |
{ D?clarations publiques }
|
111 |
function GetRequest: Boolean;
|
112 |
end;
|
113 |
|
114 |
var
|
115 |
FOrder: TFOrder; |
116 |
|
117 |
implementation
|
118 |
|
119 |
uses
|
120 |
UFMenu; |
121 |
|
122 |
{$R *.dfm}
|
123 |
|
124 |
procedure TFOrder.FormCreate(Sender: TObject);
|
125 |
begin
|
126 |
Top := 0;
|
127 |
Left := 0;
|
128 |
with IMAP4 do |
129 |
begin
|
130 |
Host := IMAP_SERVER; |
131 |
// Username := EXCHANGE_USERNAME + '\' + EXCHANGE_SHARED_MAILBOX;
|
132 |
Username := 'INRA\' + FMenu.EUsername.Text + '\' + EXCHANGE_SHARED_MAILBOX; |
133 |
// Password := EXCHANGE_PASSWORD;
|
134 |
Password := FMenu.EPassword.Text; |
135 |
end;
|
136 |
with SMTP do |
137 |
begin
|
138 |
Host := SMTP_SERVER; |
139 |
// Username := EXCHANGE_USERNAME;
|
140 |
Username := 'INRA\' + FMenu.EUsername.Text;
|
141 |
// Password := EXCHANGE_PASSWORD;
|
142 |
Password := FMenu.EPassword.Text; |
143 |
end;
|
144 |
end;
|
145 |
|
146 |
procedure TFOrder.FormShow(Sender: TObject);
|
147 |
begin
|
148 |
DisplayRequest; |
149 |
end;
|
150 |
|
151 |
procedure TFOrder.BBSkipClick(Sender: TObject);
|
152 |
begin
|
153 |
Inc(cur); |
154 |
if (cur < SLOrder.Count) and GetRequest |
155 |
then
|
156 |
DisplayRequest |
157 |
else
|
158 |
Close; |
159 |
end;
|
160 |
|
161 |
procedure TFOrder.BBProcessClick(Sender: TObject);
|
162 |
var
|
163 |
i: Integer; |
164 |
p: TPanel; |
165 |
StrMessage: TStrings; |
166 |
begin
|
167 |
FMenu.MLog.Lines.Add('Recording order...');
|
168 |
with FMenu.TOrder do |
169 |
begin
|
170 |
Insert; |
171 |
FieldByName('Key').AsString := Key;
|
172 |
FieldByName('Language').AsString := Language;
|
173 |
FieldByName('Contact').AsString := EContact.Text;
|
174 |
FieldByName('Mail').AsString := EMail.Text;
|
175 |
FieldByName('Company').AsString := ECompany.Text;
|
176 |
FieldByName('VAT').AsString := EVAT.Text;
|
177 |
FieldByName('Address1').AsString := EAddress1.Text;
|
178 |
FieldByName('Address2').AsString := EAddress2.Text;
|
179 |
FieldByName('PostalCode').AsString := EPostalCode.Text;
|
180 |
FieldByName('City').AsString := ECity.Text;
|
181 |
FieldByName('Country').AsString := ECountry.Text;
|
182 |
FieldByName('OrderNumber').AsString := EOrderNumber.Text;
|
183 |
FieldByName('OrderFile').AsString := OrderFile;
|
184 |
FieldByName('Licenses').AsInteger := PBLicenses.AsInteger;
|
185 |
Post; |
186 |
end;
|
187 |
FMenu.MLog.Lines.Add('Recording licenses (type 0)...');
|
188 |
for i := 1 to PBLicenses.AsInteger do |
189 |
with FMenu.TLicense do |
190 |
begin
|
191 |
Insert; |
192 |
FieldByName('Validity').AsBoolean := False;
|
193 |
FieldByName('Type').AsInteger := 0; |
194 |
FieldByName('Source').AsString := Key;
|
195 |
p := PLicenses.Controls[i + 2] as TPanel; |
196 |
FieldByName('LicenseNumber').AsInteger := (p.Controls[2] as TPBNumEdit).AsInteger; |
197 |
FieldByName('FirstName').AsString := (p.Controls[0] as TEdit).Text; |
198 |
FieldByName('LastName').AsString := (p.Controls[1] as TEdit).Text; |
199 |
FieldByName('Company').AsString := ECompany.Text;
|
200 |
FieldByName('FinalDate').AsDateTime := IncMonth(Date, 2); |
201 |
Post; |
202 |
end;
|
203 |
FMenu.MLog.Lines.Add('Mailing to ' + MAIL_INRA_TRANSFERT_1 + '...'); |
204 |
with MInraTransfert do |
205 |
begin
|
206 |
Body.Clear; |
207 |
MessageParts.Clear; |
208 |
From.Name := 'InraPorc';
|
209 |
From.Address := MAIL_INRAPORC; |
210 |
Recipients.EMailAddresses := MAIL_INRA_TRANSFERT_1; |
211 |
CCList.EMailAddresses := MAIL_INRA_TRANSFERT_2; |
212 |
Body.Add(Format('Commande num?ro "%s" portant sur %d licence(s)', [Key, PBLicenses.AsInteger]));
|
213 |
Body.Add('');
|
214 |
Body.Add(EContact.Text); |
215 |
if Length(ECompany.Text) > 0 |
216 |
then
|
217 |
if Length(EVAT.Text) > 0 |
218 |
then
|
219 |
Body.Add(Format ('%s (%s)', [ECompany.Text, EVAT.Text]))
|
220 |
else
|
221 |
Body.Add(ECompany.Text); |
222 |
if Length(EAddress1.Text) > 0 |
223 |
then
|
224 |
Body.Add(EAddress1.Text); |
225 |
if Length(EAddress2.Text) > 0 |
226 |
then
|
227 |
Body.Add(EAddress2.Text); |
228 |
Body.Add(Format('%s %s', [EPostalCode.Text, ECity.Text]));
|
229 |
Body.Add(ECountry.Text); |
230 |
Body.Add('');
|
231 |
Body.Add(EMail.Text); |
232 |
if Length(EOrderNumber.Text) > 0 |
233 |
then
|
234 |
begin
|
235 |
Body.Add('');
|
236 |
Body.Add(Format('N? commande client : %s', [EOrderNumber.Text]));
|
237 |
end;
|
238 |
if (Length(OrderFile) > 0) and FileExists(SHARED_DRIVE + SHARED_FOLDER + 'Fichiers\' + OrderFile) |
239 |
then
|
240 |
begin
|
241 |
ContentType := 'multipart/mixed';
|
242 |
TIdAttachmentFile.Create(MessageParts, SHARED_DRIVE + SHARED_FOLDER + '\Fichiers\' + OrderFile);
|
243 |
end;
|
244 |
Body.Add('');
|
245 |
Body.Add('Les num?ros de licence suivants ont ?t? attribu?s :');
|
246 |
for i := 1 to PBLicenses.AsInteger do |
247 |
begin
|
248 |
p := PLicenses.Controls[i + 2] as TPanel; |
249 |
Body.Add(Format('%d : %s %s', [(p.Controls[2] as TPBNumEdit).AsInteger, (p.Controls[0] as TEdit).Text, (p.Controls[1] as TEdit).Text])); |
250 |
end;
|
251 |
if Length(MObservations.Text) > 0 |
252 |
then
|
253 |
begin
|
254 |
Body.Add('');
|
255 |
Body.Add('OBSERVATIONS');
|
256 |
Body.Add('------------');
|
257 |
Body.Add(MObservations.Text); |
258 |
end;
|
259 |
Body.Add('');
|
260 |
Body.Add('Cordialement');
|
261 |
Body.Add('--');
|
262 |
Body.Add(FMenu.EAdmin.Text); |
263 |
end;
|
264 |
FMenu.MLog.Lines.Add('Mailing to ' + EMail.Text + '...'); |
265 |
with MAcknowledgement do |
266 |
begin
|
267 |
Body.Clear; |
268 |
From.Name := 'InraPorc';
|
269 |
From.Address := MAIL_INRAPORC; |
270 |
Recipients.EMailAddresses := EMail.Text; |
271 |
StrMessage := TStringList.Create; |
272 |
if Language = 'FR' |
273 |
then // Accus? de r?ception (fran?ais) |
274 |
begin
|
275 |
Subject := '[InraPorc] Confirmation de commande';
|
276 |
Body.Add(Format('Votre bon de commande pour %d licence(s) d''InraPorc a ?t? enregistr?e sous le num?ro "%s".', [PBLicenses.AsInteger, Key]));
|
277 |
Body.Add('Votre demande a ?t? transf?r?e ? Inra Transfert, qui vous enverra la facture.');
|
278 |
Body.Add('');
|
279 |
Body.Add('Les num?ros de licence suivants ont ?t? attribu?s :');
|
280 |
for i := 1 to PBLicenses.AsInteger do |
281 |
begin
|
282 |
p := PLicenses.Controls[i + 2] as TPanel; |
283 |
Body.Add(Format('%d : %s %s', [(p.Controls[2] as TPBNumEdit).AsInteger, (p.Controls[0] as TEdit).Text, (p.Controls[1] as TEdit).Text])); |
284 |
end;
|
285 |
Body.Add('');
|
286 |
StrMessage.LoadFromFile(SHARED_DRIVE + SHARED_FOLDER + 'Messages\Commande_FR.txt');
|
287 |
Body.AddStrings(StrMessage); |
288 |
Body.Add('');
|
289 |
StrMessage.LoadFromFile(SHARED_DRIVE + SHARED_FOLDER + 'Messages\Signature_FR.txt');
|
290 |
Body.AddStrings(StrMessage); |
291 |
end
|
292 |
else // Acknowledgement (english) |
293 |
begin
|
294 |
Subject := '[InraPorc] Order confirmation';
|
295 |
Body.Add(Format('Your purchase order for %d license(s) of InraPorc has been registered as number "%s".', [PBLicenses.AsInteger, Key]));
|
296 |
Body.Add('Your request has been forwarded to Inra Transfert, who will send you an invoice.');
|
297 |
Body.Add('');
|
298 |
Body.Add('The following license numbers have been assigned:');
|
299 |
for i := 1 to PBLicenses.AsInteger do |
300 |
begin
|
301 |
p := PLicenses.Controls[i + 2] as TPanel; |
302 |
Body.Add(Format('%d: %s %s', [(p.Controls[2] as TPBNumEdit).AsInteger, (p.Controls[0] as TEdit).Text, (p.Controls[1] as TEdit).Text])); |
303 |
end;
|
304 |
Body.Add('');
|
305 |
StrMessage.LoadFromFile(SHARED_DRIVE + SHARED_FOLDER + 'Messages\Commande_EN.txt');
|
306 |
Body.AddStrings(StrMessage); |
307 |
Body.Add('');
|
308 |
StrMessage.LoadFromFile(SHARED_DRIVE + SHARED_FOLDER + 'Messages\Signature_EN.txt');
|
309 |
Body.AddStrings(StrMessage); |
310 |
end;
|
311 |
StrMessage.Free; |
312 |
end;
|
313 |
FMenu.MLog.Lines.Add('SMTP...');
|
314 |
try
|
315 |
SMTP.Connect; |
316 |
try
|
317 |
SMTP.Send(MInraTransfert); |
318 |
SMTP.Send(MAcknowledgement); |
319 |
finally
|
320 |
SMTP.Disconnect; |
321 |
if IMAP4.Connect
|
322 |
then
|
323 |
try
|
324 |
if not IMAP4.AppendMsg('?l?ments envoy?s', MInraTransfert, MInraTransfert.LastGeneratedHeaders) |
325 |
or not IMAP4.AppendMsg('?l?ments envoy?s', MAcknowledgement, MAcknowledgement.LastGeneratedHeaders) |
326 |
then
|
327 |
FMenu.MLog.Lines.Add('Message could not be copied in IMAP server !');
|
328 |
finally
|
329 |
IMAP4.Disconnect; |
330 |
end
|
331 |
else
|
332 |
FMenu.MLog.Lines.Add('IMAP server could not be connected !');
|
333 |
end;
|
334 |
except
|
335 |
FMenu.MLog.Lines.Add('Messages could not be sent !');
|
336 |
end;
|
337 |
BBRemoveClick(nil);
|
338 |
end;
|
339 |
|
340 |
procedure TFOrder.BBRemoveClick(Sender: TObject);
|
341 |
var
|
342 |
i: Integer; |
343 |
begin
|
344 |
FMenu.MLog.Lines.Add('Logging record...');
|
345 |
with FMenu.TOrders do |
346 |
begin
|
347 |
Append; |
348 |
FieldByName('Date').AsDateTime := Now;
|
349 |
FieldByName('Admin').AsString := FMenu.EAdmin.Text;
|
350 |
FieldByName('Key').AsString := Key;
|
351 |
FieldByName('Language').AsString := Language;
|
352 |
FieldByName('Contact').AsString := Contact;
|
353 |
FieldByName('Mail').AsString := Mail;
|
354 |
FieldByName('Company').AsString := Company;
|
355 |
FieldByName('VAT').AsString := VAT;
|
356 |
FieldByName('Address1').AsString := Address1;
|
357 |
FieldByName('Address2').AsString := Address2;
|
358 |
FieldByName('PostalCode').AsString := PostalCode;
|
359 |
FieldByName('City').AsString := City;
|
360 |
FieldByName('Country').AsString := Country;
|
361 |
FieldByName('OrderNumber').AsString := OrderNumber;
|
362 |
FieldByName('OrderFile').AsString := OrderFile;
|
363 |
FieldByName('Licenses').AsInteger := Licenses;
|
364 |
for i := 1 to 10 do |
365 |
begin
|
366 |
FieldByName(Format('FirstName%d', [i])).AsString := FirstName[i];
|
367 |
FieldByName(Format('LastName%d', [i])).AsString := LastName[i];
|
368 |
end;
|
369 |
FieldByName('Observations').AsVariant := Observations;
|
370 |
Post; |
371 |
end;
|
372 |
que := 'DELETE FROM `commandes` where `Key` = ''' + SLOrder[cur] + ''''; |
373 |
FMenu.MLog.Lines.Add(que); |
374 |
if mysql_query(con, PAnsiChar(que)) <> 0 |
375 |
then
|
376 |
FMenu.MLog.Lines.Add(mysql_error(con)) |
377 |
else
|
378 |
begin
|
379 |
SLOrder.Delete(cur); |
380 |
FMenu.PBOrders.AsInteger := FMenu.PBOrders.AsInteger - 1;
|
381 |
Dec(cur); |
382 |
end;
|
383 |
BBSkipClick(nil);
|
384 |
end;
|
385 |
|
386 |
procedure TFOrder.BBOrderFileClick(Sender: TObject);
|
387 |
begin
|
388 |
if ShellExecute(Handle, 'open', PChar(SHARED_DRIVE + SHARED_FOLDER + 'Fichiers\' + OrderFile), nil, nil, SW_SHOW) <= 32 |
389 |
then
|
390 |
FMenu.MLog.Lines.Add(SysErrorMessage(GetLastError)); |
391 |
end;
|
392 |
|
393 |
function TFOrder.GetRequest: Boolean;
|
394 |
var
|
395 |
i: Integer; |
396 |
begin
|
397 |
Result := False; |
398 |
que := 'SELECT * FROM `commandes` where `Key` = ''' + SLOrder[cur] + ''''; |
399 |
FMenu.MLog.Lines.Add(que); |
400 |
if mysql_query(con, PAnsiChar(que)) <> 0 |
401 |
then
|
402 |
FMenu.MLog.Lines.Add(mysql_error(con)) |
403 |
else
|
404 |
begin
|
405 |
res := mysql_store_result(con); |
406 |
if res = nil |
407 |
then
|
408 |
FMenu.MLog.Lines.Add(mysql_error(con)) |
409 |
else
|
410 |
begin
|
411 |
row := mysql_fetch_row(res); |
412 |
if row = nil |
413 |
then
|
414 |
FMenu.MLog.Lines.Add(mysql_error(con)) |
415 |
else
|
416 |
begin
|
417 |
Key := row^[0];
|
418 |
Language := row^[1];
|
419 |
Contact := row^[2];
|
420 |
Mail := row^[3];
|
421 |
Company := row^[4];
|
422 |
VAT := row^[5];
|
423 |
Address1 := row^[6];
|
424 |
Address2 := row^[7];
|
425 |
PostalCode := row^[8];
|
426 |
City := row^[9];
|
427 |
Country := row^[10];
|
428 |
OrderNumber := row^[11];
|
429 |
OrderFile := row^[12];
|
430 |
Licenses := StrToInt(row^[13]);
|
431 |
for i := 1 to 10 do |
432 |
begin
|
433 |
FirstName[i] := row^[2*i+12]; |
434 |
LastName[i] := row^[2*i+13]; |
435 |
end;
|
436 |
Observations := row^[34];
|
437 |
Result := True; |
438 |
end;
|
439 |
mysql_free_result(res); |
440 |
end;
|
441 |
end;
|
442 |
end;
|
443 |
|
444 |
procedure TFOrder.DisplayRequest;
|
445 |
const
|
446 |
ReadBuffer = 1024;
|
447 |
var
|
448 |
Command: String;
|
449 |
Security: TSecurityAttributes; |
450 |
ReadPipe, WritePipe: THandle; |
451 |
Start: TStartUpInfo; |
452 |
ProcessInfo: TProcessInformation; |
453 |
Buffer: PAnsiChar; |
454 |
BytesRead: DWord; |
455 |
Apprunning: DWord; |
456 |
i: Integer; |
457 |
p: TPanel; |
458 |
begin
|
459 |
EKey.Text := Key; |
460 |
EContact.Text := Contact; |
461 |
EMail.Text := Mail; |
462 |
ECompany.Text := Company; |
463 |
EVAT.Text := VAT; |
464 |
EAddress1.Text := Address1; |
465 |
EAddress2.Text := Address2; |
466 |
EPostalCode.Text := PostalCode; |
467 |
ECity.Text := City; |
468 |
ECountry.Text := Country; |
469 |
EOrderNumber.Text := OrderNumber; |
470 |
BBOrderFile.Enabled := Length(OrderFile) > 0;
|
471 |
BBOrderFile.Hint := Format('Afficher le bon de commande joint (%s)', [OrderFile]);
|
472 |
if (Length(OrderFile) > 0) and not FileExists(SHARED_DRIVE + SHARED_FOLDER + 'Fichiers\' + OrderFile) |
473 |
then
|
474 |
try
|
475 |
FMenu.MLog.Lines.Add('SCP ' + SCP_HOST + '...'); |
476 |
Security.nLength := SizeOf(TSecurityAttributes); |
477 |
Security.bInheritHandle := true; |
478 |
Security.lpSecurityDescriptor := nil;
|
479 |
if Createpipe (ReadPipe, WritePipe, @Security, 0) |
480 |
then
|
481 |
begin
|
482 |
Buffer := AllocMem(ReadBuffer + 1);
|
483 |
FillChar(Start, Sizeof(Start), #0);
|
484 |
Start.cb := SizeOf(Start); |
485 |
Start.hStdOutput := WritePipe; |
486 |
Start.hStdInput := ReadPipe; |
487 |
Start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; |
488 |
Start.wShowWindow := SW_HIDE; |
489 |
Command := 'pscp.exe -batch -hostkey ' + SCP_HOSTKEY + ' -pw ' + SCP_PASSWD + ' ' + SCP_LOGIN + '@' + SCP_HOST + ':' + SCP_PATH + OrderFile + ' ' + SHARED_DRIVE + SHARED_FOLDER + 'Fichiers'; |
490 |
if CreateProcess(nil, PChar(Command), @Security, @Security, true, NORMAL_PRIORITY_CLASS, nil, nil, Start, ProcessInfo) |
491 |
then
|
492 |
begin
|
493 |
repeat
|
494 |
Apprunning := WaitForSingleObject(ProcessInfo.hProcess, 100);
|
495 |
Application.ProcessMessages; |
496 |
until (Apprunning <> WAIT_TIMEOUT);
|
497 |
repeat
|
498 |
BytesRead := 0;
|
499 |
ReadFile(ReadPipe,Buffer[0], ReadBuffer, BytesRead, nil); |
500 |
Buffer[BytesRead] := #0;
|
501 |
OemToAnsi(Buffer, Buffer); |
502 |
FMenu.MLog.Text := FMenu.MLog.text + String(Buffer);
|
503 |
until (BytesRead < ReadBuffer);
|
504 |
end;
|
505 |
FreeMem(Buffer); |
506 |
CloseHandle(ProcessInfo.hProcess); |
507 |
CloseHandle(ProcessInfo.hThread); |
508 |
CloseHandle(ReadPipe); |
509 |
CloseHandle(WritePipe); |
510 |
end;
|
511 |
except
|
512 |
FMenu.MLog.Lines.Add('File ' + OrderFile + ' could not be got !'); |
513 |
end;
|
514 |
PBLicenses.AsInteger := Licenses; |
515 |
for i := 1 to 10 do |
516 |
begin
|
517 |
p := PLicenses.Controls[i + 2] as TPanel; |
518 |
p.Visible := i <= Licenses; |
519 |
(p.Controls[0] as TEdit).Text := FirstName[i]; |
520 |
(p.Controls[1] as TEdit).Text := LastName[i]; |
521 |
(p.Controls[2] as TPBNumEdit).AsInteger := FMenu.TLicense.RecordCount + i; |
522 |
end;
|
523 |
MObservations.Text := Observations; |
524 |
end;
|
525 |
|
526 |
end.
|