如何更改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或视觉样式的基本限制。
我想不是。
这些问题的答案不会让你改变颜色;这就是我需要做的事情。
建议这些答案适用更加荒谬,因为如果您使用非标准(Delphi)风格,Style Hooks只会做任何事情。
答案 0 :(得分:2)
如何更改TDateTimePicker的颜色?
对于v6 comctl32,你不能。
因此,它不是常见控件版本6或视觉样式的基本限制。
嗯,是的。是的,v6 comctl32允许用户为组合框指定颜色。但不是约会时间选择器吗?
为了获得您想要的结果,您需要通过禁用控件的主题并处理WM_ERASEBKGND
和WM_PAINT
来控制控件的绘制。罗德里戈在这里演示:Style properties for TDateTimePicker。说实话,这并不是一大堆乐趣。你需要绘制整个控件。
这是您需要习惯v6 comctl32的东西。它真的想要掌控控件的主题和风格。如果你想改变那个,那么你的自由远远少于过去的自由。
答案 1 :(得分:0)
使用JVCL库中的TJvDatePickerEdit。它可以显示定义的背景颜色,即使您正在使用主题。