Du willst also die Zeit im Sekundentakt oben im formular hochlaufen lassen, bis es 12:26 ist, wie sie unten in der Liste steht. Dann hätt ich jetzt mal dein Problem verstanden, oder?
Zeiten (und Datum) speichert man in Delphi in TDateTime Typen, dazu brauchst du also nicht umständlich irgendwelche Strings auseinande zu pflücken oder Stunden und Minuten zu extrahieren.
Ich würde 2 Properties definieren, welche deine beiden Zeiten beinhalten (Jetzt und BisZeit). In der Setter-Methode kannst du z.B. deine Darstellung aktualiseren. Somit brauchst du nirgends, ausser in der Setter-Methode, deine Labels anzufassen, und arbeitest ausschliesslich mit deinen Eigenschaften.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
Timer1: TTimer;
lblJetzt: TLabel;
lblBisZeit: TLabel;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
FJetzt: TDateTime;
FBisZeit: TDateTime;
procedure SetJetzt(
const Value: TDateTime);
procedure SetBisZeit(
const Value: TDateTime);
{ Private-Deklarationen }
public
{ Public-Deklarationen }
property Jetzt : TDateTime
read FJetzt
write SetJetzt;
property BisZeit : TDateTime
read FBisZeit
write SetBisZeit;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Jetzt := Now ;
BisZeit := Jetzt + EncodeTime(0,0,5,0);
timer1.Enabled := true;
end;
procedure TForm1.SetBisZeit(
const Value: TDateTime);
begin
FBisZeit := Value;
lblBisZeit.Caption := TimeToStr(FBisZeit) ;
end;
procedure TForm1.SetJetzt(
const Value: TDateTime);
begin
FJetzt := Value;
lblJetzt.Caption := TimeToStr(FJetzt) ;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Jetzt := Now ;
if (Jetzt >= BisZeit)
then begin
timer1.Enabled := false;
ShowMessage ('
Countdown abgelaufen') ;
end;
end;
end.