Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 12: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
  Mit Zitat antworten Zitat