![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Координаты на рабочем столе. [D5, XP]
qwerty2k3 © (2005-10-22 21:17:00)На форме лежит Image. Как узнать координаты левого-верхнего угла этой имаги относительно рабочего стола? Рабочего стола без TaskBar. Я бы привел свой код, если бы он у меня был, но я не знаю с чего начать. Помогите.
Джо (2005-10-22 23:15:00) [1]
> [6] qwerty2k3 (22.10.05 23:10)
Ты не ту Справку читаешь :) Ты привел цитату из Win32 SDK. А нужно смотреть МЕТОД TControl.ClientToScreen. В Справке по Делфи. И там это функция.
Пример см. выше.
qwerty2k3 (2005-10-22 23:10:00) [2]
> Очевидно, сначала прочитать справку по этому методу, который
> является функцией.
В справке написано "Points to a POINT structure that contains the client coordinates to be converted. The new screen coordinates are copied into this structure if the function succeeds." Я понимаю так что в Р заносятся новые координаты? Дай лучше приер.
Джо (2005-10-22 23:09:00) [3]
procedure TForm1.Button1Click(Sender: TObject);
var
Pt: TPoint;
begin
// получаем координаты верхнего левого угла
// относительно родительского окна
Pt := Image1.BoundsRect.TopLeft;
// переводим точку в экранные координаты
Pt := Image1.ClientToScreen(Pt);
Caption := Format ('x=%d, y=%d',[Pt.x,Pt.y]);
end;
А вообще, в данном случае, можно обойтись и без перевода. Поскольку у контролла уже есть свойство, возвращающее его верхний левый угол сразу в экранных координатах. Называется.ClientOrigin
Гарри Поттер (2005-10-22 22:59:00) [4]Джо © (22.10.05 22:55) [3]
Покажи, а тоя всю ночь провожусь. Не могу понять как это должно быть.
Джо (2005-10-22 22:55:00) [5]
> Как сделать правильно?
Очевидно, сначала прочитать справку по этому методу, который является функцией.
Показать готовый пример или не лишать тебя удовольствия сделать этого самому? ;)
qwerty2k3 (2005-10-22 22:41:00) [6]Делаю так:
var P : TPoint;
Image1.ClientToScreen(P);
Form1.Caption := 'koord: '+inttostr(P.x)+' '+inttostr(P.y);
И на заголовке получаю: koord: 4235257 99111628
Это что такое? Это же не координаты? Как сделать правильно?
Джо (2005-10-22 21:18:00) [7]Начать с ClientToScreen