![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Панель, выступающая за форму [D6, Win95/98]
Chris © (2002-03-27 11:33:00)Как нарисовать панель (TPanel), возможно выступающую за форму.
Примером может служить ComboBox, у которого список может выпадать за границу формы, но мне надо поставить на Панель еще какие-либо компоненты.
Nikolay M. (2002-03-28 12:05:00) [1]>>IMHO, тогда нужно писать свой компонент, который рисует
>>на DC десктопа (GetDC (GetDesktopWindow)).
>Но такая выступающая часть не будет получать сообщения от >системы. Этой части просто не будет, а будет одна "видимость".
Согласен, просто упустил из виду, что на панель нужно класть что-то еще, а не просто нарисовать список а-ля ComboBox.
> TPanel.Create(GetDC(GetDesktopWindow))
такая запись не имеет никакого смысла, потому что GetDesktopWindow возвращает дескриптор окна десктопа, GetDC возвращает DeviceContent этого окна (необходим для рисования с помощью API-шных функций), а TPanel.Create требует компонент, который будет "владельцем" создаваемой TPanel.
Лучше, все-таки в Design-time нарисуй свою форму (только удали ее из списка автосоздаваемых форм), убери строку заголовка и создавай ее динамически, когда вызывается форма, за чью границу она должна выступать.
Alx2 (2002-03-27 12:35:00) [2]>IMHO, тогда нужно писать свой компонент, который рисует
>на DC десктопа (GetDC (GetDesktopWindow)).
Но такая выступающая часть не будет получать сообщения от системы. Этой части просто не будет, а будет одна "видимость" ((c) дед Щукарь)и на ней ничего не разместишь. Пользователь, кликнув на ней, активизирует другое окошко, сидящее под выступом.
Chris (2002-03-27 12:12:00) [3]> Nikolay M.
А можно поподробнее?
Ведь не напишешь же TPanel.Create(GetDC(GetDesktopWindow)).
Alx2 (2002-03-27 11:54:00) [4]Или же сделать другое окошко, в котором будет жить нужный Panel, а потом управлять его положением...
Alx2 (2002-03-27 11:52:00) [5]Можно попытаться изменить форму окна (учитывая выступающую часть) через SetWindowRgn и на выступ кинуть Panel
Nikolay M. (2002-03-27 11:42:00) [6]IMHO, тогда нужно писать свой компонент, который рисует на DC десктопа (GetDC (GetDesktopWindow)).
А не проще будет создать окно (форму) без заголовка и кнопок свернуть/закрыть и привязать ее к основной форме?