idhas |
Отправлено: 21.12.2005, 11:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 17
|
Есть такая проблема. Нельзя закрыть дочернее окно (в билдере или везде, не знаю), т.е. оно просто сворачивается. Если делать на OnClose ф-цию АПИ DestroyWindow(), то при вызове окна его приходится полностью создавать, т.е. Application->CreateForm(__classid(TFDishesList), &FDishesList);. В результате может быть создано несколько окон (дочерних, т.к. у них стиль fsMDIChild). Ну и собственно как от этого избавиться? Может быть есть другой способ закрытия или еще что-то. Заранее спасибо. |
|
idhas |
Отправлено: 21.12.2005, 14:16 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 17
|
В принципе, сделал так:
QUOTE |
bool exist=false;
for(int i=0; i<.MDIChildCount; i++)
if (MDIChildren[i]->ClassName().operator AnsiString()=="TFCustomers") { exist=true; break; }
if (!exist) Application->CreateForm(__classid(TFCustomers), &FCustomers);
//else |
Однако, есть ф-ция API, которая возвращает HWnd дочернего окна указанного класса, может кто-то знает, что за функция и как работает?
Знаю, что есть FindWindowEx, но вроде бы на NT не работает...
Или что-то не так делаю...
Отредактировано idhas — 21/12/2005, 14:22 |
|
Guest |
Отправлено: 21.12.2005, 15:25 |
|
Не зарегистрирован
|
А почему оно просто сворачивается ?
Если вы сделаете дочернему окну Child->Close(); то оно закроется.
|
|
Guest |
Отправлено: 21.12.2005, 15:27 |
|
Не зарегистрирован
|
А дочерние окна лучше создавать
//--- create a new MDI child window ----
Child = new TMDIChild(Application);
а не через Application->CreateForm |
|
Gal |
Отправлено: 21.12.2005, 15:52 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
Закрытие дочернего окна
CODE |
void __fastcall TFormChild::FormClose(TObject *Sender,
TCloseAction &Action)
{
Action = caFree;
}
| |
|