Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.29;
Скачать: 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 вся ветка

Текущий архив: 2004.02.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
3-93778
John S.
2004-02-04 08:01
2004.02.29
AdoCommand


3-93812
Filat
2004-02-02 17:23
2004.02.29
Есть ли возможность оптимизировать или улучшить код?


4-94251
Невозмутимый
2003-12-23 15:43
2004.02.29
НООК? !


1-93899
Jeen
2004-02-14 22:44
2004.02.29
Доступ к списку команд, вводившихся в


4-94236
FeRR
2003-12-22 16:39
2004.02.29
Опять про SendMessage ;)