![]() |
![]() ![]() ![]() ![]() |
|
Показывать номера недели в TDateTimePickerDelphi , Компоненты и Классы , TDateTimePickerПоказывать номера недели в TDateTimePicker
Оформил: DeeCo
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 в Delphi. Вот подробное описание того, что он делает:
Обход необходим потому, что контрол TDateTimePicker не поддерживает отображение номеров недель по умолчанию. Вот альтернативное решение, использующее подход к рисованию: Вместо изменения стиля underlying окна или adjustments прямоугольника размера, вы можете нарисовать номера недель сами в контроле TDateTimePicker. Вы можете переопределить метод DrawItem и добавить код для рисования номеров недель. Этот подход может требовать больше усилий, но предоставляет более гибкость. Вот простой пример: Код рисует номера недель в контроле TDateTimePicker, переопределяя метод DrawItem. Вам нужно будет adjust позицию рисования и настройки шрифта в соответствии с вашими требованиями. Обратите внимание, что это только простой пример, и вы можете хотеть customize appearance номеров недель далее. В статье описывается модификация компонента TDateTimePicker для отображения номеров недели в календаре. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: TDateTimePicker ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||