Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Вниздоступ к дочерним окнам MDI Найти похожие ветки
← →
Oleg_Al (2003-10-10 10:11) [0]А если усложнить по отображению дочнрних окон MDI на ToolBar"e: есть n- цадть (очень много) дочерних форм и крайне сложно к методу вызова каждой из них подписывать код, создающий кнопку на ToolBar"e.
Есть ли некое событие, реагирующее на создание дочерней формы для заданной главной, к которому и можно было бы привязаться?
Может быть кто-нибудь знает, как работает механизм генерации списка дочерних форм для главного меню (свойство TForm WindowMenu) и можно ли использовать как-то его?
← →
Е-Моё имя (2003-10-10 10:27) [1]WM_MDICreate
возьми компонент TElegantMDI например
он с открытым кодом
делает кнопки на панели для окон
← →
Delph (2003-10-10 16:08) [2]>Form2.Tag:=MDIChildCount-1;
Эта строчка не совсем корректна. Существует вероятность появления двух дочерних форм с одинаковыми Tag - ами.
Пример: Допустим вы создали подряд 3 разных дочерних формы Form1, Form2,Form3. У Form3.Tag=2. Затем, закрыли Form1 и Form2.Теперь вновь создадим их: MDIChildCount=2 -> Form1.tag=1;
MDIChildCount=3 -> Form1.tag=2;
Предлагаю такой вариант:
Unit Main;
…
type
TMain_ = class(TForm)
…
procedure prChldShow(Sender: TObject);
…
public
{ Public declarations }
…
procedure prCreateChForm(FType:TComponentClass;FName:TForm);
…
end;
var
Main_: TMain_;
implementation
…
procedure TMain_.prCreateChForm(FType:TComponentClass;FName:TForm);
var I:Integer;
TB:TToolButton;
BEGIN
for I:=0 to MDIChildCount-1 do
begin
if (MDIChildren[I].ClassType = FType) then
begin
MDIChildren[I].BringToFront;
Exit;
end;
end;
Application.CreateForm(FType,FName);
TB:=TToolButton.Create(TBarMain);
TB.Parent:=TBarMain;
TB.Caption:=FName.Caption;
TB.Style:=tbsCheck;
TB.Grouped:=true;
TB.OnClick:=prChldShow;
END;
procedure TMain_.prChldShow(Sender: TObject);
var I:integer;
BEGIN
for I:=0 to MDIChildCount-1 do
begin
if (MDIChildren[I].Caption=TToolButton(Sender).Caption) then
MDIChildren[I].BringToFront;
end;
END;
…
Создаем дочернюю форму нужного нам типа:
procedure TMain_.Button1Click(Sender: TObject);
begin
prCreateChForm(TForm1,Form1);
end;
← →
Юрий Федоров (2003-10-10 16:15) [3]Думаю, что самый простой вариант - общий предок у всех Child форм, в его конструкторе можно делать все, что хочешь с главной формой (и не только :-)))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c