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 Maxdate beim DateTimePicker wieder entfernen (https://www.delphipraxis.net/61273-maxdate-beim-datetimepicker-wieder-entfernen.html)

lordcroc 19. Jan 2006 10:13


Maxdate beim DateTimePicker wieder entfernen
 
Hallo,

Wenn ich einen DateTimePicker durch das MaxDate eingeschränkt habe, wie kann ich ihm wieder sagen das er das MaxDate ignorieren soll bzw. wie muß ich das Maxdate setzten damit er nach oben hin wieder offen ist??

schon mal vielen Dank im vorraus.

mfg
Lordcroc

Gollum 19. Jan 2006 10:18

Re: Maxdate beim DateTimePicker wieder entfernen
 
Hallo,

folgendermassen:
Delphi-Quellcode:
uses
  Variants;

...
DateTimePicker1.MaxDate:=null;
...

lordcroc 19. Jan 2006 10:22

Re: Maxdate beim DateTimePicker wieder entfernen
 
funktioniert leider nicht.

Er sagt mir dann "ungültige Variant-Typenumwandlung"

Gollum 19. Jan 2006 10:55

Re: Maxdate beim DateTimePicker wieder entfernen
 
Hallo,

komisch, bei mir kommt keine Fehlermeldung.

Ansonsten hilft dann nur noch das maximal mögliche Datum einzustellen: 31.12.9999

shmia 19. Jan 2006 10:59

Re: Maxdate beim DateTimePicker wieder entfernen
 
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;

lordcroc 19. Jan 2006 11:21

Re: Maxdate beim DateTimePicker wieder entfernen
 
Zitat:

Zitat von shmia
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;

funktioniert leider auch nicht.

das mit dem soweit wie möglich in die Zukunft setzten funktioniert, nur leider finde ich
ist es nicht die sauberste lösung.

Falls jemand noch ne Idee hat, dann einfach Posten.

mfg
lordcroc

Gollum 19. Jan 2006 11:53

Re: Maxdate beim DateTimePicker wieder entfernen
 
Hallo,

auch wenn Du bei MaxDate kein Datum einsetzt, ist das maximal mögliche Datum mit dem Typ TDateTime der 31.12.9999. Also macht es in diesem Fall keinen Unterschied, ob MaxDate ein Datum zugewiesen wird oder nicht.

shmia 19. Jan 2006 12:27

Re: Maxdate beim DateTimePicker wieder entfernen
 
Zitat:

Zitat von lordcroc
Zitat:

Zitat von shmia
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;

funktioniert leider auch nicht.

TDateTimePicker hat einen Bug in procedure TCommonCalendar.SetRange :-(
Delphi-Quellcode:
procedure TCommonCalendar.SetRange(MinVal, MaxVal: TDate);
var
  STA: packed array[1..2] of TSystemTime;
  Flags: DWORD;
  TruncDate, TruncEnd, TruncMin, TruncMax: Int64;
begin
  Flags := 0;
  TruncMin := Trunc(MinVal);
  TruncMax := Trunc(MaxVal);
  TruncDate := Trunc(FDateTime);
  TruncEnd := Trunc(FEndDate);
  if TruncMin <> 0 then
  begin
    if TruncDate < TruncMin then SetDate(MinVal);
    if TruncEnd < TruncMin then SetEndDate(MinVal);
    Flags := Flags or GDTR_MIN;
    DateTimeToSystemTime(TruncMin, STA[1]);
  end;
  // das MaxDate ist in Variable TruncMax
  // da beim "Löschen" von MaxDate der Wert = 0 ist,
  // wird folgende IF-Abfrage nicht ausgeführt
  // also hat das Setzen von MaxDate auf 0 keine Auswirkung
  if TruncMax <> 0 then
  begin
    if TruncDate > TruncMax then SetDate(MaxVal);
    if TruncEnd > TruncMax then SetEndDate(MaxVal);
    Flags := Flags or GDTR_MAX;
    DateTimeToSystemTime(TruncMax, STA[2]);
  end;
  if HandleAllocated then
    if not MsgSetRange(Flags, @STA[1]) then
      raise ECommonCalendarError.CreateRes(@sFailSetCalMinMaxRange);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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