Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 16:56   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос Закрытие и открытие дочерних MDI окон приложения

Как известно, дочерние MDI окна нельзя закрыть. Если приложение построено по принципу MDI, дочерние окна, при нажатии "закрыть" в шапке окна, сворачиваются. Такое положение дел не устраивает. Их можно скрыть. Как это сделать, и чтобы оставшиеся MDI дочерние формы можно было разворачивать на весь экран и размеры компонентов с выравниванием правильно меняли свои размеры? Например при использовании функции ShowWindow с параметрами swHide и swShow, компоненты с выравниванием alClient и пр. подобными значениями, перестают выравниваться после swHide и swShow.
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 16.05.2011, 08:43   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от chandrasecar Посмотреть сообщение
Как известно, дочерние MDI окна нельзя закрыть.
Да ну?!! А как же
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
Баламут вне форума Ответить с цитированием
Старый 16.05.2011, 10:34   #3
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Все верно. Я это знаю. Главный вопрос - как ее потом открыть нормально? на Form.Show и ShowWindow(Form.Handle, sw_Show) не получается - ошибка. "Access Violation". Форму ведь еще и открывать нужно.
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 16.05.2011, 11:08   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Форму ведь еще и открывать нужно.
форму еще и СОЗДАВАТЬ нужно. Обычно это делается при запуске программы.
Код:
application.CreateForm
строка вставляемая в код проекта при указании формы в автоматическом создании.
такую же строчку или
Код:
fxxx:=Tform1.create(application.meinform);
можно и нужно писать в других (нужных) местах программы.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.05.2011, 13:41   #5
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Спасибо. Все получилось.
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поведение дочерних окон maryan.vetrov C# (си шарп) 9 27.02.2011 18:09
Закрытие всех дочерних форм belarusfight C# (си шарп) 3 26.02.2011 15:06
SetWindowPos для дочерних окон и битмапов. Alex Cones Общие вопросы Delphi 4 02.02.2011 13:49
Расположение дочерних MDI окон слева-направо и сверху-вниз Umdis Общие вопросы Delphi 2 30.11.2009 07:05
AlphaSkins. Как убрать скин с дочерних MDI Форм? chandrasecar Компоненты Delphi 4 11.02.2009 20:06