Форум: "Основная";
Текущий архив: 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