Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Re: Maxdate beim DateTimePicker wieder entfernen
19. Jan 2006, 13:27
Zitat von lordcroc:
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;
Andreas
|
|
Zitat
|