Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можна ли добавлять динамически пункты меню в MainMenu?


Ande ©   (2005-08-19 10:51:00) 

Можна ли добавлять динамически пункты меню в MainMenu?


Ande   (2005-08-19 12:33:00) [1]

не мешает, конечно. Но в хелпе используются понятия которые не понятны начинающему.
Спасибо за:

> syte_ser78 ©   (19.08.05 12:22) [12]

и

> Ega23 ©   (19.08.05 12:25) [13]

Теперь понятно. Просто я никогда не работал с MainMenu


Ega23   (2005-08-19 12:26:00) [2]

конференция  потому и называется "для начинающих", чтоб задавать "глупые", по вашему мнению вопросы

Что не мешает начинающим хотя бы иногда заглядывать в Help, не так ли?


Ega23   (2005-08-19 12:25:00) [3]

i - это индекс того мамого родительского MenuItem

var
i, ParentItem:Integer;
MenuItem:TMenuItem;
begin
MenuItem:=TMenuItem.Create(PopupMenu1);
MenuItem.Caption:='Здесь есть подменю из пяти пунктов';
ParentItem:=PopupMenu1.Items.Add(MenuItem);

for 1:=1 to 5 do
 begin
  MenuItem:=TMenuItem.Create(PopupMenu1);  
  MenuItem.Caption:='Подменю №'+IntToStr(i);
  PopupMenu1.Items[ParentItem].Add(MenuItem);
 end;

end;


syte_ser78   (2005-08-19 12:22:00) [4]

Ande   (19.08.05 12:14) [10]
:))))

i - это переменная. Целое положительное число заданное вами явно либо перебираемое в цикле. Нумерация итемов начинается с нуля.
Если нужно добавить пунк подменю в первое меню пишеш
mainmenu.items[0].add...
первый пункт подменю первого меню
mainmenu.items[0].items[0].add...
и т.д.


Ande   (2005-08-19 12:21:00) [5]


> Ega23 ©   (19.08.05 12:14) [9]
> Блин, ну посмотри же Help наконец-то!

конференция  потому и называется "для начинающих", чтоб задавать "глупые", по вашему мнению вопросы


Ega23   (2005-08-19 12:14:00) [6]

Блин, ну посмотри же Help наконец-то!


TMenuItem.Add

Adds one or more menu items to the end of the Items property array.

procedure Add(Item: TMenuItem); overload;
procedure Add(const AItems: array of TMenuItem); overload;

Description

Use Add to add new menu items to the dropdown menu for this menu item. If this menu item is the value of the Items property of a main menu or pop-up menu, Add adds the items to the end of the menu.

Specify a single new menu item to add as the value of the Item parameter, or an array of new menu items as the value of the AItems parameter.


Ande   (2005-08-19 12:14:00) [7]

что такое i?
syte_ser78, может у Вас есть описание какое-то по этому вопросу. Буду очень благодарен.


syte_ser78   (2005-08-19 12:10:00) [8]

Ande   (19.08.05 12:06) [7]
mainmenu1.Items[i].Add(menuitem);


Ande   (2005-08-19 12:06:00) [9]

спасибо
А с подменю можна так делать?


syte_ser78   (2005-08-19 11:52:00) [10]

Ega23 вроде как ответил.
Меняеш
MenuItem.Caption:=FieldByName('InfaddNam').AsString;
на
MenuItem.Caption:='New';
будет то что хочеш.

var
  menuitem:tmenuitem;
begin
  MenuItem:=TMenuItem.Create(mainmenu1);
  menuitem.Caption:='new';
  mainmenu1.Items.Add(menuitem);
end;


Ande   (2005-08-19 11:44:00) [11]


> mainmenu1.Items.Add


извиняюсь, но можна еще подробней. Например надо добавить пункт 'New'.


Ega23   (2005-08-19 11:27:00) [12]


With RQInfAdds do
 begin
  if IsEmpty then Exit;
  ilMenuImages.Clear;
  First;
  While not Eof do
   begin
    MenuItem:=TMenuItem.Create(DataMenu);
    MenuItem.Caption:=FieldByName('InfaddNam').AsString;
    MenuItem.ImageIndex:=LoadBitmap(RQInfAdds,'InfaddImg',ilMenuImages);
    MenuItem.Tag:=FieldByName('InfaddID').AsInteger;
    MenuItem.ShortCut:=TextToShortCut(FieldByName('InfaddKey').AsString);
    MenuItem.OnClick:=MenuItemClick;
    DataMenu.Items.Add(MenuItem);
    Next;
   end;
 end;


syte_ser78   (2005-08-19 11:14:00) [13]

mainmenu1.Items.Add


Ande   (2005-08-19 11:07:00) [14]

Как?


Ega23   (2005-08-19 11:05:00) [15]

Можно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо