|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Прилжение закрывается, а OnClose формы не срабатывает
Из главной формы запускаются другие формы.
Не модальные. В которых есть процедуры обработки события OnClose. Закрываем прогу. По логике приложения закрыть все формы должен пользователь, но приложение закрывается и молча уничтожает открытые ранее формы. OnClose не срабатывает. А надо. Как при выходе из проги отловить, что формы (те не главные, но открытые) приговорены к расстрелу? Т.е., в идеале, надо запретить закрывать приложение, если есть такие открытые формы. Вариант, как-то запустить OnClose форм. |
#2
|
||||
|
||||
Скорее всего деструкторы отрабатывают.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Это да. Деструкторы есть и они отрабатывают. Но надо OnClose. Именно в этой процедуре происходит проверка на модификацию и там же запрос на сохранение изменений.
Можно перехватить системное событие в главной форме (вроде бы, как раз тот момент, когда не главные формы еще существуют): Код:
procedure TfrmMain.WMGetSysCommand(var message: TWMSysCommand{TMessage}); begin if (message.wParam = SC_CLOSE) then begin if <условие> then //но как здесь запретить вываливаться из проги? end else inherited; end; |
#4
|
||||
|
||||
ну а в OnClose главной формы прописать:
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i: Integer; begin for i:=0 to Screen.FormCount-1 do if (Screen.Forms[i]<>Self) and (Screen.Forms[i].Visible) then Screen.Forms[i].Close; end; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Vocabulary (23.07.2012)
|
#5
|
|||
|
|||
Весьма интересный вариант.
Вставлен, протестирован. Подходит. Даже лучше чем предполагалось. Спасибо. |