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

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

Как правильно закрыть всё приложение с модальными формами. [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


Блеск!


Наверх

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