![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое изменение геометрии и позиции формы. [D6]
MsGuns © (2002-11-21 12:30:00)Добрый день мастакам ! Есть у меня Гл.форма с кучей альтернативно открывающихся панелей, на каждой из которых есть контролы опред.типа, из которых по встроенной в контрол кнопке вызывается модально другая форма.
Надо чтоб эта форма появлялась в определенном месте экрана (допустим, ТОЧНО ПОД вызывающем контролом, т.е. экранный Left контрола = экранному Left формы и т.д.).
Траблы две:
1. Не могу добиться толку (перечитал все хэлпы) от процедур ScreenToClient и ClientToSreen, возвращающих мне nil или какую-то офигень.
2. При изменении собственных Left, Top внутри вызываемой формы (OnShow) позиция этой формы на экране НЕ ИЗМЕНЯЕТСЯ ! При изменении позиции в Гл.форме непосредственно перед ShowModal в первый раз не срабатывает, только после повторного.
Где я дурак ? За помощь заранее благодарю
MsGuns (2002-11-21 21:20:00) [1]Разобрался !
Для получения координаты любого контрола относительно экрана есть простое до безобразия средство - св-во ClientOrigin ! это называется искать 2 часа ключи, крутя их на пальце 8)
С неправильным позиционированием при первом показе неглавной формы сделал как велел Слесарь Матерящийся (21.11.02 13:07) - и все встало на свои места. Большое всем спасибо !
ЗЫ. Блин, я в экстазе от разработчиков Д ! Даже это (ClientOrigin) предусмотрено.
Переяслов Григорий (2002-11-21 18:48:00) [2]А что если использовать не onShow, а onActivate?
Слесарь Матерящийся (2002-11-21 13:07:00) [3]1: Так не бывает. Конкретнее???
2: Form1(2,3,4...).Position := Default (в редакторе свойств формы). Либо SetWindowPos() WinAPI.