Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1173448867
Германн
2007-03-09 17:01
2007.04.01
Delphi - The Best


2-1173152733
Интересующийся
2007-03-06 06:45
2007.04.01
Два вопроса про форму


2-1173690419
NOD
2007-03-12 12:06
2007.04.01
Помогите настроить BDE


4-1163174628
SkySpeed
2006-11-10 19:03
2007.04.01
Как можно отлавливать запускаемые процессы?


1-1170856465
Badhabit
2007-02-07 16:54
2007.04.01
DBGrid и поле DateTime





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский