Вниз
Скачать: 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
4-94228
Dark Elf
2003-12-23 15:50
2004.02.29
Имя запускающего приложения


1-93863
Leech
2004-02-16 14:41
2004.02.29
Парсим ошибки от StrToInt()


3-93786
CAV (Alexander)
2004-02-02 13:36
2004.02.29
Преобразование даты в MS SQL 2000


1-93925
Sour
2004-02-15 12:49
2004.02.29
Как определить размер (высоту формы) без меню?


3-93777
ivan01234
2004-02-03 22:08
2004.02.29
InterBase - регистрация базы данных




   Наверх