Форум — Ответы ( К темам )
? | Михаил: Активация нужной MDI Формы. (05-04-2003 00:13:54) |
Как сделать так, чтобы при открытии нескольких дочерних окон можно была активировать нужное дочерние окно (Например при нажатие кнопки ToolButton1 на родительской форме) . Это должно работать по прицепу как работает Microsoft Word Меню Окна. Мне нужен пример активации. Через само меню, где создаются его пункты автоматически мне не надо. (Builder C++) | |
Владимир (06-04-2003 13:12:29) | |
При создании форм окна индексируются в порядке их создания, последнее
созданное имеет индекс 0.
Свойство MDIChildren[i] дает доступ к i-му окну.
Закрыть из родительской формы некое дочернее окно: MDIChildren[i]->Close();
Тоже самое и с активацией нужного окна, например так:
(FDoc — имя fsMDIChild формы)
//--------------------------------------------------------------------------- // создаем новый документ, добавляем его в TListBox void __fastcall TForm1::Button1Click(TObject *Sender) { static int num = 0; TFDoc* FDoc = new TFDoc(this); if( !FDoc) return; FDoc->Caption = "Документ "+IntToStr(MDIChildCount); FDoc->Tag = num; ListBox1->Items->AddObject(FDoc->Caption, (TObject*)num); num++; FDoc->Show(); } //--------------------------------------------------------------------------- // устанавливаем фокус выбранному в ListBox1 документу void __fastcall TForm1::Button2Click(TObject *Sender) { int n = (int)ListBox1->Items->Objects[ListBox1->ItemIndex]; for(int i=0; i < MDIChildCount; i++){ if(MDIChildren[i]->Tag == n) { MDIChildren[i]->Show(); break; } } } //--------------------------------------------------------------------------- | |
Alexander (07-04-2003 11:11:10) | |
Есть одно замечание. Это сначала они с такими номерами, по созданию. При выборе дочернего окна оно становится MDIChildren[0]. Но если запихать его номер в tag, тогда, конечно, проблем нет :) |