...Show Week Numbers in a TDateTimePicker?

Author: unknown

Category: VCL

uses
  
CommCtrl;

type
  
THackCommonCalendar = class(TCommonCalendar);

  {...}

procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
var
  
Style: Integer;
  ReqRect: TRect;
  MaxTodayWidth: Integer;
begin
  with 
THackCommonCalendar(Sender as TDateTimePicker) do
  begin
    
// set style to include week numbers
    
Style := GetWindowLong(CalendarHandle, GWL_STYLE);
    SetWindowLong(CalendarHandle, GWL_STYLE, Style or MCS_WEEKNUMBERS);
    FillChar(ReqRect, SizeOf(TRect), 0);
    // get required rect
    
Win32Check(MonthCal_GetMinReqRect(CalendarHandle, ReqRect));
    // get max today string width
    
MaxTodayWidth := MonthCal_GetMaxTodayWidth(CalendarHandle);
    // adjust rect width to fit today string
    
if MaxTodayWidth > ReqRect.Right then
      
ReqRect.Right := MaxTodayWidth;
    // set new height & width
    
SetWindowPos(CalendarHandle, 0, 0, 0, ReqRect.Right, ReqRect.Bottom,
      SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOZORDER);
  end;
end;

 

printed from
www.swissdelphicenter.ch
developers knowledge base