如何設置Button的背景顏色?急!急!!!(100分)

  • 主题发起人 主题发起人 delphiprogramer
  • 开始时间 开始时间
D

delphiprogramer

Unregistered / Unconfirmed
GUEST, unregistred user!
大家都知道 Button 的背景顏色是不能改變的.但我在做一個程序中需要這一特性,在Button
按鈕得到焦點的時候,要改變其背景顏色. 請教各位高手,如何給Button添加一個 Color屬性
(Button.Color).我發現TCheckBox有這個Color屬性,它也是從TButtonControl繼承而來的.
怎樣把TCheckBox.Color屬性轉到TButton 中.
或者哪裡有帶Color屬性的Button控件下載...急!!!
 
用第三方免费控件flatstyle.
 
那么,你只能使用第三方控件!
或者,你自己从TButton继承自己的Button组件,然后修改其背景色!
 
我刚才看了一下TButton的代码,其中有如下一段:

procedure TButton.SetButtonStyle(ADefault: Boolean);
const
BS_MASK = $000F;
var
Style: Word;
begin
if HandleAllocated then
begin
if ADefault then Style := BS_DEFPUSHBUTTON else Style := BS_PUSHBUTTON;
if GetWindowLong(Handle, GWL_STYLE) and BS_MASK <> Style then
SendMessage(Handle, BM_SETSTYLE, Style, 1);
end;
end;

上面这个过程在 CM_FOCUSCHANGED 消息中调用!
你可以在自己的Button组件代码中,把这个SetButtonStyle(ADefault: Boolean);过程
override了,然后作如下修改:

你试试在 if ADefault then Style := BS_DEFPUSHBUTTON else Style := BS_PUSHBUTTON;
这一句当中 修改如下看看能不能得到您需要的效果
if ADefault then
begin
Self.Color := clYellow; //得到焦点以后的颜色
Style := BS_DEFPUSHBUTTON
end
else begin
Self.Color := clBtnFace; //失去焦点以后的颜色
Style := BS_PUSHBUTTON;
end;

我没有试过,你试试看吧! 如果不行,不要骂我哦!!!
 
我沒有去試,我已新寫了一個控件,不過有你的支持,值得學習,給分...
 
后退
顶部