![]() |
DateTimePicker Min und MAx Probleme
Hi,
hab da mal wieder ein Problem und zwar mit den DateTimePicker Komponente. Schon gesucht, aber irgendwie nichts gefunden :? was ich mache: - Anfangs datum wird aus datei rausgesucht und in den 1. DTP geschrieben - Enddatum wird aus datei rausgesucht und in den 2. DTP geschrieben - dann wird noch MINDATE und MAXDATE anhand dieser beiden Angaben reingeschrieben ---- bis hier funktioniert das ganze auch Problem trifft erst auf, wenn ich eine 2.Datei zur Laufzeit öffne. Dort wird mir dann gesagt das datum überschreitet Minimum bzw Maximum. warum kann er nicht einfach das alte Datum löschen und ein neues Definieren?
Delphi-Quellcode:
hoffe es kann wer helfen
//...
//in ad und ed werden informationen geholt dtp_ad.Date:=ad; //dtp_ad = DateTimePicker; ad= AnfangsDatum, typ TDatetime dtp_ad.MinDate:=trunc(ad); //hier kommt fehler, beim 2. öffnen dtp_ad.MaxDate:=trunc(ed); //ed=EndDatum, typ TDatetime dtp_ad2.Time:=frac(ad); dtp_ed.Date:=ed; dtp_ed.MinDate:=trunc(ad); dtp_ed.MaxDate:=trunc(ed); dtp_ed2.Time:=frac(ed); PS: dazu muss ich noch sagen das ich für's anfangsdatum und enddatum jeweils 2DTP habe, jeweils eins fürs datum und das andere für die Zeit(dtp_ad2/dtp_ed2) |
Re: DateTimePicker Min und MAx Probleme
Hallo,
ohne Daten (2. Datei) ist das ein Fall für die Kugel. Also: F5 - Breakpoint Ctrl+F5 - Watch hinzufügen und debuggen. Heiko |
Re: DateTimePicker Min und MAx Probleme
Hallo,
habe mal rumprobiert, der Fehler entsteht (höchstwahrscheinlich) nicht in der von Dir angegebenen Zeile, sondern eine Zeile darüber. Folgende Annahme: Wir haben eine globale Variabel i vom Typ Integer und gehen davon aus, dass i = 0 ist. Meine Testprozedur ohne Datei:
Delphi-Quellcode:
Was passiert hier?
procedure TForm1.Button1Click(Sender: TObject);
Var ad : TDateTime; ed : TDateTime; begin ad := Now; ed := Now + i; dtp_ad.Date:=ad; //dtp_ad = DateTimePicker; ad= AnfangsDatum, typ TDatetime dtp_ad.MinDate:=trunc(ad); //hier kommt fehler, beim 2. öffnen dtp_ad.MaxDate:=trunc(ed); //ed=EndDatum, typ TDatetime dtp_ad2.Time:=frac(ad); dtp_ed.Date:=ed; dtp_ed.MinDate:=trunc(ad); dtp_ed.MaxDate:=trunc(ed); dtp_ed2.Time:=frac(ed); Inc(i); end; ad = heute, ed = morgen, damit sind die Zeilen 6 und 7 abgefackelt. Zeile 8: dtp_ad.Date = heute Zeile 10: dtp_ad.MinDate = heute Zeile 11: dtp_ad.MaxDate = morgen Zeile 15: dtp_ed.Date = morgen Zeile 16: dtp_ed.MinDate = heute Zeile 17: dtp_ed.MaxDate = morgen Das funktioniert und i wird um 1 erhöht. Nächster Klick: Was passiert jetzt? ad = heute, ed = übermorgen, damit sind die Zeilen 6 und 7 abgefackelt. Zeile 8: dtp_ad.Date = heute Zeile 10: dtp_ad.MinDate = heute Zeile 11: dtp_ad.MaxDate = übermorgen Zeile 15: dtp_ed.Date = übermorgen Das geht nicht, da dtp_ed.MaxDate noch auf morgen steht, deshalb passiert in diesem Beispiel in Zeile 15 bei der Zuweisung ein Fehler. Warum beim Debuggen die Zeile 16 als fehlerhaft angezeigt wird, kann ich nicht sagen. Die Fehlermeldung besagt jedenfalls, dass das Datum das Maximum heute übersteigt. Abhängig von den Werten aus Deinen Dateien, kann der Fehler in Zeile 8 oder 15 auftreten, vor dem Setzen von .Date musst Du sicherstellen, dass .MinDate und .MaxDate entsprechend gesetzt sind. Es dürfte sich hier also um ein Reihenfolgeproblem der Programmzeilen handeln. Stephan |
Re: DateTimePicker Min und MAx Probleme
DANKE!!! Es geht :dp: :love:
hab mal durchdebuggt, der Fehler trifft wirklich Zeile voher auf. und lag auch an der Reihenfolge. Das deswegen der Fehler auftrifft dacht ich mir schon nur das es an der Reihenfolge liegt, da kam ich nicht drauf ^^' Also noch mal danke :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz