Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fehler "Kalenderzeit oder -datum konnte nicht gesetzt werden" (https://www.delphipraxis.net/187250-fehler-kalenderzeit-oder-datum-konnte-nicht-gesetzt-werden.html)

Zwirbel 11. Nov 2015 16:51

Fehler "Kalenderzeit oder -datum konnte nicht gesetzt werden"
 
Moin,

mich plagt ein Problem mit einem TDateTimePicker. Ich verwende die Properties "MinDate" und "MaxDate". Möchte ich dann aber per Code den Wert "Date" auf "MaxDate" setzen, dann erhalte ich eine Exception "Kalenderzeit oder -datum konnte nicht gesetzt werden". Ich verstehe nicht ganz wie es zu diesem Fehler kommen kann. Schließlich will ich das "Date" ja lediglich auf den maximalen Wert einstellen. Was soll daran falsch sein? Kann mir bitte jemand sagen, ob ich hier etwas falsch mache und wenn ja was, oder ob die Komponente einen Bug hat.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DateTimePicker1.MinDate := EncodeDate(2015, 11, 01);
  DateTimePicker1.MaxDate := EncodeDate(2015, 11, 30);
  DateTimePicker1.Date := DateTimePicker1.MinDate; // <- Das klappt
  DateTimePicker1.Date := DateTimePicker1.MaxDate; // <- Peng: Exception "Kalenderzeit oder -datum konnte nicht gesetzt werden"
end;
Vielen Dank im Voraus für eine Erleuchtung.

HolgerX 11. Nov 2015 18:19

AW: Fehler "Kalenderzeit oder -datum konnte nicht gesetzt werden"
 
Tja, deshalb verwende ich nicht .date...

Der DateTimePicker verwendet IMMER TDateTime, also Datum + Uhrzeit, auch wenn nur Datum angezeigt wird.

Wenn Du den TDateTimePicker beinhaltet der DateTime-Wert aktuelles Datum UND Uhrzeit.

Beim Setzen von MinDate wird da nur das ganzzahlige Datum hinein geschrieben.
Das gleiche bei MaxDate.

Wenn Du nun .date das MinDate zuweist, dann wird im DateTime nur das Datum ausgetauscht, die Uhrzeit bleibt.
-> Kein Problem, da MaxDate eh größer ist.

Wenn Du aber .date das MaxDate zuweist, dann ist das DateTime durch die Uhrhzeit > wie MaxDate.. -> Peng ^^

Geh einfach hin und setzte .DateTime := .MaxDate und gut ist. Dann ist in DateTime das Maxdate mit 00:00:00, sprich kein Nachkommaanteil und somit dann DateTime nicht größer wie MaxDate.

(Meine Vermutung, nicht im Source gesucht, da bei Delphi 6 kein 'Peng' kommt, es passiert einfach nicht.. ^^)

Zwirbel 11. Nov 2015 18:31

AW: Fehler "Kalenderzeit oder -datum konnte nicht gesetzt werden"
 
Danke für die schnelle Antwort. Ja in der Tat, man muss "DateTime" nehmen. Ich hatte mich durch den Objektinspector in die Irre führen lassen, der zeigt nur "Date" an und da ich nur ein Datum handhabe, habe ich die Uhrzeit völlig vergessen. Vielen Dank noch mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz