无法为TMonthCalendar设置颜色

WeG*_*ars 1 delphi

我尝试通过CalColors更改TMonthCalendar的设置,但它不起作用.无论是在设计时还是在运行时.日历保持不变.

更新:
看起来有人在Quality Central上报告了同样的问题:http:
//qc.embarcadero.com/wc/qcmain.aspx?d = 5394

RRU*_*RUZ 7

正如David所说,TMonthCalendarinternaly使用MCM_SETCOLOR消息来设置控件的颜色,但是当视觉样式处于活动状态时,此消息不起作用.作为解决方法,您可以使用该SetWindowTheme 函数仅禁用此控件上的视觉样式.

试试这个样本:

uses
  UxTheme;

   SetWindowTheme(MonthCalendar1.Handle, '', '');
   MonthCalendar1.CalColors.MonthBackColor:=clWebKhaki;
   MonthCalendar1.CalColors.TitleBackColor:=clWebDarkOrange;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 要添加到此,您需要在重写的`CreateWnd`中调用`SetWindowTheme`,以便在重新创建窗口句柄时重新应用该设置. (2认同)