Главная страница
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.026 c
2-1192969619
Lebedev
2007-10-21 16:26
2007.11.11
Caption RadioGroup должен переходить на новую строку.


2-1192436477
thely
2007-10-15 12:21
2007.11.11
Написание простой OCX.


2-1192605907
l_v
2007-10-17 11:25
2007.11.11
передача по сети массивов


2-1192455837
фыва
2007-10-15 17:43
2007.11.11
Вставка в мемо


2-1192530303
Dark_blue
2007-10-16 14:25
2007.11.11
Алгоритм шифрования