![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить позицию курсора мышки на форме [D7]
Pomestnik © (2005-01-01 14:26:00)Как определить позицию курсора мышки на форме??
Ну например есть форма 300х300 Если курсор находится в е центре этой
формы, то выводятся координаты курсора относительно формы а не экрана
Andrewp (2005-01-04 20:51:00) [1]procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
end;
xи yи есть позиция курсора на форме
Polevi (2005-01-02 11:51:00) [2]ScreenToClient, ClientToScreen
grom (2005-01-01 20:24:00) [3]procedure WndProc(var Msg : TMessage); override;
...
procedure TForm1.WndProc(var Msg : TMessage);
begin
Label1.Caption :=IntToStr(Mouse.CursorPos.X-ClientOrigin.X)+' X '+IntToStr(Mouse.CursorPos.Y-ClientOrigin.Y);
inherited;
end;
abcd (2005-01-01 19:03:00) [4]procedure TForm1.Timer1Timer(Sender: TObject);
var p : TPoint;
begin
GetCursorPos(p);
Label1.Caption :=IntToStr(p.X-ClientOrigin.X)+' X '+IntToStr(p.Y-ClientOrigin.Y);
end;
Sirex (2005-01-01 15:59:00) [5]если это обычная форма то в событии OnMouseMove формы
параметры x и y. Но если надо определить в другом месте, то
var p : TPoint;
begin
GetCursorPos(p);
Dec(p.x,Form1.Left+FRMW);// +4 ширина
Dec(p.y,Form1.Top+FRMH);
Caption := Format('%d %d',[p.x,p.y]);
end;
Вместо FRMW - подставь 4 (или другое значение в зависимости от ширины рамки формы, т.к. свойство left формы относительно его левого края в окне, а не левого края рабочей части),
Вместо FRMH - кажеться 23 (ширина заголовка)
Вообщем можешь подогнать, не знаю как по-другому
Естественно, если formStyle = bsNone, то FRMW и FRMH = 0.
Vaitek (2005-01-01 15:41:00) [6]Попробуй в хелпе поискать CursorPos или что-то типа того.