gpt4 book ai didi

delphi - TMonthCalendar 和 Delphi 样式 (Delphi XE2)

转载 作者:行者123 更新时间:2023-12-03 15:48:48 31 4
gpt4 key购买 nike

TMontCalendar 似乎是一个 Windows 包装器,因此它不会受到新的 VCL 样式的影响,您知道解决方案吗?

最佳答案

TMonthCalendarMONTHCAL_CLASS 的包装据我所知,这个控件不支持所有者绘制,但提供 CalColors属性允许您设置日历元素的颜色,但此属性仅在未启用主题时有效。所以首先你必须调用SetWindowTheme函数禁用日历中的主题,然后您可以设置颜色以匹配 vcl 样式。

类似这样的事情

uses
Vcl.Styles,
Vcl.Themes,
uxTheme;

Procedure SetVclStylesColorsCalendar( MonthCalendar: TMonthCalendar);
Var
LTextColor, LBackColor : TColor;
begin
uxTheme.SetWindowTheme(MonthCalendar.Handle, '', '');//disable themes in the calendar
MonthCalendar.AutoSize:=True;//remove border

//get the vcl styles colors
LTextColor:=StyleServices.GetSystemColor(clWindowText);
LBackColor:=StyleServices.GetSystemColor(clWindow);

//set the colors of the calendar
MonthCalendar.CalColors.BackColor:=LBackColor;
MonthCalendar.CalColors.MonthBackColor:=LBackColor;
MonthCalendar.CalColors.TextColor:=LTextColor;
MonthCalendar.CalColors.TitleBackColor:=LBackColor;
MonthCalendar.CalColors.TitleTextColor:=LTextColor;
MonthCalendar.CalColors.TrailingTextColor:=LTextColor;
end;

结果将是这样的

enter image description here enter image description here

关于delphi - TMonthCalendar 和 Delphi 样式 (Delphi XE2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089189/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com