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

Вниз

Пересоздание окна с MDI-Child ами.   Найти похожие ветки 

 
Gero ©   (2004-11-20 09:04) [0]

Ситуация проста: имеется MDIForm с несколькими MDIChild"ами.
Вызываю MDIForm.RecreateWnd - Child"ы заново не создаются.
А нужно чтобы они восстанавливались вместе с содержимым.
Как это лучше реализовать?


 
Gero ©   (2004-11-21 09:24) [1]

Неужели такой сложный вопрос?


 
sniknik ©   (2004-11-21 11:38) [2]

а интересно после MDIForm.RecreateWnd событие onCreate у формы вызывается? а код какой нибудь в нем срабатывает? например создание Child"а. а если 1 сработает то может и несколько получится?


 
Игорь Шевченко ©   (2004-11-21 12:51) [3]


> Вызываю MDIForm.RecreateWnd - Child"ы заново не создаются.


Разумно. Так как пересоздается окно ClientHandle, которое и управляет Child"ами.


> А нужно чтобы они восстанавливались вместе с содержимым.
> Как это лучше реализовать?


Руками не судьба ? Запоминать, какие Child"ы были созданы, после Recreate создавать их снова.


 
Gero ©   (2004-11-21 17:55) [4]


sniknik ©   (21.11.04 11:38)
> а интересно после MDIForm.RecreateWnd событие onCreate у
> формы вызывается?

Нет.

Игорь Шевченко ©   (21.11.04 12:51)
> Руками не судьба ? Запоминать, какие Child"ы были созданы,
> после Recreate создавать их снова.

Хлопотно просто руками.
Много чего запоминать.

В общем, как я понял, все дочерние MDI-окна по-любому будут разрушены.
Мне не понятно только почему контролы, находящиеся на форме, все остаются как и были, и нормально пересоздаются, а MDIChild"ы - нет...


 
Игорь Шевченко ©   (2004-11-21 21:25) [5]


> Мне не понятно только почему контролы, находящиеся на форме,
> все остаются как и были, и нормально пересоздаются


Потому что они в форме зарегистрированы. А MDI-Childs совершенно самостоятельные окна, дочерние по отношению к окну ClientHandle


 
Gero ©   (2004-11-21 21:28) [6]


> Потому что они в форме зарегистрированы

Что есть "зарегестрированы"?
А нельзя ли зарегистировать и Child"ы?


 
Piter ©   (2004-11-21 21:42) [7]

Gero ©   (21.11.04 17:55) [4]
Мне не понятно только почему контролы, находящиеся на форме, все остаются как и были, и нормально пересоздаются


странно. Неужели если ты динамически добавишь контрол на форму - он тоже будет пересоздан?


 
Gero ©   (2004-11-21 21:50) [8]


> Неужели если ты динамически добавишь контрол на форму -
> он тоже будет пересоздан?

Да, будет.


 
Piter ©   (2004-11-21 21:56) [9]

Piter ©   (21.11.04 21:42) [7]
Неужели если ты динамически добавишь контрол на форму - он тоже будет пересоздан


действительно так. Пересоздается только окно, что в общем логично и следует именно из названия функции :)

Думаю, таким же образом можно пересоздать и вместе с MDIChild, просто такое поведение не реализовано.

Хотя в тоже самое время навигация в TWebBrowser при RecreateWindow сбивается... так что...

И вообще интересно - а зачем делать RecreateWindow?


 
Piter ©   (2004-11-21 21:57) [10]

Gero ©   (21.11.04 21:50) [8]
Да, будет.


точнее не совсем так. Компоненты не будут пересозданы, они как были, так и останутся...


 
Gero ©   (2004-11-21 22:49) [11]


> Думаю, таким же образом можно пересоздать и вместе с MDIChild,
> просто такое поведение не реализовано.

Да, учитывая, что все методы что надо переписать - не virtual.

> И вообще интересно - а зачем делать RecreateWindow?

Например, чтобы BorderStyle или BorderIcons у формы поменять.


 
Piter ©   (2004-11-22 00:45) [12]

Gero ©   (21.11.04 22:49) [11]
Да, учитывая, что все методы что надо переписать - не virtual.


о каком переписывании методов ты говоришь?
А-а-а... чтобы самому реализовать нужное поведение? Ну сочувствую, можешь править VCL, если так нужно :)


 
Defunct ©   (2004-11-22 05:00) [13]

> Вызываю MDIForm.RecreateWnd

Не вызывай


 
Gero ©   (2004-11-22 08:20) [14]


> можешь править VCL, если так нужно

Не хотелось бы.

> Defunct ©   (22.11.04 05:00)
Не вызывай

А, спасибо, лучших совет!
Но все же иногда лучше жевать.


 
Piter ©   (2004-11-22 15:42) [15]

Gero ©   (22.11.04 8:20) [14]
Не хотелось бы


ну на самом деле ничего такого тут нет. Я правил - и теперь нормально, клиент практически всю информацию выводит по русски на NT виндах с НЕ русской локалью.

Можно ведь не только править прямо в папках Дельфовых, а сделать свой аналог Forms и подключить его к проекту...


 
Gero ©   (2004-11-22 19:09) [16]


> Piter ©   (22.11.04 15:42)

Да знаю я, правил VCL.
А вот представь, что это OpenSource проект.
Не думаю, что захочется вместе с исходниками распространять еще и VCL-библиотеки.


 
Piter ©   (2004-11-23 00:15) [17]

А-а-а, ты для клиента делаешь... Ну фиг знает. А зачем менять BorderStyle?

К тому же, я тебе уже говорил, например в TWebBrowser навигация сбивается при RecreateWnd, так что все равно тебе ручками придется работать, замучаешься...



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

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
1-1101141697
Dmitry_04
2004-11-22 19:41
2004.12.05
API сообщения при сочетании клавишь, например Ctrl+F


3-1099652399
Janb
2004-11-05 13:59
2004.12.05
Что выбрать? Или как сделать?


1-1101110443
AleX200411
2004-11-22 11:00
2004.12.05
Сравнение объектов


14-1100541100
Cerberus
2004-11-15 20:51
2004.12.05
Бесплатный хостинг


1-1100861315
hgd
2004-11-19 13:48
2004.12.05
Как измерить время процедуры в милисек





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