[ bobans72 @ 16.02.2016. 01:30 ] @
| Pozdrav.
Imam tri Edit-a u svakom editu je postavljeno vreme koje se medjusobno razlikujua zatim imam dva tajmera jedan prikazuje proteklo vreme a drugi
vrši kalkulaciju izmedju ovih tri edita i treba da mi prikaže rezultat izmedju ovih tri edita u labelu u mom slučaju je to Label1.
Evo koda:
Code:
procedure TForm1.FormShow(Sender: TObject);
begin
timer1.enabled:=True;
timer2.enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label14.Caption :=formatdatetime('hh:nn:ss',now);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if (label14.Caption > maskedit1.Text) and (label14.Caption <= maskedit2.Text) then
begin
Label1.Caption:='1';
end else
if (label14.Caption > maskedit2.Text) and (label14.Caption <= maskedit3.Text) then
begin
Label1.Caption:='2';
end else
if (label14.Caption > maskedit3.Text) and (label14.Caption <= maskedit1.Text) then
begin
Label1.Caption:='3';
end;
E sada mi je tu problem pri pokretanju aplikacije neće da automatski prikaže da li je to 1,2,3 samo kada izvršim promenu vremena u bilo kom editu
onda kada proteklo vreme prodje zadato vreme tada automatski prebaci broj 1 ili 2 ili 3 a na pokretanju forme neće da detektuje.
Ili treba neka izmena u kodu ili da se nešto doda molim za pomoć. |
[ savkic @ 16.02.2016. 01:54 ] @
Najlakše je da u OnFormShow ili OnFormCreate eventu forme pozoveš Timer2Timer metodu, npr: Timer2Timer(Self);
Alternativa je (malo lepše organizovana ali radi istu stvar) da ceo kod iz Timer2Timer metode prebaciš u posebnu proceduru koju ćeš nazvati recimo Calculate.
Dalje sve što si imao u Timer2Timer metodi obrišeš i samo ostaviš poziv ka Calculate. I na kraju u OnShow ili OnCreate isto pozoveš Calculate.
[ bobans72 @ 16.02.2016. 03:25 ] @
Neće ponovo raditi probao sam kako si napisao ali i dalje ne prepoznaje samo kada je ručni unos vremena.
Možda su potrebne neke izmene , evo prikačio sam izvorni kod pa pogledajte u čemu je greška.
Auto kontrola vremena
[ salvaric @ 16.02.2016. 08:24 ] @
Code:
procedure TForm1.Calculate;
begin
if (GetTime > StrToTime(maskedit1.Text)) and (GetTime <= StrToTime(maskedit2.Text)) then
begin
Label1.Caption:='1';
end else
if (GetTime > StrToTime(maskedit2.Text)) and (GetTime <= StrToTime(maskedit3.Text)) then
begin
Label1.Caption:='2';
end else
if (GetTime > StrToTime(maskedit3.Text)) and (GetTime <= StrToTime(maskedit1.Text)) then
begin
Label1.Caption:='3';
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Timer1.Enabled:=True;
Timer2.Enabled:=True;
// Calculate; nepotrebno
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label14.Caption :=formatdatetime('hh:nn:ss',now);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Calculate;
end;
[ captPicard @ 16.02.2016. 08:32 ] @
Idi po breakpointovima. Mislim da imaš situaciju kada ti nije zadovoljen niti jedan uvjet. I ja ne bi baš na taj način provjeravao koje vrijeme je veće a koje manje. Nisam 100% siguran da će ti to uvijek dobro raditi. Narpavi funkciju gdje uspoređuješ vrijeme a ne stringove.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.