![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Абсолютные координаты компонента [D7, WinXP]
xroot © (2005-07-10 16:07:00)Компонент может находится на форме или на панели расп. на форме. или на панели расп. на другой панели.
Как найти координаты компонента относительно экрана, а не формы илм его родителя (панель).
xgreen (2005-07-10 21:44:00) [1]
> xroot (10.07.05 17:50) [2]
> Выдает не те координаты (не коорд текущего компонента)
> xroot (10.07.05 18:20) [4]
> По идее, форма должна показываться прямо на текущем компоненте
> (верхний леый угол должен у них совпадать). Этого не происходит.
> Она вообще появляется 4ерте где.
Хм. Ну так понятно: ClientToScreen превращает координаты компонента в экранные координаты. А если тебе необходимо компонент отобразить, к примеру, на другой форме, то воспользуйся вторым преобразованием ScreenToClient, но опять же орабти внимание на расположение этой формы на экране, иначе координаты могут оказаться за пределами формы.
xroot (2005-07-10 18:20:00) [2]По идее, форма должна показываться прямо на текущем компоненте (верхний леый угол должен у них совпадать). Этого не происходит. Она вообще появляется 4ерте где.
begin...end (2005-07-10 18:20:00) [3]> xroot (10.07.05 17:50) [2]
var
P: TPoint;
begin
P := (Form.Components[...] as TWinControl).ClientToScreen(Point(0, 0));
ShowMessageFmt('Left: %d Top: %d', [P.X, P.Y])
end.
Anatoly Podgoretsky (2005-07-10 18:15:00) [4]xroot (10.07.05 17:50) [2]
Такого за ним не замечено.
xroot (2005-07-10 17:50:00) [5]Выдает не те координаты (не коорд текущего компонента)
FormMsg.Top := (Form.Components[i] as TWinControl).ClientToScreen((Form.Components[i] as TWinControl).ClientOrigin).Y;
FormMsg.Left := (Form.Components[i] as TWinControl).ClientToScreen((Form.Components[i] as TWinControl).ClientOrigin).X;
xgreen (2005-07-10 16:39:00) [6]ClientToScreen