DELPHI - 如何在VCL表单应用程序中更改TButton的背景颜色?

5
在我的Delphi VCL窗体应用程序中,我需要更改TButton的背景颜色。是否有一种方法可以在不使用第三方组件的情况下应用此更改?
谢谢。

1
一个继承自TButton的示例组件源代码可以在这里找到:http://delphi.about.com/od/vclwriteenhance/l/aa061104a.htm - bummi
1
@bummi,链接中没有源代码。 - Mehmet Fide
3个回答

7

您不能直接更改TButton组件的颜色,而必须使用第三方组件或绘制按钮 (BS_OWNERDRAW)。


我该如何实现按钮的绘制? - stacker
答案中的链接涵盖了那个。你需要响应 WM_DRAWITEM - David Heffernan

2
  1. 创建一个面板。
  2. 将面板的颜色更改为任何颜色。
  3. 清空面板的标题。
  4. 在面板内创建一个SpeedButton。
  5. 将SpeedButton的Flat属性设置为True。
  6. 将SpeedButton的Align属性设置为alClient。
  7. 哇!这就是带有颜色的按钮!

1
10.2 Tokyo。这只在设计模式下有效。当我在源代码中尝试时,颜色会消失。 - sevenOfNine

0

好的提示,谢谢你,Xel Naga!

您还可以在面板上放置图像,使您的按钮更加美观。 这里我添加了一个黄色玻璃按钮的图像。 要获得圆角,您可以将面板形状设置为如下 >>

SetWindowRgn(Panel1.Handle, CreateRoundRectRgn(0, 0, Panel1.Width, Panel1.Height, 65, 40), True);

enter image description here enter image description here enter image description here enter image description here

接下来的一步,您可以添加3个图像(叠放在彼此之上)以用于按钮状态:鼠标悬停(OnMouseEnter),按钮按下(OnMouseDown)和按钮禁用。只需更改图像的可见状态以显示您想要看到的那个...

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