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

8
我不知道我的问题在哪里,但是我无法为DEx2中的控件如TCheckBox、TRadioButton、TGroubBox和TRadioGroup设置字体颜色。无论是在IDE中还是通过编程实现,都没有任何效果。 我已将表单颜色设置为clBlack,并希望我的标题显示为clWhite,但它们只显示clBlack的颜色。当我在一个表单的OnShow事件中分配颜色并通过调试器逐步执行时,它会显示我分配的值,但在屏幕上仍然是黑色的。 我没有使用样式或其他任何东西。有任何想法吗? 这是一个示例表单: 白色背景黑色字体示例 http://www.skippix.us/temp/Delphi-Font-Problem.bmp
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7
当您在应用程序中使用Windows主题时,大多数自定义设置(如字体颜色)都会被忽略。作为解决方法,并根据组件,您可以对控件进行自绘(仅在支持此功能时),重写绘制方法以使用自己的字体颜色(TRadioGroup, TGroupBox),对于像TCheckBoxTRadioButton这样的组件(它们是WinAPI控件包装器),您必须拦截WM_PAINT Windows消息并实现自己的代码来绘制控件。 自Delphi-xe2开始,您可以使用vcl样式来更改控件的外观,从这里(并且在可能的情况下),您可以修改样式挂钩以应用自己的字体颜色和其他自定义。

谢谢您的回复!我会尝试使用样式方法,因为解决方法可能比我现在想要承担的工作还要多...我会告诉您发生了什么。 - skippix

2

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


1
这会破坏您的安装程序的可访问性 - Martin Prikryl
@MartinPrikryl 为什么? - delphirules
3
视力有问题的人使用屏幕阅读器和类似工具时,期望复选框有自己的标签。 - Martin Prikryl

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


欢迎来到 Stack Overflow!请编辑您的答案并添加一些解释。如需更多指导,请参阅 https://stackoverflow.com/help/how-to-answer。 - B--rian
是的,但是这样做可能会导致治疗比实际问题更严重。这很可能不值得。 - Andreas Rejbrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,