Hallo zusammen,
ich habe ein Problem mit dem TDateTimePicker.
Ich möchte, dass meine Benutzer ein Start-Datum (inklusive Uhrzeit) und ein Ende-Datum (inklusive Uhrzeit) eingeben.
Dazu habe ich 4 TDateTimePicker-Komponenten genutzt.
DTPStartDatum.Kind:=dtkDate
DTPStartZeit.Kind :=dtkTime
und
DTPEndeDatum.Kind:=dtkDate
DTPEndeZeit.Kine :=dtkTime
Nun möchte ich verhindern, dass ein Benutzer eine Start-DateTime eingibt, die nach der Ende-DateTime liegt, bzw. dass er eine Ende-DateTime eingibt, die vor der Start-DateTime liegt.
Zuerst habe ich versucht, dass mit MaxDate und MinDate zu lösen, aber damit kann ich nur das Datum einschränken.
Also habe ich nun versucht es im OnChange-Event der Komponenten zu lösen.
Im OnChange baue ich jeweils den beiden zusammengehörigen Komponenten die DateTime-Werte zusammen und vergleiche sie anschließend.
Wird bspw. ein zu großer Wert für die Start-DateTime eingegeben, dann möchte ich den Wert bei den Komponenten auf die Ende-DateTime setzen.
Aber obwohl der Vergleich noch funktioniert, wird mir in der Komponente nicht der geänderte Wert angezeigt. Woran kann das liegen, bzw. gibt es einen besseren Weg?
Hier der Code des OnChange-Events für die Start-DateTime:
Delphi-Quellcode:
procedure TMain.DTPStartDatumChange(Sender: TObject);
var
EndeDatum : TDateTime;
StartDatum: TDateTime;
begin
EndeDatum :=DateOf(DTPEndeDatum.Date) +TimeOf(DTPEndeZeit.Time);
StartDatum:=DateOf(DTPStartDatum.Date)+TimeOf(DTPStartZeit.Time);
if StartDatum>EndeDatum
then
begin
DTPStartDatum.Date:=DateOf(EndeDatum);
DTPStartZeit.Time :=TimeOf(EndeDatum);
end;
end;