![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Показывать номера недели в 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 |