1

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

更新:
看起来有人在质量中心报告了完全相同的问题: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。

我认为在 Vista 及更高版本中,即使尝试设置MCSC_BACKGROUND对应于 的CalColors.BackColor,也没有效果。

如果您在应用程序中禁用视觉样式,您确实可以看到应用了中指定的设置CalColors

于 2013-01-04T11:41:27.763 回答