Главная страница
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.028 c
2-1192184520
inex
2007-10-12 14:22
2007.11.11
усовершенствование цикла


2-1192706459
apic
2007-10-18 15:20
2007.11.11
Курсор


2-1192937610
San1712
2007-10-21 07:33
2007.11.11
Как воспользоваться алгоритмом MD5 в Delphi7 ?


11-1177177531
bessam
2007-04-21 21:45
2007.11.11
BitBtn.Enabled := False , а по виду надписи не скажешь.


2-1192520651
9899100
2007-10-16 11:44
2007.11.11
Поток