【问题标题】:How to change the color of TButton?如何更改 TButton 的颜色?
【发布时间】:2014-04-15 11:43:36
【问题描述】:

在 "Borland" C++ Builder 6 中,如何更改按钮颜色 (TButton)?

我试过这种方式

button->Font->Color = clRed;

但它不起作用。

【问题讨论】:

    标签: button c++builder


    【解决方案1】:

    TButton 是标准 Win32 BUTTON 控件的薄包装器,它的颜色来自操作系统,而不是 VCL。您不能将Color 设置为标准TButton。 Color 属性之所以存在,只是因为它是从基类继承而来的。

    话虽如此,Win32 BUTTON 确实支持 BS_OWNERDRAW 样式。您可以使用SetWindowLong() 启用它,然后将按钮子类化以处理WM_DRAWITEM 消息,以便您可以随意绘制按钮。

    这是一个示例组件,它派生自 TButton 并实现 BS_OWNERDRAW 以公开工作颜色属性:TColorButton

    【讨论】:

    【解决方案2】:

    使用 TPanel,设置颜色和斜面以匹配按钮外观。 使用 OnClick 事件,瞧,它是颜色按钮 ~;O-)

    【讨论】:

    • 乍一看这是个好主意,但无论您对斜角设置做什么,面板看起来都不像表单上的常规 TButtons。
    【解决方案3】:

    如果你想改变字体标题的颜色,TBitBtn 确实有效。上一个答案说它没有收到键盘焦点。我不确定那个人是什么意思——但我刚刚创建了一个包含其他几个对象的表单,包括一个 BitBtn——设置我的标签顺序,它确实会聚焦。我可以按下键盘的空格键来按下按钮,我可以通过在所需字母前面放置一个 & 符号来添加一个 ALT 热键。对于按钮的所有意图和目的,它的行为似乎就像 Win32 控件 - 但使用 CoLoR - 是的!是的,我正在使用 Borland C++ Builder 6。

    • 原子键-

    【讨论】:

      【解决方案4】:

      另一个选项是使用TBitBtn,它不是 WIN32 控件的包装,而是完全由 VCL 绘制。
      因为它是一个图形控件,所以一切都会按照您的预期绘制。
      TBitBtn 甚至可以接收键盘焦点,所以它应该可以工作。

      【讨论】:

      • 其实TBitBtn确实接收键盘焦点,所以这其实是一个解决问题的办法。
      • @dummzeuch 可能是与 TSpeedButton 混淆
      猜你喜欢
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 2020-09-16
      • 2011-03-23
      • 2011-01-02
      • 2012-10-16
      • 2012-06-01
      • 2021-10-23
      相关资源
      最近更新 更多