【发布时间】:2014-04-15 11:43:36
【问题描述】:
在 "Borland" C++ Builder 6 中,如何更改按钮颜色 (TButton)?
我试过这种方式
button->Font->Color = clRed;
但它不起作用。
【问题讨论】:
标签: button c++builder
在 "Borland" C++ Builder 6 中,如何更改按钮颜色 (TButton)?
我试过这种方式
button->Font->Color = clRed;
但它不起作用。
【问题讨论】:
标签: button c++builder
TButton 是标准 Win32 BUTTON 控件的薄包装器,它的颜色来自操作系统,而不是 VCL。您不能将Color 设置为标准TButton。 Color 属性之所以存在,只是因为它是从基类继承而来的。
话虽如此,Win32 BUTTON 确实支持 BS_OWNERDRAW 样式。您可以使用SetWindowLong() 启用它,然后将按钮子类化以处理WM_DRAWITEM 消息,以便您可以随意绘制按钮。
这是一个示例组件,它派生自 TButton 并实现 BS_OWNERDRAW 以公开工作颜色属性:TColorButton
【讨论】:
TColorButton源:delphi.about.com/od/vclwriteenhance/l/aa061104a.htm
使用 TPanel,设置颜色和斜面以匹配按钮外观。 使用 OnClick 事件,瞧,它是颜色按钮 ~;O-)
【讨论】:
如果你想改变字体标题的颜色,TBitBtn 确实有效。上一个答案说它没有收到键盘焦点。我不确定那个人是什么意思——但我刚刚创建了一个包含其他几个对象的表单,包括一个 BitBtn——设置我的标签顺序,它确实会聚焦。我可以按下键盘的空格键来按下按钮,我可以通过在所需字母前面放置一个 & 符号来添加一个 ALT 热键。对于按钮的所有意图和目的,它的行为似乎就像 Win32 控件 - 但使用 CoLoR - 是的!是的,我正在使用 Borland C++ Builder 6。
【讨论】:
另一个选项是使用TBitBtn,它不是 WIN32 控件的包装,而是完全由 VCL 绘制。
因为它是一个图形控件,所以一切都会按照您的预期绘制。TBitBtn 甚至可以接收键盘焦点,所以它应该可以工作。
【讨论】: