Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как переделать приложение в Mdi

4.2K
06 мая 2005 года
Крыс
98 / / 06.05.2005
Я сделала довольно большое приложение, а теперь хочу чтоб оно выглядело как MDI... Вот только не могу понять как его переделать таким образом.
Помогите пожалуйста...
За ссылки на книги где есть подробная инфа по MDI-приложениям - отдельное спасибо.
6.4K
06 мая 2005 года
MerlinWind
52 / / 01.05.2005
в "главной" стартовой форме установи стиль формы fsMDIForm. В остальных fsMDIChild.В свойствах проекта перевиди их с Auto-create forms в Available forms.Для удобства в материнской форме
поставь меню.И по нужному событию создавай свои
Child формы:
void __fastcall TMainForm::N111Click(TObject *Sender)
{
Application->CreateForm(__classid(TForm1), &Form1);
}
когда будешь закрывать "ребенка"
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action=caFree;
}
4.2K
06 мая 2005 года
Крыс
98 / / 06.05.2005
MerlinWind
!!! Спасибо огромное, все получилось!!!
Вот только я сразу кнопки из главной формы не убрала, довольно забавный эффект получился :)
Еще раз спасибо
4.2K
07 мая 2005 года
Крыс
98 / / 06.05.2005
Получается такая штука, если я создаю несколько дочерних окон для одной и той же формы одновременно, то первый раз при нажатии на кнопку ок, все работает форма закрывается без проблем, а во второй форме возникает ошибка


void __fastcall TfrmProvince::btnOkClick(TObject *Sender)
{
int q;
try {
qrProvince->ApplyUpdates();
dmAdress->trAdress->CommitRetaining();
frmProvince->Close();
} catch (Exception &E) {
dmAdress->trAdress->RollbackRetaining();
q = MessageDlg("?", mtError, mbOKCancel,0);//const TModalResult AModalResult
if (q == mrOk) {
frmProvince->Close();
}
}
}

события формы
void __fastcall TfrmProvince::FormClose(TObject *Sender,
TCloseAction &Action)
{
Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TfrmProvince::FormCloseQuery(TObject *Sender,
bool &CanClose)
{
CanClose = true;
}

Но если закрыть форму нажатием на крестик, такого не происходит, Хотя ошибка выдается именно в строке frmProvince->Close();
10
07 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Крыс
первый раз при нажатии на кнопку ок, все работает форма закрывается без проблем, а во второй форме возникает ошибка


Гы. Я в таких случаях советую удалить описание переменной frmProvince на фиг, чтобы компилятор начал ругаться еще на этапе компиляции. Есть шанс при этом лучше понять основы ООП.

Почему frmProvince->Close(); а не просто Close()? Первый вариант означает "закрыть форму frmProvince", второй "закрыть форму, в которой описан метод". Есть разница?

А при использовании в программе нескольких экземпляров одного класса формы все-таки советую удалять созданную средой переменную сразу же, чтобы в процессе программирования сознательно выбрать правильный способ работы с экземплярами классов.

4.2K
07 мая 2005 года
Крыс
98 / / 06.05.2005
Спасибо, о причине я догадывадась, ток не знала как ее обойти.. Разницу я чувствую немного
Даже не догадывалась что можно использовать Close сам по себе...
Спасибо...

Цитата:
Originally posted by Freeman
А при использовании в программе нескольких экземпляров одного класса формы все-таки советую удалять созданную средой переменную сразу же, чтобы в процессе программирования сознательно выбрать правильный способ работы с экземплярами классов.



А как обращатся тогда к методам формы "в которой описан метод" , если удалить переменную? Или этого делать ваще не надо?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог