我嘗試通過CalColors更改TMonthCalendar的設置,但它不起作用。無論是在設計時還是運行時。日曆保持不變。無法爲TMonthCalendar設置顏色
更新:
看起來像有人確切地報道了中央品質同一個問題:
http://qc.embarcadero.com/wc/qcmain.aspx?d=53494
我嘗試通過CalColors更改TMonthCalendar的設置,但它不起作用。無論是在設計時還是運行時。日曆保持不變。無法爲TMonthCalendar設置顏色
更新:
看起來像有人確切地報道了中央品質同一個問題:
http://qc.embarcadero.com/wc/qcmain.aspx?d=53494
此行爲是作爲設計。該控件是Win32控件的一個包裝。查看MCM_SETCOLOR
的文檔。在備註中你可以找到這個陳述。
如果視覺樣式處於活動狀態,除wParam爲MCSC_BACKGROUND以外,此消息不起作用。
我認爲,在Vista和更高版本,甚至試圖建立MCSC_BACKGROUND
,相當於CalColors.BackColor
,沒有任何效果。
如果您在應用程序中禁用視覺樣式,您確實可以看到應用了CalColors
中指定的設置。
正如大衛說,TMonthCalendar
internaly使用MCM_SETCOLOR
消息設置控制的顏色,但在視覺樣式活躍此消息尚未影響。作爲解決方法,您可以使用SetWindowTheme
函數僅禁用此控件上的視覺樣式。
試試這個示例:
uses
UxTheme;
SetWindowTheme(MonthCalendar1.Handle, '', '');
MonthCalendar1.CalColors.MonthBackColor:=clWebKhaki;
MonthCalendar1.CalColors.TitleBackColor:=clWebDarkOrange;
要添加到這一點,你需要這樣的設置將被重新應用,如果窗口句柄調用'SetWindowTheme'在重寫'CreateWnd'被重新創建。 –