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

Вниз

Сделать компонент поверх всех.   Найти похожие ветки 

 
avr555 ©   (2001-12-21 16:50) [0]

Как в RunTime перевести компонент поверх всех других?


 
MBo ©   (2001-12-21 17:01) [1]

BringToFront


 
Юрий Зотов ©   (2001-12-21 17:10) [2]

Добавление - графический контрол НИКОГДА не ляжет поверх оконных на том же Parent"е.


 
MBo ©   (2001-12-21 18:23) [3]

>Юрий Зотов
не подскажете, чем это обусловлено? Судя по исходникам,
TWinСontrol перекрывает SetZOrderPosition TControl, а TGraphicControl нет.
Позиция первого устанавливается в списке FWinControls родителя,
а второго в списке FControls, подмножеством которого, как я понимаю, является FWinControls.
Что же тогда не дает TGraphicControl встать перед оконным?


 
Юрий Зотов ©   (2001-12-21 20:50) [4]

Z-оrder здесь ни при чем.

Дело в том, что графические контролы - это расширение Delphi, а в Windows существуют только оконные контролы. Поэтому в терминах Windows графические контролы Delphi - это просто рисунки, о которых сама Windows, естественно, ничего не знает (действительно, мало ли что там нарисовала какая-то программа, откуда системе об этом знать?).

Когда Windows обновляет окно, то сначала она шлет сообщения о перерисовке родительскому окну, а потом его дочерним окнам (что и понятно, ведь в противном случае родительское окно затирало бы свои контролы). Получив сообщение, родительское окно перерисовывается и при этом перерисовываются его графические контролы (а когда же им еще перерисовываться? ведь это не окна, хэндлов они не имеют и сообщений не получают - а поэтому могут перерисовываться только вместе с родительским окном). Причем ВСЕ дочерние контролы (и оконные, и графические) ВСЕГДА рисуются на канве родительского окна (а где же еще им рисоваться?).

После родительского окна сообщения о перерисовке получают его оконные контролы и тоже начинают перерисовываться - естественно, НА ТОЙ ЖЕ САМОЙ КАНВЕ родительского окна, вот что важно! Понятно, что при этом они неизбежно будут затирать то, что ранее на этой же канве было нарисовано - то есть, те графические контролы, с которыми они перекрываются.

Вот и оказывается, что ОКОННЫЙ контрол ВСЕГДА будет поверх ГРАФИЧЕСКОГО. Если сравнить форму с крышкой стола, то графические контролы можно сравнить с рисунками на этой крышке, а оконные - с предметами, лежащими на этом столе. Ясно, что предмет всегда закроет рисунок.


 
MBo ©   (2001-12-22 07:18) [5]

Спасибо, в общих чертах понятно, с деталями надо самому разбираться.



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
3-28408
urii
2001-12-07 17:26
2002.01.10
перенос


1-28495
dimonf
2001-12-22 21:49
2002.01.10
Ноаод, у меня вопрос как не выводит TPanel на ScrollBox?


1-28508
Notify
2001-12-23 18:23
2002.01.10
Проблема при развертывании формы на весь экран и одновременном блокировании изменений ее размеров.


1-28485
AVALLOGIGS
2001-12-22 13:27
2002.01.10
HELP ME!!!!!!!!!!!!!!


1-28502
Серега
2001-12-16 19:01
2002.01.10
I/O Error 103 и подавление системного сообщения.