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

Вниз

Как предотвратить 2ой FormClose ? (+)   Найти похожие ветки 

 
kba   (2003-01-23 15:59) [0]

Ситуация такая: есть общий родитель для главного и дочернего окна, дочернее окно расположено в bpl а команда на закрытие может быть вызвана из него же или из главной программы..

Обработка закрытия в базовом модуле:

procedure TfrmMasterSlave.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If isSlave Then //Дочернее окно
begin
If Sender is TComponent Then
begin
//Хотел определить что вызов был из главного окна
If TComponent(Sender).owner = Self.owner Then
begin
PostMessage(MainFormfrm.Handle, WM_SLAVEDESTROYED, LongInt(Self), 0);
Action := caNone;


Обработка закрытия в главном окне:

procedure TfrmDeskTop.FunctionClose(Var AfrmSlave :TfrmMasterSlave; AcanClose :boolean);
begin
If Assigned(AfrmSlave) Then
begin
If AcanClose Then
AfrmSlave.Close();
AfrmSlave.Free;
AfrmSlave := nil;


Если Close вызван из дочернего окна то процесс закрытия в нем блокируется и передается главному окну, НО если дочернее окно закрывают из главного то
//Хотел определить что вызов был из главного окна
If TComponent(Sender).owner = Self.owner Then

не различает КТО закрывает окно

Как бы красиво это разрешить?

С Уважением, Борис


 
gsu   (2003-01-23 16:02) [1]

/Хотел определить что вызов был из главного окна
If TComponent(Sender).owner = application.mainForm


 
kba   (2003-01-23 17:20) [2]

Спасибо!

С уважением, Борис


 
kba   (2003-01-23 19:11) [3]

Что то я поторопился:(
При вызове из главной программы AfrmSlave.Close(); в дочерней на FormClose TComponent(Sender) = Self
то есть откуда был сделан Close я не поймал!

С уважением, Борис



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

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

Наверх





Память: 0.44 MB
Время: 0.009 c
1-4949
viper
2003-01-23 11:07
2003.02.03
Иконка


8-5075
Diamond Cat
2002-09-25 00:08
2003.02.03
Анимация на рабочем столе


8-5091
Кен
2002-10-18 01:34
2003.02.03
Как правильно подключить файл справки от RxLib, чтобы при нажатии


4-5333
Сева
2002-11-21 15:10
2003.02.03
Как отправить письмо с помощью mapi


1-4952
Shicoy
2003-01-26 21:48
2003.02.03
Преобразование строки





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