Показывать номера недели в TDateTimePicker



Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

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;

Далее: Свой формат для TDateTimePicker »»