Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Курсор+кнопка


Автор: NoviCHOk 2.11.2006, 19:17
Ребята, всю голову разбил  smile ... У меня задание такое: сделать кнопку, при 1ом нажатие на которую она двигается за курсором, а при повторном нажатии она перестанет бежать за курсором мышки.  smile Нужно вроде чтоб координаты курсора совпадали с координатами кнопки. Помогите пожалуйста лузеру-программисту если вам не трудно    smile smile 

Автор: Albinos_x 2.11.2006, 21:55
самый простой вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if Tag=0 then Tag:=1 else Tag:=0;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Tag=1 then
   begin
   Button1.Left:=X-(Button1.Width div 2);
   if Button1.Left<=0 then  Button1.Left:=1;
   Button1.Top:=y-(Button1.Height div 2);
   if Button1.Top<=0 then  Button1.Top:=1;
   end;
end;

Автор: Rodman 2.11.2006, 22:04
Сейчас не могу посказать больше чем - используй OnMouseMove, а зватра могу попробовать исходник подкинуть

Автор: NoviCHOk 2.11.2006, 23:40
Цитата(Albinos_x @ 2.11.2006,  21:55)
самый простой вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if Tag=0 then Tag:=1 else Tag:=0;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Tag=1 then
   begin
   Button1.Left:=X-(Button1.Width div 2);
   if Button1.Left<=0 then  Button1.Left:=1;
   Button1.Top:=y-(Button1.Height div 2);
   if Button1.Top<=0 then  Button1.Top:=1;
   end;
end;

Извини но у меня чёто не выходит...  smile  Пишет ошибку : Expected '=' but '(' found.

Подскажи пожалуйста что мне с этим делать?  smile  

Автор: ivan219 2.11.2006, 23:48
Ты события на кнопке OnClick зделал а на форме OnMouseMove.

Уменя всё работает smile 

Зделай их потом заместо того кода в ставь этот.

Добавлено @ 23:50 
Также могут и имена не совподать тут Button1 и Form1

Автор: Albinos_x 3.11.2006, 00:13
у меня тоже всё работает... на какой строчке ошибку показывает?

Автор: Snowy 3.11.2006, 00:28
А зачем эту кнопку таскать, если её нажимать нельзя?
Какой в ней тогда смысл, кроме таскания?
Может так будет лучшее?
Код
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if ssCtrl in Shift then begin
    ReleaseCapture;
    TControl(Sender).Perform(WM_SYSCOMMAND, $F012, 0);
  end;
end;
Кнопка как кнопка. Но если держать Ctrl, то она таскается, а не нажимается.
Отпустили Ctrl - снова обычная кнопка.

Автор: NoviCHOk 3.11.2006, 15:37
УРАААААА!  smile  РАБОТАЕТ! СПАСИБО ДРУЗЬЯ!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)