![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
StayAtHome |
|
|||
![]() Домосед ![]() ![]() Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: 1 Всего: 16 |
Возникла потребность отобразить модально MDIChild-форму. C удивлением, обнаружил, что ShowModal не работает, т к Child-форма видима сразу после создания Кроме того ей вообще невозможно установить Visible:=False
Мож кто прояснит, зачем существует такое ограничение, и как его обойти? Это сообщение отредактировал(а) StayAtHome - 4.4.2005, 02:21 |
|||
|
||||
FRAGNATIC |
|
|||
![]() ..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
|
|||
|
||||
StayAtHome |
|
|||
![]() Домосед ![]() ![]() Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: 1 Всего: 16 |
Я так и сделал, но после создания формы и ДО ее появления на экране, мне нужно выполнить кое-какой код, а MDIChild сразу отображается после Create (при установке FormStyle=fsMDIChild). И ShowModal все равно в результате не пашет.
Это сообщение отредактировал(а) StayAtHome - 5.4.2005, 01:07 |
|||
|
||||
<Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Можешь явным образом изменить видимость у окна:
и потом восстановить, когда нужно будет
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
Girder |
|
||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
1. Убераеш свою MDIChild форму из автосоздания: (MainMenu)Project->Options->Forms. Там её перебрасываеш в: Available forms
2. Переключаешся на свою MDIChild форму и дописываеш в описание класса(пусть например твой класс формы для MDIChild называется TForm2):
3. Реализуеш енту процедуру:
4.Ну и например создание ентой формы:
Удачи. Это сообщение отредактировал(а) Girder - 5.4.2005, 11:45 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||
|
|||||||
StayAtHome |
|
|||
![]() Домосед ![]() ![]() Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: 1 Всего: 16 |
Исчерпывающий ответ. Спасибо!
![]() С Show все работает, но ShowModal использовать так и не удалось. Там в первой же строке реализации черным по белому:
Увы, вопрос остается открытым. |
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Не совсем понятно зачем бы делать ShowModal для MDI формы. Дело в том, что у MDI форм очень сложные взаимоотношения с другими окнами.
Если уж есть какая-то необходимость, то перед созданием этого окна сделай его не MDI. Ааа. Кажется понял. Ты хочешь уже созданное окно отображать то модально, то нет. Тогда тебе не повезло. Правда мне все равно не понятно зачем такое делать. По своей природе, дочернии MDI-окна равноправны. А ты хочешь сделать как всегда: все равны, но некоторые ровнее. ![]() -------------------- Все знать невозможно, но хочется |
|||
|
||||
Girder |
|
||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
![]() Создаем "модульную" MDIChild форму:
И гл́авное! Не забываем востановить все при закрытии "модальной" MDIChild формы ![]()
Это сообщение отредактировал(а) Girder - 6.4.2005, 12:03 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||
|
|||||||
StayAtHome |
|
|||
![]() Домосед ![]() ![]() Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: 1 Всего: 16 |
Петрович
Ты угадал, я создаю формы-экземпляры одного класса, но некоторые -- модальные, а некоторые нет. Такой изврат нужен для отображения таблиц БД связанных по Foreign Key. Т. е. при добавлении записи в таблицу в которой есть FK на другую, пользователь значение поля по которому создан FK сможет выбирать из формы-справочника, которая, естественно, должна отображаться в модальном режиме. Если же мне нужно просто посмотреть/поправить справочники -- та же форма (точнее другой ее экземпляр) должна открываться в обычном режиме (немодальном). Возможно это все дикий изврат, но мне показалось так удобнее и мне и пользователю. ![]() Girder Это уже интересней! (аж стыдно, что сам не догадался) Попробую. Пока сделал на OnDeactivate
|
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Согласен на сто процетов. ![]() Я так и не понимаю зачем это делать. В этом решении больше геммороя, чер практической пользы. -------------------- |
|||
|
||||
icc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 11.4.2005 Репутация: нет Всего: нет |
Не знаю насколько это правильно, но я использую такую конструкцию.
Форма создается при вызове. with TEmterpriseCard.Create(Application) do begin // код до создания end; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |