В настоящее время я создаю программу с Delphi (Professional, Version 7.0; Build 4.453).Delphi TDateTime Смелые дни с TMonthCalendar
Первоначально, я хотел бы выделить некоторые даты в раскрывающемся календаре TDateTimePicker; но я быстро обнаружил, что не могу - поэтому я пытаюсь пересечь TMonthCalendar (с которым вы можете делать смелые даты) поверх раскрывающегося календаря TDateTimePicker (просто, правильно?)
Но не так быстро : каким-то образом, раскрывающийся календарь TDateTimePicker всегда отображается в верхней части моего TMonthCalendar. Я бы хотел, чтобы на экране появился TMonthCalendar.
Вот что я понял, что я мог сделать:
- Позиция TMonthCalendar под TDateTimePicker (где его выпадающий обычно показывают)
- сделать видимым TMonthCalendar на OnDropDown событии TDateTimePicker в
- Скрыть TMonthCalendar на OnCloseUp событии TDateTimePicker в
Вот что происходит:
- Когда я нажимаю на ниспадающего треугольник на TDateTimePicker, то TMonthCalendar становится видимым (яй!)
- Но календарь TDateTimePicker выпадающий всегда превалирует (TMonthCalendar всегда под выпадающего меню)
- Поэтому я могу» t ничего не делайте с TMonthCalendar, пока я не выбрал дату в выпадающем списке TDateTimePicker (я даже не вижу полужирных дат, потому что TMonthCalendar находится внизу).
Вот что я пробовал:
- TMonthCalendar.Show на OnDropDown случае TDateTimePicker (это должно принести все, что шоу-е изд к началу). Но это ничего не делает.
- Do DateMode: dmDropDown -> DateMode: dmUpDown на OnDropDown от TDateTimePicker (таким образом отключив раскрывающийся календарь). Но у этого есть проблемы, так как нажатие в любом месте MonthCalendar (включая кнопки «Месяц изменения по обе стороны») сделает MonthCalendar невидимым (я делаю «если MonthCalendar.Visible, то видимо: = false» в MonthCalendarOnClick)
Я знаю, что решение, вероятно, простое, но я не могу придумать, как это сделать. Пока что несколько идей, которые я придумал, не работают :( Итак, если вы можете придумать способ сделать то, что я хочу, пожалуйста, помогите мне.
Спасибо заранее! :)
Не идите по этой дороге. «TMonthCalendar» - это тонкая оболочка вокруг календаря Windows32. 'TDateTimePicker' - это тонкая оболочка вокруг элемента управления выбора времени даты Win32, который внутренне создает календарь в месяц, когда это необходимо. Возможно (и не все так сложно) получить доступ к этому внутреннему календарю месяца и делать с ним все, что вы хотите, включая все, что вы можете сделать с помощью «TMonthCalendar». Просто посмотрите, как это делает «TMonthCalendar», а затем сделайте то же самое для своего собственного контроля. (Я бы опубликовал пример, но я не в системе, где я мог бы проверить его прямо сейчас.) – hvd
Этот подход никогда не даст хороших результатов –
Возможный дубликат, ['Как вы программно отмечаете дату в Delphi's Календарь TDateTimePicker? '] (Http://stackoverflow.com/q/7210565/576719). –