C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MDI
Vitalik_K
Отправлено: 25.09.2005, 08:00


Ученик-кочегар

Группа: Участник
Сообщений: 7



Подскажите как закрыть дочернюю форму MDI приложения?
Doga
Отправлено: 25.09.2005, 16:00


Мастер участка

Группа: Участник
Сообщений: 575



1. Самый надёжный способ:
В верхнем правом углу Вашей формы есть 3 (три) маленьких кнопочки. Переместите курсор мышки на ту из них, на которой нарисован крестик (х) и нажмите правую кнопку мышки (подробнее о манипуляторах типа "МЫШЬ" можно почитать например здесь:
[URL=http://lib.csu.ru/DL/bases/prg/frolov/books/bsp/v10/ch6.htm)]
http://www.minnet.ru/index.php?showtopic=1...aded&show=&st=&
http://lib.csu.ru/DL/bases/prg/frolov/book.../ch6.htm)[/URL].


Надёжность остальных способов зависит от расположения так называемых мозгов (если они там на чём сидят — дальше можно не читать) и отсутствия кривизны рук (это заболевание в принципе излечимо, но для этого требуются огромные усилия лечящего персонала и, главное, желание больного).


2. Можно вызвать метод дочерней формы Close():

CODE

ChildForm->Close();


3. Можно воспользоваться свойствами главной формы ActiveMDIChild или MDIChildren и MDIChildCount.
CODE

MainMDIForm->ActiveMDIChild->Close();


Это если закрываемая Вами форма является активной.

Если она не активна тада напр так:

CODE

for (int k = 0; k < MainMDIForm->MDIChildCount; k++)
{
if (MainMDIForm->MDIChildren[k] == ChildForm)
//Здесь, по большому счёту, выбор способа определения соответствия остаётся за Вами. В данном случае по указателю...
{
MainMDIForm->MDIChildren[k]->Close();
break;
}
}



Только это все не даст никакого результата, если в событии дочерней формы OnClose() Вы не пропишете:

CODE

Action = caFree;


Есть ещё несколько способов, но они либо имеют побочные эффекты (Reset или Power), либо потребуют от Вас мастерства хирурга при работе с инструментами Win API.

Отредактировано Doga — 25/09/2005, 16:32

Вернуться в Вопросы программирования в C++Builder