Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Закрытие дочерней формы или всего приложения.   Найти похожие ветки 

 
Charly22   (2004-10-02 20:37) [0]

Доброго времени суток всем!

Для того, чтобы избежать случайного закрытия дочерней формы, я написал для нее следующее:


procedure TChForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if (MessageBox(MainForm.Handle,
     PChar("Завершить работу с этим набором данных?"),
     PChar("Завершение работы с набором изображений"),
     MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TASKMODAL) = IDNO)
     then CanClose := False;
end;


При попытке закрыть одну из дочерних форм, и при положительном ответе, все формы закрываются сразу, А вопрос показывается только один раз. Тут все нормально, так задумано.

Но если я буду закрывать главную форму, то опять появляется этот же вопрос. Причем, он появляется столько раз, сколько дочерних окон у меня открыто. Что в общем неудобно.
 Я хотел бы, чтобы при попытке закрыть главную форму появлялся один вопрос, типа: "Завершить работу с программой?" и все. Если "Да", то надо просто закрыть все и не показывать больше никаких вопросов.

 Как тут разрулить эту ситуацию? Ведь главная форма, прежде чем сама закроется, закрывает сначала все дочерние окна. Т.е. событие OnCloseQuery для дочерней формы происходит раньше, чем OnCloseQuery для главной формы.


 
KilkennyCat ©   (2004-10-02 20:55) [1]

навскидку: сделать флаг.


 
Charly22   (2004-10-02 22:23) [2]

Ага. Сделать флаг. Его значение присваивать в OnCloseQuery главной формы, а в OnCloseQuery дочерней формы производить проверку этого флага, и в зависимости от этого выводить или не выводить вопрос....

Все это уже пробовали - не прокатило. OnCloseQuery дочерней формы выполняется _РАНЬШЕ_, чем OnCloseQuery главной формы.

Еще есть какие-нибудь варианты?
Спасибо за внимание!


 
KilkennyCat ©   (2004-10-02 23:12) [3]

ща подумаю, чето запутался, кто раньше, кто позже... :) ща покурю и выдам гениальное решение.


 
KilkennyCat ©   (2004-10-02 23:15) [4]

Во:

procedure TChForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Flaf = надо then
if (MessageBox(MainForm.Handle,
    PChar("Завершить работу с этим набором данных?"),
    PChar("Завершение работы с набором изображений"),
    MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TASKMODAL) = IDNO)
    then CanClose := False else Flag := ненадо;
end;


в каждой форме. первая же закрывающая выставит флаг. Не проверял.



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

Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.032 c
3-1094180249
Новенький
2004-09-03 06:57
2004.10.17
Поиск по базе


3-1095541416
Distortion
2004-09-19 01:03
2004.10.17
Работа с базами данных, как?


1-1096741709
Татьяна
2004-10-02 22:28
2004.10.17
Разрешение экрана


14-1096025807
Dmitriy O.
2004-09-24 15:36
2004.10.17
Конвертирование BMP в векторную графику и 3D


1-1096630109
Kolan
2004-10-01 15:28
2004.10.17
Delphi + новая компонента = НЕРАБОТАЕТ delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский