我有一个控件是产从TBUTTON派生出来的,请问怎么给他添加背景颜色
急!!!!!!!!

解决方案 »

  1.   

    button本身都没有颜色,他的子类怎么能上颜色,除非你自己写画控件的代码。
    用第三方控件是比较现实的事情
      

  2.   

    楼主。TBitBtn就是从TButton继承下来的。
    TBitBtn扩展得能改变字体颜色。我想应该也能改变背景颜色。你研究一下TBitBtn呀。
      

  3.   

    既然你的控件是产从TBUTTON过来的就会没有颜色的,用个原代码公开的第三方控件就很方便了,不然就画一个
      

  4.   

    可以给Button添加Canvas属性unit  Button1;  
     
    interface  
     
    uses  
       Windows,  Messages,  SysUtils,  Classes,  Graphics,  Controls,  Forms,  Dialogs,  
       StdCtrls;  
     
    type  
       TButton1  =  class(TButton)  
       private  
           FCanvas:  TCanvas;  
           FControlState:  TControlState;    
           procedure  WMPaint(var  Message:  TWMPaint);  message  WM_PAINT;  
       protected  
           procedure  Paint;  virtual;  
           procedure  PaintWindow(DC:  HDC);  override;  
       public  
           constructor  Create(AOwner:  TComponent);  override;  
           destructor  Destroy;  override;  
           property  Canvas:  TCanvas  read  FCanvas;  
       end;  
     
     
    procedure  Register;  
     
    implementation  
     
    constructor  TButton1.Create(AOwner:  TComponent);  
    begin  
       inherited  Create(AOwner);  
       FCanvas  :=  TControlCanvas.Create;  
       TControlCanvas(FCanvas).Control  :=  Self;  
    end;  
     
    destructor  TButton1.Destroy;  
    begin  
       FCanvas.Free;  
       inherited  Destroy;  
    end;  
     
    procedure  TButton1.WMPaint(var  Message:  TWMPaint);  
    begin  
       Include(FControlState,  csCustomPaint);  
       inherited;  
       Exclude(FControlState,  csCustomPaint);  
    end;  
     
    procedure  TButton1.PaintWindow(DC:  HDC);  
    begin  
       FCanvas.Lock;  
       try  
           FCanvas.Handle  :=  DC;  
           try  
               TControlCanvas(FCanvas).UpdateTextFlags;  
               Paint;  
           finally  
               FCanvas.Handle  :=  0;  
           end;  
       finally  
           FCanvas.Unlock;  
       end;  
    end;  
     
    procedure  TButton1.Paint;  
    begin  
    end;  
     
    procedure  Register;  
    begin  
       RegisterComponents('Samples',  [TButton1]);  
    end;  
     
    end.