首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变TDateTimePicker的颜色?

如何改变TDateTimePicker的颜色?
EN

Stack Overflow用户
提问于 2014-09-11 15:43:24
回答 2查看 3.1K关注 0票数 3

如何更改TDateTimePicker的颜色

日期和时间选择器可以有一个颜色:

通常这是通过设置颜色来完成的。

代码语言:javascript
复制
procedure TForm1.FormCreate(Sender: TObject);
begin
   DateTimePicker1.Color := clLime;
end;

但是,当使用Date and Time Picker Control的版本6时,颜色不再起作用:

我尝试使用SetWindowTheme禁用TDateTimePicker的样式

代码语言:javascript
复制
procedure TForm1.FormCreate(Sender: TObject);
begin
   UxTheme.SetWindowTheme(DateTimePicker1.Handle, '', '');
   DateTimePicker1.Color := clLime;
end;

但这让它很生气:

如何更改DateTimePicker的颜色

我本来打算去修补VCL的:

代码语言:javascript
复制
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或视觉样式的基本限制。

复制?

我想没有。

  • 这个问题涉及如何使DateTime选择器遵守active Delphi样式。
  • 这个问题是为了使DateTime选择器而不是尊重active Delphi风格。

这些问题的答案不允许你改变颜色,这就是我需要做的。

更荒谬的是,认为这些答案适用,因为风格挂钩做任何事情,只有当你使用的是非标准(德尔菲)风格。

EN

回答 2

Stack Overflow用户

发布于 2014-09-11 18:04:33

如何更改TDateTimePicker的颜色?

对于v6 comctl32来说,你不能。

因此,这并不是通用控件版本6或视觉样式的基本限制。

嗯,是的。是的,v6 comctl32允许用户为组合框指定颜色。但不是约会时间选择者吗?

为了获得您想要的结果,您需要通过禁用控件的主题并同时处理WM_ERASEBKGNDWM_PAINT来接管控件的绘制。正如罗德里戈在这里所演示的:Style properties for TDateTimePicker。老实说,这并不是一堆有趣的东西。你需要画出整个控件。

这是您需要习惯使用v6 comctl32的东西。它真的想要控制控制的主题和风格。如果你想改变这一点,那么你的自由要比过去少得多。

票数 2
EN

Stack Overflow用户

发布于 2015-05-01 16:51:54

使用来自JVCL库的TJvDatePickerEdit。它可以显示已定义的背景色,即使您使用的是主题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25791795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档