Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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;


У главной формы код события 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.056 c
11-1176370217
Dmitry___
2007-04-12 13:30
2007.11.11
Unicode и Memo.Selection


15-1192010817
Nic
2007-10-10 14:06
2007.11.11
IE и запоминание пароля


2-1192704764
kuat
2007-10-18 14:52
2007.11.11
3D MAX


2-1192950932
hT9
2007-10-21 11:15
2007.11.11
Listview повторы


2-1192777283
Quart
2007-10-19 11:01
2007.11.11
PickList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский