Zitat von
DeddyH:
Dann versuch es mal so:DateTimePicker1.Time := trunc(DateTimePicker1.Date) + frac(DateTimePicker2.Time);
So gehts, danke..
Allerdings ist mir gerade aufgefallen, das der Countdown an sicht immer eine Sekunde zu wenig zählt.
BSP: Countdown endet um
00:00:00 und jetzt haben wir es
23:59:55 das macht ja eine Differenz von
5 Sekunden.
Allerdings wird angezeigt
"Nur noch 4 Sekunden". Das ist ansich ja nicht das Problem, das Problem ist, das ich 2x die Nachricht (ShowMessage) erhalte!
EDIT: Trick 17 mit selbstüberlistung. Ich zähle einfach Sekunden+1. Allerdings habe ich dann immernoch 2 Nachrichten! Hier der Code:
Delphi-Quellcode:
procedure TForm2.Timer3Timer(Sender: TObject);
VAR
EndDatum : TDateTime;
Aktuell : TDateTime;
Dazwischen : Integer;
Tage, Stunden, Minuten, Sekunden : Integer;
BEGIN
// Countdown
DateTimePicker1.Time := trunc(DateTimePicker1.Date) + frac(DateTimePicker2.Time);
EndDatum := DateTimePicker1.DateTime;
Aktuell := Now;
Dazwischen := SecondsBetween(Aktuell, EndDatum);
Tage := Dazwischen div (60*60*24);
Dazwischen := Dazwischen - (Tage * 60 * 60 * 24);
Stunden := Dazwischen div (60*60);
Dazwischen := Dazwischen - (Stunden * 60 * 60);
Minuten := Dazwischen div 60;
Dazwischen := Dazwischen - ( Minuten * 60);
Sekunden := Dazwischen;
Form1.Label4.Font.Color := clred;
Form1.Label4.Caption := Format('%d Tage, %d Stunden, %d Minuten & %d Sekunden bis ' + Edit5.Text + '!', [Tage, Stunden, Minuten, Sekunden+1]);
IF (Tage <= 0) AND (Stunden<=0) AND (Minuten<=0) AND (Sekunden<=0) THEN BEGIN
IF CheckBox10.Checked THEN BEGIN
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'Wecker.wav'),SND_ASYNC);
END;
ShowMessage('Ihr Countdown ist nun beendet! '+ (Edit5.text));
Form1.Label4.Hide;
CheckBox9.Checked := false;
CheckBox10.Checked := false;
sndPlaySound(nil,0);
END;
END;