如何更改TDateTimePicker的颜色
日期和时间选择器可以有一个颜色:

通常这是通过设置颜色来完成的。
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.Color := clLime;
end;但是,当使用Date and Time Picker Control的版本6时,颜色不再起作用:

我尝试使用SetWindowTheme禁用TDateTimePicker的样式
procedure TForm1.FormCreate(Sender: TObject);
begin
UxTheme.SetWindowTheme(DateTimePicker1.Handle, '', '');
DateTimePicker1.Color := clLime;
end;但这让它很生气:

如何更改DateTimePicker的颜色
我本来打算去修补VCL的:
procedure TDateTimePicker.CreateWnd;
var
LChecked: Boolean;
begin
LChecked := FChecked;
inherited CreateWnd;
SetChecked(LChecked);
if Length(FFormat) > 0 then
DateTime_SetFormat(Handle, FFormat);
//20140911 Fix the .Color property not working
if Self.HandleAllocated then
Winapi.UxTheme.SetWindowTheme(Self.Handle, '', '');
end;但是禁用窗口的主题并不能做到这一点。
奖金喋喋不休
您可以更改版本6 TComboBox的颜色,其主题样式仍然适用于它:

因此,这并不是通用控件版本6或视觉样式的基本限制。
复制?
我想没有。
这些问题的答案不允许你改变颜色,这就是我需要做的。
更荒谬的是,认为这些答案适用,因为风格挂钩做任何事情,只有当你使用的是非标准(德尔菲)风格。
发布于 2014-09-11 18:04:33
如何更改TDateTimePicker的颜色?
对于v6 comctl32来说,你不能。
因此,这并不是通用控件版本6或视觉样式的基本限制。
嗯,是的。是的,v6 comctl32允许用户为组合框指定颜色。但不是约会时间选择者吗?
为了获得您想要的结果,您需要通过禁用控件的主题并同时处理WM_ERASEBKGND和WM_PAINT来接管控件的绘制。正如罗德里戈在这里所演示的:Style properties for TDateTimePicker。老实说,这并不是一堆有趣的东西。你需要画出整个控件。
这是您需要习惯使用v6 comctl32的东西。它真的想要控制控制的主题和风格。如果你想改变这一点,那么你的自由要比过去少得多。
发布于 2015-05-01 16:51:54
使用来自JVCL库的TJvDatePickerEdit。它可以显示已定义的背景色,即使您使用的是主题。
https://stackoverflow.com/questions/25791795
复制相似问题