Форум: "Основная";
Текущий архив: 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.49 MB
Время: 0.034 c