CalColors を介して TMonthCalendar の設定を変更しようとしましたが、うまくいきません。設計時でも実行時でもありません。カレンダーは変わらず。
更新:
誰かが Quality Central でまったく同じ問題を報告したようです:
http://qc.embarcadero.com/wc/qcmain.aspx?d=53494
CalColors を介して TMonthCalendar の設定を変更しようとしましたが、うまくいきません。設計時でも実行時でもありません。カレンダーは変わらず。
更新:
誰かが Quality Central でまったく同じ問題を報告したようです:
http://qc.embarcadero.com/wc/qcmain.aspx?d=53494
デビッドが言うように、TMonthCalendar
内部ではMCM_SETCOLOR
メッセージを使用してコントロールの色を設定しますが、視覚スタイルがアクティブな場合、このメッセージは効果がありません。回避策として、SetWindowTheme
関数を使用して、このコントロールのみのビジュアル スタイルを無効にすることができます。
このサンプルを試してください:
uses
UxTheme;
SetWindowTheme(MonthCalendar1.Handle, '', '');
MonthCalendar1.CalColors.MonthBackColor:=clWebKhaki;
MonthCalendar1.CalColors.TitleBackColor:=clWebDarkOrange;
この動作は設計どおりです。このコントロールは、Win32コントロールのラッパーです。のドキュメントをご覧くださいMCM_SETCOLOR
。備考の中にこの声明があります。
ビジュアルスタイルがアクティブな場合、wParamがMCSC_BACKGROUNDの場合を除いて、このメッセージは効果がありません。
MCSC_BACKGROUND
Vista以降では、に対応するを設定しようとしても効果がないと思いますCalColors.BackColor
。
アプリケーションで視覚スタイルを無効にすると、で指定された設定が実際にCalColors
適用されていることがわかります。