Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Поведение формы, в зависимости откуда вызвана


Автор: iDeus 4.11.2011, 07:35
Здравствуйте, подкиньте пожалуйста пару идей решения следующей проблемы:

Скажем, есть 3 формы: 

1. Большая MDIForm'а с MaimMenu
2. MDIChild форма rStart
3. MDIChild форма rUsers

Форму rUsers можно вызвать 2 способами: через MainMenu с главной формы, и с помощью кнопки на rStart.

Необходимо сделать так, что бы, 
если rUsers вызвана через главное меню, то по закрытию (на крестик), она просто закрывалась(TUsersForm::FormClose), 
а если rUsers вызвана кнопкой с rStart, то по закрытию rUsers, помимо FormClose отрабатывали еще некоторые функции.

В обоих случаях форма rUsers создается "руками":
Код

    TUsersForm* UsersForm;
    UsersForm = new TUsersForm(Application);
    UsersForm->ShowRight();


Может во втором случае, когда форма вызывается кнопкой с rStart, можно как-то так организовать этот вызов, что бы событие нажатия кнопки ждало, пока rUsers будет закрыто:
Код

void __fastcall TStartForm::bb_usersClick(TObject *Sender)
{
    this->HideLeft();

//создаем и показываем форму
    TUsersForm* UsersForm;
    UsersForm = new TUsersForm(Application);
    UsersForm->ShowRight();
//ждем ее закрытия
        //дополнительная функция
}
  

Автор: math64 4.11.2011, 12:17
Нужно на FormColse повесить свой обработчик:
Код

void __fastcall TStartForm::bb_usersClick(TObject *Sender)
{
    this->HideLeft();

//создаем и показываем форму
    TUsersForm* UsersForm;
    UsersForm = new TUsersForm(Application);
    UsersForm->ShowRight();
    UsersForm->FormClose = UserFormClose;
}

void __fastcall TStartForm::UserFormCLose(TObject *Sender)
        //дополнительная функция
}

Но если пользователь вместо того, чтобы закрывать UserForm решит закрывать всё приложение, нужно принять меры, чтобы
UsersFormClose не вызывался, если TStartForm будет удалена до UsersForm.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)