我不知道我的问题是什么,但我无法在DEx2中为TCheckBox,TRadioButton,TGroubBox和TRadioGroup等控件设置字体颜色.如果我在IDE中或以编程方式执行它并不重要.
我已将表单颜色设置为clBlack,并希望我的标题是clWhite,但它们不会渲染任何颜色,而是clBlack.当我在表单的OnShow事件上分配颜色并在调试器中逐步执行它时,它会显示我分配给它的值,但在屏幕上它仍然是黑色.
我没有使用样式或其他任何东西.有任何想法吗?
这是一个示例表单:
white on black example http://www.skippix.us/temp/Delphi-Font-Problem.bmp
解决方法
在应用程序中使用Windows主题时,将忽略大多数自定义设置(如字体颜色).作为变通方法并且取决于组件,您可以拥有控件(仅当支持此功能时),覆盖paint方法以便在字体(
TRadioGroup
,TGroupBox
)中使用您自己的颜色,以及对于
TCheckBox
和
TRadioButton
等组件(其中是WinAPI控件包装器)你必须拦截
WM_PAINT
窗口消息并实现自己的代码来绘制控件.
同样从Delphi-xe2开始,你可以使用vcl styles来改变控件的外观,从这里(可能的话)你可以修改样式钩子来应用你自己的字体颜色和其他自定义.