Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.08;
Скачать: CL | DM;

Вниз

Панель, выступающая за форму   Найти похожие ветки 

 
Chris ©   (2002-03-27 11:33) [0]

Как нарисовать панель (TPanel), возможно выступающую за форму.
Примером может служить ComboBox, у которого список может выпадать за границу формы, но мне надо поставить на Панель еще какие-либо компоненты.


 
Nikolay M. ©   (2002-03-27 11:42) [1]

IMHO, тогда нужно писать свой компонент, который рисует на DC десктопа (GetDC (GetDesktopWindow)).

А не проще будет создать окно (форму) без заголовка и кнопок свернуть/закрыть и привязать ее к основной форме?


 
Alx2 ©   (2002-03-27 11:52) [2]

Можно попытаться изменить форму окна (учитывая выступающую часть) через SetWindowRgn и на выступ кинуть Panel


 
Alx2 ©   (2002-03-27 11:54) [3]

Или же сделать другое окошко, в котором будет жить нужный Panel, а потом управлять его положением...


 
Chris ©   (2002-03-27 12:12) [4]

> Nikolay M.
А можно поподробнее?
Ведь не напишешь же TPanel.Create(GetDC(GetDesktopWindow)).


 
Alx2 ©   (2002-03-27 12:35) [5]

>IMHO, тогда нужно писать свой компонент, который рисует
>на DC десктопа (GetDC (GetDesktopWindow)).
Но такая выступающая часть не будет получать сообщения от системы. Этой части просто не будет, а будет одна "видимость" ((c) дед Щукарь)и на ней ничего не разместишь. Пользователь, кликнув на ней, активизирует другое окошко, сидящее под выступом.



 
Nikolay M. ©   (2002-03-28 12:05) [6]

>>IMHO, тогда нужно писать свой компонент, который рисует
>>на DC десктопа (GetDC (GetDesktopWindow)).
>Но такая выступающая часть не будет получать сообщения от >системы. Этой части просто не будет, а будет одна "видимость".

Согласен, просто упустил из виду, что на панель нужно класть что-то еще, а не просто нарисовать список а-ля ComboBox.

> TPanel.Create(GetDC(GetDesktopWindow))
такая запись не имеет никакого смысла, потому что GetDesktopWindow возвращает дескриптор окна десктопа, GetDC возвращает DeviceContent этого окна (необходим для рисования с помощью API-шных функций), а TPanel.Create требует компонент, который будет "владельцем" создаваемой TPanel.

Лучше, все-таки в Design-time нарисуй свою форму (только удали ее из списка автосоздаваемых форм), убери строку заголовка и создавай ее динамически, когда вызывается форма, за чью границу она должна выступать.



Страницы: 1 вся ветка

Текущий архив: 2002.04.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-22607
xim
2002-03-17 15:47
2002.04.08
Помогите советом, сломалась таблица parodox.


3-22565
_Oleg_
2002-03-13 22:34
2002.04.08
Не передается строка длинее 32768 символов


14-22812
DenK_vrtz
2002-02-27 15:30
2002.04.08
Вопросик про Winamp


1-22763
koks
2002-03-27 09:59
2002.04.08
Ламерский вопрос - но в хелпе ничего нет нашел.


1-22710
Aleksandr
2002-03-26 16:47
2002.04.08
Как корректно проверить наличие объекта в памяти?