Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Как предотвратить 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
7-5278
Rustam_Katana
2002-11-21 08:50
2003.02.03
Recovery Dbf (Необходимо восстановить заголовок таблицы)


1-4843
avch
2003-01-24 15:18
2003.02.03
Как запустить/активизировать приложение


8-5096
Sergey V. Shadrin
2002-10-10 12:10
2003.02.03
формат файла.


1-5011
Alexander Vasjuk
2003-01-23 16:03
2003.02.03
Active Directory


3-4769
nv-vetal
2003-01-16 13:30
2003.02.03
Запрос WHERE и дата. Пишу типа WHERE Date =