Как при наведении курсора на кнопку менять ее цвет?

Вопрос:

Как при наведении курсора на кнопку менять ее цвет?

Ответ:

type
  TForm1 = class(TForm)
      BitBtn1: TBitBtn;
      procedure FormCreate(Sender: TObject);
  private
      procedure NewBtnWindowProc(var Msg:TMessage); // Это новый обработчик
  end;

var
    Form1: TForm1;

implementation

{$R *.DFM}

var
    OldBtnWindowProc : TWndMethod;

procedure TForm1.NewBtnWindowProc;
begin
    case msg.Msg of
        CM_MOUSELEAVE: BitBtn1.Font.Color := clGray;
        CM_MOUSEENTER: BitBtn1.Font.Color := clBlack;
    end;
    OldBtnWindowProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    OldBtnWindowProc := BitBtn1.WindowProc;
    BitBtn1.WindowProc := NewBtnWindowProc;
    BitBtn1.Perform(CM_MOUSELEAVE,0,0); // Изначально серый
end;

Из конференции Delphi