![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите пожалуйста отловить позицию курсора на форме (не по экрану).
например это пригодиться при передвижении некоторых компонентов на форме |
|
#2
|
|||
|
|||
|
Берешь координаты экрана (обхект Mouse), а далее ScreenToClient у формы.
|
|
#3
|
|||
|
|||
|
Код:
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
|
|||
|
|||
|
Код:
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
|
|||
|
|||
|
ScreenToClient - функция. Результат надо присваивать!!!
Исправь: Код:
t := ScreenToClient(t); И, кстати, кто будет делать проверку на "захват" компонента??? |
|
#6
|
|||
|
|||
|
в каком смысле на захват компонента?
|
|
#7
|
|||
|
|||
|
В смысле - у тебя компонент в данном варианте будет ВСЕГДА двигаться за мышой. Сначала на клик надо выставить флажок. Потом при движении надо проверять, что этот влажок выставлен. А при отпускании клавиши - снимать флажок.
|