Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизКоординаты мыши относительно TPanel Найти похожие ветки
← →
Shastox © (2007-03-11 01:28) [0]Здравствуйте.
Такая задачка:
На форме есть TPanel, нужно получить координаты курсора мыши относительно этой TPanle.
Ковырялся с фукциями, а точнее с их комбинациямиGetCursorPos
иScreenToClient
, но получались какие-то не понятные числа,а не координаты относительно панели.
Помогите, пожалуйста.
← →
Johnmen © (2007-03-11 01:39) [1]Используй методы TControl"а (в твоём случае это TPanel) - ScreenToClient и ClientToScreen.
← →
Германн © (2007-03-11 01:49) [2]
> Ковырялся с фукциями, а точнее с их комбинациями GetCursorPos
> и ScreenToClient, но получались какие-то не понятные числа,
> а не координаты относительно панели.
Так ты и приведи код этих "ковыряний".
← →
Shastox © (2007-03-11 02:06) [3]
> Так ты и приведи код этих "ковыряний".
Вот мой код:
var
P:TPoint;
....
GetCursorPos(P);
....
ScreenToClient(p);
P.X:=P.X-Panel1.Top;
P.Y:=P.Y-Panel1.Left;
> Используй методы TControl"а (в твоём случае это TPanel)
> - ScreenToClient и ClientToScreen.
Попробовал вот так, но все равно не получается:
var
P:TPoint;
....
GetCursorPos(P);
....
Panel1.ScreenToClient(p);
Проверяю так: ставлю курсор мыши в левый верхний угол TPanel"и - координаты должны быть близки к 0:0, но там совершенно другие числа.
← →
Johnmen © (2007-03-11 02:23) [4]Ёкарный бабай! Ты даже не удосужился почитать F1, чтобы сделать для себя открытие - ScreenToClient является функцией...
← →
Германн © (2007-03-11 02:37) [5]
> Johnmen © (11.03.07 02:23) [4]
>
> Ёкарный бабай! Ты даже не удосужился почитать F1, чтобы
> сделать для себя открытие - ScreenToClient является функцией.
> ..
Дык он же "ковырялся" :) А читать? Чукча не читатель!
← →
Shastox © (2007-03-11 14:22) [6]
> Ёкарный бабай! Ты даже не удосужился почитать F1, чтобы
> сделать для себя открытие - ScreenToClient является функцией.
> ..
А ты сам смотрел в справку? Просто причина в том, что я смотрел в Windows SDK, а там написано:BOOL ScreenToClient(
HWND hWnd, // window handle for source coordinates
LPPOINT lpPoint // address of structure containing coordinates
);
....
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
> Дык он же "ковырялся" :) А читать? Чукча не читатель!
Ну и зачем гадости писать?
← →
Shastox © (2007-03-11 14:28) [7]Спасибо, разобрался.
← →
Johnmen © (2007-03-11 14:29) [8]
> Просто причина в том, что я смотрел в Windows SDK,
А-а-а... Лучше уж сразу в справочник юного химика...:)
Вобщем, какого .. ты в эту справку полез?
← →
Johnmen © (2007-03-11 14:30) [9]
> Ну и зачем гадости писать?
Это такой юмор. Не всем доступен... :)))
← →
Юрий Зотов © (2007-03-11 14:33) [10]> Shastox © (11.03.07 14:22) [6]
> причина в том, что я смотрел в Windows SDK
В приведенном Вами коде ни один вызов ScreenToClient не содержит двух параметров - везде один. Более того, вы явно вызываете метод VCL:
Panel1.ScreenToClient(p)
Поэтому насчет не той справки Вы либо присочинили, либо смотрели ее тоже "по диагонали".
← →
Shastox © (2007-03-12 00:22) [11]
> Поэтому насчет не той справки Вы либо присочинили, либо
> смотрели ее тоже "по диагонали".
Я смотрел ее, когда использовал версию:var
P:TPoint;
....
GetCursorPos(P);
....
ScreenToClient(p);
P.X:=P.X-Panel1.Top;
P.Y:=P.Y-Panel1.Left
А про первый параметр, я думал, что раз я его не пишу, то может он ставится автоматически как-то, т.е указывает на мою главную форму. Да, я напутал, но началось с того, что я посмотрел не в ту справку. Если бы я туду посмотрел бы сразу, то и вопросов бы не было.
← →
Германн © (2007-03-12 02:54) [12]
> Shastox © (12.03.07 00:22) [11]
А про контекстную справку ты до сих пор не слышал? Т.е. ты не знаешь как получить справку находясь внутри IDE?
Я уже не говорю о CodeComplition, чтоб его!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.141 c