[ 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.