急!请问如何设置button按钮或者bitbutton的颜色?

解决方案 »

  1.   

    先得到他的handle,然后使用Tcanvas画它吧!
      

  2.   

    如果你只是简单的设置BUTTON的背景色就可用COLOR属性。如果是还想改变在操作过程中的按钮的边框色最好是用自画功用了
      

  3.   

    给你个例子,具体实现根据自己需要补充。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TMyButton = class(TButton)
      protected
        procedure MouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
        procedure MouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
      end;  TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        Button1: TMyButton;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    {$R *.dfm}procedure TMyButton.MouseEnter(var Msg: TMessage);
    var
      DC: HDC;
      hbr: HBRUSH;
    begin
      DC := GetDC(Handle);
      hbr := CreateSolidBrush(RGB(255,0,0));
      FillRect(DC, Rect(2,2,Width-2,Height-2), hbr);
      DeleteObject(hbr);
      ReleaseDC(Handle, DC);
    end;procedure TMyButton.MouseLeave(var Msg: TMessage);
    var
      DC: HDC;
      hbr: HBRUSH;
    begin
      DC := GetDC(Handle);
      hbr := CreateSolidBrush(RGB(0,255,0));
      FillRect(DC, Rect(2,2,Width-2,Height-2), hbr);
      DeleteObject(hbr);
      ReleaseDC(Handle, DC);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
        Button1:= TMyButton.Create(Self);
        Button1.Parent := Self;
        Button1.OnClick := Button1Click;
        Button1.Left := 50;
        Button1.Top := 100;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
        MessageBox(Handle, 'Button1 Click', PChar(Caption), MB_OK);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
        Button1.Free;
    end;end.