Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
1-28471
XPatriot
2001-12-21 14:50
2002.01.10
Работа с файлами.


14-28534
Dim
2001-11-13 07:25
2002.01.10
Братья и сестры. Очередная пирамида или ......?


3-28419
Denis Proshkin
2001-12-06 15:41
2002.01.10
фильтрация по Date


3-28439
Denis Proshkin
2001-12-08 10:32
2002.01.10
Удаление повторяющихся данных


1-28470
JankinDoll
2001-12-21 20:07
2002.01.10
Как посмотреть выделенный символ в Richedite является символом переноса или нет?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский