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