Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Корректное закрытие приложения ... [D7]


Страницы:   1 2

Asail ©   (2005-12-13 12:25:00) 

Здрасте!!!
Как можно корректно закрыть приложение, в случае, когда
открыто несколько форм (модальных)?
Грубо говоря, в определенный момент надо закрыть все, что было открыто из главной формы, а затем и саму главную форму.
Проблема в том, что таких модальных форм может быть много.
К тому-же могут оказаться в момент закрытия приложения
открытые диалоговые окна (OpenDlg, SaveDlg), message-боксы (типа ShowMessage), Preview отчетов...
Задача - корректно закрыть приложение, так, что-бы у каждой
открытой формы сработал OnClose (в обратной, относительно порядка открытия форм, последовательности).
Пардон за черезчур длинный вопрос.
Заранее, спасибо!


Васяня   (2005-12-13 12:55:00) [21]

Кхе...


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
frmA.Close();
frmB.Close();
frmC.Close();
frmD.Close();

Close();
end;


Это?

Если по каким-то причинам модальные формы не хотят умирать то ты их по темечку, перепиши процедупу закрытия, вернее воткни в нее Halt какой-нить и всЁ... аль я ни так опять чего понял?


Asail   (2005-12-13 12:50:00) [22]

Я, видимо, некорректно задал вопрос.
Нужно, при событии frmMain.OnClose, закрывалось все, что было открыто до сих пор.
Т.е. если последовательность открытия модальных форм такова:
frmMain -> frmA -> frmB -> frmC, то при frmMain.Close
надо закрыть все формы в обратной последовательности:
frmC.Close; frmB.Close; frmA.Close
и только потом окончательно убить frmMain...


Васяня   (2005-12-13 12:36:00) [23]

Чо за муть? зачем такой изврат? ну до ладно... может назначения для всех форм одного обработчика событий нас спасет?

Например, в главное форме делаем так:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('j');
end;


и в модальной форме так:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.OnClose(Sender, Action);
end;


Теперь, это самое сложное определить Sender и тащиться от того что ты супер кодер :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо