如何更改 TCheckBox、TRadioButton、TGroupBox 上的标题字体颜色?

问题描述 投票:0回答:3

我不知道我的问题是什么,但我无法在 DEx2 中为 TCheckBox、TRadioButton、TGroubBox 和 TRadioGroup 等控件设置字体颜色。我是在 IDE 中还是以编程方式执行此操作并不重要。

我已将表单颜色设置为 clBlack,并希望我的标题为 clWhite,但它们不会呈现除 clBlack 之外的任何颜色。当我在窗体的 OnShow 事件上分配颜色并在调试器中单步执行它时,它会显示我分配给它的值,但在屏幕上它仍然是黑色的。

我没有使用样式或其他任何东西。有什么想法吗?

以下是表格样本:
(来源:skippix.us

delphi properties colors delphi-xe2 vcl
3个回答
7
投票

当您在应用程序中使用 Windows 主题时,大多数自定义设置(例如字体颜色)都会被忽略。作为解决方法,根据组件,您可以拥有绘制控件(仅当支持此功能时),重写绘制方法以便在字体中使用您自己的颜色(

TRadioGroup
TGroupBox
),以及对于像
TCheckBox
TRadioButton
这样的组件(它们是 WinAPI 控件包装器),您必须拦截
WM_PAINT
windows 消息并实现您自己的代码来绘制控件。

同样从 Delphi-xe2 开始,您可以使用 vcl 样式,它允许您更改控件的外观,从这里(以及可能的情况下)您可以修改样式挂钩以应用您自己的字体颜色和其他自定义设置。


2
投票

一个简单且更容易的解决方法是创建一个没有标题的复选框并在其后面添加一个标签。您可以轻松更改标签的颜色。您还可以创建一个新组件,将标签绑定到复选框本身。这就是 Delphi 2007 对我有用的方法。


0
投票

它将在以下设置下工作: 项目选项 > 应用程序 > 运行时主题 = 无

© www.soinside.com 2019 - 2024. All rights reserved.