![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно закрыть всё приложение с модальными формами. [D7, XP]
Lebedev © (2007-10-19 09:15:00)У меня проблема. Я хочу чтобы всё моё приложение закрывалось после того, как произойдёт событие OnTimer компонента Timer, размещённого на модальной форме.
Вот код обработки этого события
procedure TForm3.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
close;
end;
У главной формы код события OnShow
procedure TForm1.FormShow(Sender: TObject);
begin
Form3.ShowModal;
if Form3.ShowModal<>7 then application.Terminate
Но при отладки в среде Delphi видно, что приложние в итоге не закрывается полностью, тоесть форм не видно, а приложение работает.
Как правильно закрыть приложение в моём случае?
Lebedev (2007-10-19 11:21:00) [1]Спасибо большое! Сейчас всё работает.
>Ничего страшного, что Form1 не прорисуетмя при запуске?
Для меня, в принципе, это не важно. Или это не красиво с точки зрения программирования?
Reindeer Moss Eater (2007-10-19 10:40:00) [2]Лучше постить сообщение WM_CLOSE тогда все прорисуется.
ЮЮ (2007-10-19 10:32:00) [3]
procedure TForm3.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
//close;
ModalResult := mrIgnore; //так принято закрывать модальные фориы
end;
У главной формы код события OnShow
Ничего страшного, что Form1 не прорисуетмя при запуске?
procedure TForm1.FormShow(Sender: TObject);
begin
Form3.ShowModal;
if Form3. ModalResult= mrIgnore then Close; // так принято закрывать гоавную форму приложения ( а с ней и само приложение)
end;
Lebedev (2007-10-19 10:27:00) [4]>зачем тебе два последовательных показа одной и той же формы?
спасибо, понял ошибку.
Сейчас после такого кода
procedure TForm1.FormShow(Sender: TObject);
begin
if Form3.ShowModal<>7 then //close
//application.Terminate
halt
else begin
вылазит ошибка
"... raised exseption class EInvalidOperation with message 'Cannot change Visible in OnShow or OnHide' ..."
Lebedev (2007-10-19 10:18:00) [5]>halt;
не момогает
procedure TForm1.FormShow(Sender: TObject);
begin
Form3.ShowModal;
if Form3.ShowModal<>7 then halt
это ничего не меняет.
Lebedev (2007-10-19 10:15:00) [6]>Блеск!
Будьте добры прокомментировать, что не так.
Reindeer Moss Eater (2007-10-19 10:15:00) [7]зачем тебе два последовательных показа одной и той же формы?
Slym (2007-10-19 09:29:00) [8]halt;
Reindeer Moss Eater (2007-10-19 09:17:00) [9]Form3. ShowModal;
if Form3. ShowModal<>7 then
Блеск!