Тебе надо что-то типа такого ?
Кнопка преследующая мышку или надо наоборот ?
Код:
procedure TForm3.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var XButtonCenter, YButtonCenter: Integer;
begin
XButtonCenter := btn17.Left + (Btn17.Width div 2);
YButtonCenter := btn17.Top + (Btn17.Height div 2);
if XButtonCenter > X then btn17.Left := btn17.Left - 1;
if XButtonCenter < X then btn17.Left := btn17.Left + 1;
if YButtonCenter > Y then btn17.Top := btn17.Top - 1;
if YButtonCenter < Y then btn17.Top := btn17.Top + 1;
Form3.Caption := 'mx:= '+IntToStr(X)+' my:= '+ IntToStr(Y)+ ' bx:= '+IntToStr(btn17.left)+' by:= '+ IntToStr(btn17.Top);
end;
В данной реализации, 1 это минимальная скорость перемещения кнопки.
Но если по колдовать, можно сделать скорость на порядки ниже.