8

我不知道我的问题是什么,但我无法在 DEx2 中为 TCheckBox、TRAdioButton、TgroubBox 和 TRadioGroup 等控件设置字体颜色。我是在 IDE 中还是以编程方式执行此操作都没有关系。

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

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

这是一个示例表格: 黑底白字示例 http://www.skippix.us/temp/Delphi-Font-Problem.bmp

4

3 回答 3

7

当您在应用程序中使用 Windows 主题时,大多数自定义设置(如字体颜色)都会被忽略。作为解决方法并根据组件,您可以拥有控件(仅当支持此功能时),覆盖paint方法以便在字体(TRadioGroupTGroupBox)中使用您自己的颜色,以及像TCheckBoxand这样的组件TRadioButton(它们是WinAPI控件包装器) 你必须拦截WM_PAINTwindows消息并实现你自己的代码来绘制控件。

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

于 2012-09-03T14:08:15.000 回答
2

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

于 2018-07-19T12:20:13.317 回答
0

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

于 2019-08-20T06:36:26.393 回答