Через OnMouseMove не получится, потому что это событие не фиксирует выход указателя мыши за пределы компонента.
Поскольку отрисовка картинки на кнопке - это здесь задача лишняя, покажу, как сделать то, что требуется, с тем лишь исключениям, что "загорание" кнопки будет выглядеть только "ожирнением" шрифта подписи.
Надо объявить класс, например, TMyButton так
TMyButton = class(TButton)
private
procedure CNMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CNMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
Реализация методов будет следующая:
procedure TMyButton.CNMouseEnter(var Message: TMessage);
begin
Font.Style := [fsBold];
end;
procedure TMyButton.CNMouseLeave(var Message: TMessage);
begin
Font.Style := [];
end;
Если компонент не регистрировать, то его можно будет использовать только в рантайме, например, так:
procedure TForm1.FormCreate(Sender: TObject);
var
TButton1: TMyButton;
begin
TButton1 := TMyButton.Create(Form1);
TButton1.Caption := 'hi';
TButton1.Parent := Form1;
TButton1.Width := 100;
TButton1.Height := 25;
TButton1.Left := 50;
TButton1.Top := 50;
end;
Можно пойти дальше и сделать компонент, доступный в дизайнере и реализующий всё-таки "загорание" сменой картинки.
---
Уважайте время других участников Ответов. Не забывайте отмечать лучшие ответы.