Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.11.2008, 20:17
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию Позиция курсора на форме

Помогите пожалуйста отловить позицию курсора на форме (не по экрану).

например это пригодиться при передвижении некоторых компонентов на форме
Ответить с цитированием
  #2  
Старый 18.11.2008, 20:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Берешь координаты экрана (обхект Mouse), а далее ScreenToClient у формы.
Ответить с цитированием
  #3  
Старый 18.11.2008, 20:21
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Код:
procedure TForm1.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
 var t:tpoint;
begin
 t:=mouse.cursorpos;
 groupbox1.Left := t.x-left-groupbox1.Left;
 groupbox1.top := t.y-top-groupbox1.top;
end;

пока что так... только компонент дрыгается, но меняет позицию (и то некорректно)
Ответить с цитированием
  #4  
Старый 18.11.2008, 20:22
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Код:
procedure TForm1.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
 var t:tpoint;
begin
 t:=mouse.cursorpos;
ScreenToClient(t);
 groupbox1.Left := t.x;
 groupbox1.top := t.y;
end;

так тоже не идет.. так даже хуже.. он просто уползает хз куда и все..
Ответить с цитированием
  #5  
Старый 18.11.2008, 22:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ScreenToClient - функция. Результат надо присваивать!!!

Исправь:
Код:
t := ScreenToClient(t);

И, кстати, кто будет делать проверку на "захват" компонента???
Ответить с цитированием
  #6  
Старый 18.11.2008, 23:16
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

в каком смысле на захват компонента?
Ответить с цитированием
  #7  
Старый 18.11.2008, 23:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В смысле - у тебя компонент в данном варианте будет ВСЕГДА двигаться за мышой. Сначала на клик надо выставить флажок. Потом при движении надо проверять, что этот влажок выставлен. А при отпускании клавиши - снимать флажок.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter