Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Курсор+кнопка 
V
    Опции темы
NoviCHOk
  Дата 2.11.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.11.2006
Где: г.Санкт-Петербург Невский р-он

Репутация: -1
Всего: нет



Ребята, всю голову разбил  smile ... У меня задание такое: сделать кнопку, при 1ом нажатие на которую она двигается за курсором, а при повторном нажатии она перестанет бежать за курсором мышки.  smile Нужно вроде чтоб координаты курсора совпадали с координатами кнопки. Помогите пожалуйста лузеру-программисту если вам не трудно    smile smile 
PM MAIL   Вверх
Albinos_x
Дата 2.11.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



самый простой вариант:
Код

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;



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Rodman
Дата 2.11.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Сейчас не могу посказать больше чем - используй OnMouseMove, а зватра могу попробовать исходник подкинуть
PM MAIL WWW Skype GTalk YIM MSN   Вверх
NoviCHOk
Дата 2.11.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.11.2006
Где: г.Санкт-Петербург Невский р-он

Репутация: -1
Всего: нет



Цитата(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  
PM MAIL   Вверх
ivan219
Дата 2.11.2006, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Ты события на кнопке OnClick зделал а на форме OnMouseMove.

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

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

Добавлено @ 23:50 
Также могут и имена не совподать тут Button1 и Form1
PM MAIL ICQ   Вверх
Albinos_x
Дата 3.11.2006, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



у меня тоже всё работает... на какой строчке ошибку показывает?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 3.11.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А зачем эту кнопку таскать, если её нажимать нельзя?
Какой в ней тогда смысл, кроме таскания?
Может так будет лучшее?
Код
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 - снова обычная кнопка.
PM MAIL   Вверх
NoviCHOk
Дата 3.11.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.11.2006
Где: г.Санкт-Петербург Невский р-он

Репутация: -1
Всего: нет



УРАААААА!  smile  РАБОТАЕТ! СПАСИБО ДРУЗЬЯ!!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.