Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
15-1194439274
Kerk
2007-11-07 15:41
2007.12.09
Нужно 10wmz


2-1194846459
KSergey
2007-11-12 08:47
2007.12.09
Передача строки в параметр PChar


2-1195052926
olevacho_
2007-11-14 18:08
2007.12.09
Компонент для отображения форматированого текста и графики


1-1190278304
tytus
2007-09-20 12:51
2007.12.09
Рамка вокруг региона????


15-1194613990
авыф
2007-11-09 16:13
2007.12.09
как сделать так, чтобы контролы, расположенные на форме нельзя





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский