Главная страница
    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.48 MB
Время: 0.036 c
2-1173260999
Officeman
2007-03-07 12:49
2007.04.01
сортировка в TListView


2-1173294612
Василиус
2007-03-07 22:10
2007.04.01
Здравствуйте Умельцы!!!


2-1173447779
Provodnick
2007-03-09 16:42
2007.04.01
Ошибка при завершении консольного приложения


2-1173681494
Nightmare
2007-03-12 09:38
2007.04.01
Передвижение


4-1163524472
Wadim
2006-11-14 20:14
2007.04.01
Как сделать обновление экрана как при нажатии кнопки Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский