我尝试通过 CalColors 更改 TMonthCalendar 的设置,但它不起作用。无论是在设计时还是运行时。日历保持不变。
更新:
看起来有人在质量中心报告了完全相同的问题: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。
我认为在 Vista 及更高版本中,即使尝试设置MCSC_BACKGROUND
对应于 的CalColors.BackColor
,也没有效果。
如果您在应用程序中禁用视觉样式,您确实可以看到应用了中指定的设置CalColors
。