Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Как правильно закрыть всё приложение с модальными формами.   Найти похожие ветки 

 
Lebedev   (2007-10-19 09:15) [0]

У меня проблема. Я хочу чтобы всё моё приложение закрывалось после того, как произойдёт событие 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 видно, что приложние в итоге не закрывается полностью, тоесть форм не видно, а приложение работает.
Как правильно закрыть приложение в моём случае?


 
Reindeer Moss Eater ©   (2007-10-19 09:17) [1]

Form3.ShowModal;
if Form3.ShowModal<>7 then


Блеск!


 
Slym ©   (2007-10-19 09:29) [2]

halt;


 
Lebedev   (2007-10-19 10:15) [3]

>Блеск!
Будьте добры прокомментировать, что не так.


 
Reindeer Moss Eater ©   (2007-10-19 10:15) [4]

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


 
Lebedev   (2007-10-19 10:18) [5]

>halt;
не момогает
procedure TForm1.FormShow(Sender: TObject);
begin
Form3.ShowModal;
if Form3.ShowModal<>7 then halt


это ничего не меняет.


 
Lebedev   (2007-10-19 10:27) [6]

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

Сейчас после такого кода
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" ..."


 
ЮЮ ©   (2007-10-19 10:32) [7]

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;


 
Reindeer Moss Eater ©   (2007-10-19 10:40) [8]

Лучше постить сообщение WM_CLOSE тогда все прорисуется.


 
Lebedev   (2007-10-19 11:21) [9]

Спасибо большое! Сейчас всё работает.

>Ничего страшного, что Form1 не прорисуетмя при запуске?
Для меня, в принципе, это не важно. Или это не красиво с точки зрения программирования?



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
15-1191786511
Kostafey
2007-10-07 23:48
2007.11.11
Автоматизация конфигурирования настроек IE 6/7


4-1177781077
delete_file
2007-04-28 21:24
2007.11.11
Удаление файла занятого другим процессом


4-1178601036
-=Germe$=-
2007-05-08 09:10
2007.11.11
Еще раз про глобальные ловушки


15-1191092709
Petr V. Abramov
2007-09-29 23:05
2007.11.11
где скачать ридер djvu


15-1191043444
Washington
2007-09-29 09:24
2007.11.11
Delphi vs. VB