Форум: "Компоненты";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизПроблема с TPageContorl Найти похожие ветки
← →
Igor_thief (2006-11-21 16:08) [0]я просто напросто бросаю на форму PageControl и добавляю две вкладки. На каждую из вкладок бросаю по ричедиту. Запускаю программу и запускаю WinIspecor SPY для того, чтобы выяснить один момент и вижу следующую картину. WinInspector spy (да и другие программы данного типа) показываю, что реально создан только один TabSheet (тот который активен), а второго просто нету (и всего что на нем) до того момента, пока я не переключюсь на него. Самое странное в данной ситуации это то - что я спокойно могу обращяться ко всем компонентам второго таба, еще до того, как на него перехожу. Вот такая вот история! В чем глюк?
ЗЫ: я обратил на это внимание из-за того, что у меня сложилась такая вот ситуация: есть определенный код, который работает правильно! У меня есть PageContorl с двумя табами. Если я перед запуском не переклацнусь между табами, то после выполнения кода, программа просто зависнет, а вот если переклацнусь, то нет. МИСТИКА!
← →
DimaBr (2006-11-21 16:41) [1]
> МИСТИКА!
Никакой мистики, ошибка в 17 строке.
← →
clickmaker © (2006-11-21 16:54) [2]
> Если я перед запуском не переклацнусь между табами, то после
> выполнения кода, программа просто зависнет, а вот если переклацнусь,
> то нет. МИСТИКА!
а ты не знал? Это древний программерский ритуал: переклацывание табов. Пока его не совершишь, все будет виснуть...
← →
Igor_thief (2006-11-21 17:04) [3]Ну все, посмеялись, а теперь давайте по делу.
← →
Наиль © (2006-11-21 17:12) [4]Насчёт мистики подтверждаю, смотреть надо в 17 строку.
Что касается SPY, то всё очень просто.
TWinControl состоит из двух частей:
1. Окно в понимании Windows
2. Данные об окне.
Окно не существует, пока у него нет родителя (parent), пока у родителя нет родителя и т.д.
Окно с родителем не существует, пока его не видно (visible=false).
Если несуществующее окно становится видимым, то оно создаётся (TWinControl.CreateWnd).
Если у окна меняется родитель, то окно уничтожается и снова создаётся.
И всё это на основании информации об окне, которая храниться в TWinControl отдельно от окна.
Само окно находится на территории Windows. А твоя программа владеет лишь Handle этого окна.
По сути твоя программа обращается к Windows, чтобы та изменила состояние окна по заданому Handle.
Spy-программы обращаються к Windows для получения сведений об состоянии окна по его Handle. Windows может сообщить лишь те сведения, которые знает сама, но неможет знать о том, что знает твоя программа.
Другими словами, ты не видишь TabSheet потому, что его не существует. Хотя сведения о нём существуют (Шерлок Холмс тоже не существует, но сведений о нём предостаточно).
← →
Igor_thief (2006-11-21 17:25) [5]Никакой 17 строчки нету! (как для вас)
Прикольное описание! Вот только как же я тогда работаю с дочерними элементами второй кладки, если по твоей теории это невозможно?
← →
BOA_KAA © (2006-11-21 18:44) [6]а ведь наверху написано, мол, купите книгу...
http://rsdn.ru/article/delphi/twinctrl.xml
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c