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

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
2-1194902825
Blind Guardian
2007-11-13 00:27
2007.12.09
Пара вопросов о работе с динамической памятью


15-1194549102
Cyrax
2007-11-08 22:11
2007.12.09
Ищу хакеров...


2-1195026948
Sergl
2007-11-14 10:55
2007.12.09
Как заставить клиента ждать ответа с сервера(Сокеты)


3-1186393598
rebroff
2007-08-06 13:46
2007.12.09
Интернет-технологии в ORACLE


15-1194442691
Elec3C
2007-11-07 16:38
2007.12.09
Для тех, у кого Win2000