Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Координаты мыши относительно 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.062 c
15-1173166807
Glivera
2007-03-06 10:40
2007.04.01
BIOS ROM Checksum error


15-1173256037
Некто
2007-03-07 11:27
2007.04.01
Простые тосты к 8.03


3-1168414258
Шмель
2007-01-10 10:30
2007.04.01
UNION query. SQL


11-1152342098
Maloric
2006-07-08 11:01
2007.04.01
Ошибка при использовании MHFontDialog


4-1163635372
Wadim
2006-11-16 03:02
2007.04.01
Хочу задать тот же вопрос по поводу скрытия окон, но как иконку