現在、Delphi (Professional、バージョン 7.0、ビルド 4.453) でプログラムを作成しています。
もともと、私は TDateTimePicker ドロップダウン カレンダーでいくつかの日付を太字にしたいと考えていました。しかし、すぐにそれができないことがわかったので、TDateTimePicker ドロップダウン カレンダーの上に TMonthCalendar (太字の日付を指定できます) を重ねようとしています (単純ですよね?)。
しかし、それほど速くはありません。どういうわけか、TDateTimePicker ドロップダウン カレンダーは常に TMonthCalendar の上に表示されます。代わりに TMonthCalendar を一番上に表示したいと思います。
これが私ができると思ったことです:
- TMonthCalendar を TDateTimePicker の下に配置します (ドロップダウンが通常表示される場所)。
- TDateTimePicker の OnDropDown イベントで TMonthCalendar を可視化する
- TDateTimePicker の OnCloseUp イベントで TMonthCalendar を非表示にします
何が起こっているかは次のとおりです。
- TDateTimePicker のドロップダウン トライアングルをクリックすると、TMonthCalendar が表示されます (イェイ!)。
- ただし、TDateTimePicker ドロップダウン カレンダーが常に優先されます (TMonthCalendar は常にドロップダウンの下にあります)。
- したがって、TDateTimePicker ドロップダウンで日付を選択するまで、TMonthCalendar で何もできません (TMonthCalendar が下にあるため、太字の日付も表示されません)。
これが私が試したことです:
- TDateTimePicker の OnDropDown イベントでの TMonthCalendar.Show (これにより、表示されたものはすべて一番上に表示されるはずです)。しかし、これは何もしません。
- DateMode: dmDropDown -> DateMode: TDateTimePicker の OnDropDown で dmUpDown を実行します (したがって、ドロップダウン カレンダーを無効にします)。ただし、MonthCalendar の任意の場所 (上部の両側にある [月の変更] ボタンを含む) をクリックすると、MonthCalendar が非表示になるため、これには問題があります (MonthCalendarOnClick で "if MonthCalendar.Visible then visible := false" を実行しています)。
解決策はおそらく簡単だと思いますが、これを行う方法が思いつきません。これまでのところ、私が思いついたいくつかのアイデアは機能していません:(だから、私がやりたいことをする方法を思いつくことができれば、私を助けてください.
前もって感謝します!:)