Einzelnen Beitrag anzeigen

Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#1

DateTimePicker Benutzereingabe korrigieren

  Alt 6. Jun 2017, 10:42
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;
Nico Bäger
  Mit Zitat antworten Zitat