1

CalColors を介して TMonthCalendar の設定を変更しようとしましたが、うまくいきません。設計時でも実行時でもありません。カレンダーは変わらず。

更新:
誰かが Quality Central でまったく同じ問題を報告したようです:
http://qc.embarcadero.com/wc/qcmain.aspx?d=53494

4

2 に答える 2

7

デビッドが言うように、TMonthCalendar内部ではMCM_SETCOLORメッセージを使用してコントロールの色を設定しますが、視覚スタイルがアクティブな場合、このメッセージは効果がありません。回避策として、SetWindowTheme 関数を使用して、このコントロールのみのビジュアル スタイルを無効にすることができます。

このサンプルを試してください:

uses
  UxTheme;

   SetWindowTheme(MonthCalendar1.Handle, '', '');
   MonthCalendar1.CalColors.MonthBackColor:=clWebKhaki;
   MonthCalendar1.CalColors.TitleBackColor:=clWebDarkOrange;

ここに画像の説明を入力

于 2013-01-04T13:39:52.047 に答える
3

この動作は設計どおりです。このコントロールは、Win32コントロールのラッパーです。のドキュメントをご覧くださいMCM_SETCOLOR。備考の中にこの声明があります。

ビジュアルスタイルがアクティブな場合、wParamがMCSC_BACKGROUNDの場合を除いて、このメッセージは効果がありません。

MCSC_BACKGROUNDVista以降では、に対応するを設定しようとしても効果がないと思いますCalColors.BackColor

アプリケーションで視覚スタイルを無効にすると、で指定された設定が実際にCalColors適用されていることがわかります。

于 2013-01-04T11:41:27.763 に答える