// Getestet mit D4 unter XP

// Mit dem folgenden Code wird erreicht, dass beim Dropdown des
// TDateTimePicker auch Wochennummern angezeigt werden.

procedure TForm1.DateTimePicker1DropDown(Sender: TObject); 
var 
  hn: THandle; 
  rct: TRect; 
begin 
  hn := SendMessage(DateTimePicker1.Handle, $1008, 0, 0); 
  SetWindowLong(hn, GWL_STYLE, GetWindowLong(hn, GWL_STYLE) or 4); 
  SendMessage(hn, $1009, 0, integer(@rct)); 
  MoveWindow(hn, 0, 0, rct.Right + 2, rct.Bottom + 2, true); 
end;

// Wenn man den Code noch etwas erweitert, können mehrere Monate
//
(bis 1 Jahr) angezeigt werden. Dabei muss man darauf achten, dass
// nicht zu viele Monate senkrecht untereinander stehen, da sonst der
// Kalender nach oben wegklappt und dann zum Teil unleserlich ist.

var 
  wochennummer: boolean = false; 
  waagerecht: integer = 6; 
  senkrecht: integer = 2; 
 
procedure TForm1.DateTimePicker1DropDown(Sender: TObject); 
var 
  hn: THandle; 
  rct: TRect; 
  z: integer; 
begin 
  if (waagerecht * senkrecht <= 12) and (waagerecht * senkrecht > 0) 
    and (senkrecht <= 4) then begin 
    case senkrecht of 
      2: z := 4; 
      3: z := 7; 
      4: z := 8; 
    else z := -4; 
    end; 
    hn := SendMessage(DateTimePicker1.Handle, $1008, 0, 0); 
    if wochennummer then 
      SetWindowLong(hn, GWL_STYLE, GetWindowLong(hn, GWL_STYLE) or 4); 
    SendMessage(hn, $1009, 0, integer(@rct)); 
    MoveWindow(hn, 0, 0, (rct.Right + 4) * waagerecht, 
      (rct.Bottom - z) * senkrecht, true); 
  end; 
end;




 

Zugriffe seit 6.9.2001 auf Delphi-Ecke