Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизКак правильно закрыть всё приложение с модальными формами. Найти похожие ветки
← →
Lebedev (2007-10-19 09:15) [0]У меня проблема. Я хочу чтобы всё моё приложение закрывалось после того, как произойдёт событие OnTimer компонента Timer, размещённого на модальной форме.
Вот код обработки этого событияprocedure TForm3.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
close;
end;
У главной формы код события OnShowprocedure 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.058 c