Вниз
Скачать: CL | DM;

Объединение главных меню   Найти похожие ветки 

 
Closer ©   (2004-02-15 13:18) [0]

Имеются три формы, на каждой из них расположено MainMenu. Я хочу добавить к главному меню на первой форма главные меню с двух других форм с помощю метода Merge:

MainMenu1.Merge(Form2.MainMenu1);
MainMenu1.Merge(Form3.MainMenu1);

В результате на главной форме остаётся только меню от 3 формы. Что мне надо сделать чтобы добиться желаемого результата?

P.S.
Макет проекта - http://closer.at.tut.by/tmm.zip


 
Defunct   (2004-02-15 16:18) [1]

Лезем в архивы..

Что же там есть..

ага нашел.

Может поможет
// Процедура заменяет содержимое пункта MainMenu, пунктом из другого меню.
Procedure ReplaceMenuItem(Source,Destination:TMenuItem);
Var I:Integer;
MI:TMenuItem;
Begin
For I:=Destination.Count-1 DownTo 0 Do
Begin
Destination.Items[0].Destroy;
End;
For I:=0 To Source.Count-1 Do
Begin
MI:=TMEnuItem.Create(Application);
MI.OnClick:=Source.Items[i].OnClick;
MI.Caption:=Source.Items[i].Caption;
MI.Checked:=Source.Items[i].Checked;
MI.Enabled:=Source.Items[i].Enabled;
MI.Bitmap:=Source.Items[i].BitMap;
MI.Action:=Source.Items[i].Action;
MI.ImageIndex:=Source.Items[i].ImageIndex;
MI.Name:=Format(Source.Name+"TMP%D",[i]);
Destination.Add(MI);
If Source.Items[i].Count>0 Then
ChargeMenu(Source.Items[i],Destination.Items[i]);
End;
Destination.Caption:=Source.Caption;
Destination.Visible:=True;
End;


 
Defunct   (2004-02-15 16:19) [2]

Причем заменяется полностью с учетом всех вложенных меню.


 
Defunct   (2004-02-15 16:23) [3]

извините.. поменял название процедуры, забыв про рекурсивную ссылку. Вот оригинальный вариант процедуры:

// Процедура заменяет содержимое пункта MainMenu, пунктом из другого меню.
Procedure ReplaceMenuItem(Source,Destination:TMenuItem);
Var I:Integer;
MI:TMenuItem;
Begin
For I:=Destination.Count-1 DownTo 0 Do
Begin
Destination.Items[0].Destroy;
End;
For I:=0 To Source.Count-1 Do
Begin
MI:=TMEnuItem.Create(Application);
MI.OnClick:=Source.Items[i].OnClick;
MI.Caption:=Source.Items[i].Caption;
MI.Checked:=Source.Items[i].Checked;
MI.Enabled:=Source.Items[i].Enabled;
MI.Bitmap:=Source.Items[i].BitMap;
MI.Action:=Source.Items[i].Action;
MI.ImageIndex:=Source.Items[i].ImageIndex;
MI.Name:=Format(Source.Name+"TMP%D",[i]);
Destination.Add(MI);
If Source.Items[i].Count>0 Then
RepalceMenuItem(Source.Items[i],Destination.Items[i]);
End;
Destination.Caption:=Source.Caption;
Destination.Visible:=True;
End;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.016 c
6-94055
KPV-10k
2003-12-23 20:20
2004.02.29
Как перед активацией сокета определить, занят ли на данной машине


1-94000
DimonNew
2004-02-17 10:12
2004.02.29
Динамические массивы


1-93951
anbezr
2004-02-18 17:56
2004.02.29
как выполнить Bring To Front


7-94204
SIA
2003-12-09 11:17
2004.02.29
Как можно программно сделать раздел винта активным?


7-94212
Petr7
2003-12-09 20:48
2004.02.29
irda




   Наверх