Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамическое Popupmenu
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
YurKaluga
Собственно вопрос в "Описании темы ".
Программно наполняю Popupmenu.
Обработчик выбора - один на все (заранее не знаю, сколько будет пунктов).
В обработчике нужно в зависимости от выбранного пункта, выполнить что-то.
Не могу найти у Popupmenu свойство, которое показывает индекс выбранного пункта.ypriamii.gif
Помогите, плиз!!!
Нужно срочно.
hardcase
Тем, элементам, которые ты создаёшь, нужно назначить обработчик OnClick.
var
Item: TMenuItem;
...

Item:=TMenuItem.Create(PopupMenu1);
...
Item.OnClick:=OnMenuItemClick;
...
PopupMenu1.Items.Add(Item);


Этот обработчик может быть универсальным (как в примере), тогда, чтобы узнать, индекс пункта меню надо выполнить Parent.IndexOf()
procedure TForm1.OnMenuItemClick(Sender: TObject);
var Item: TMenuItem absolute Sender; // stupid typecast =)
Index: integer;
begin
Index:=Item.Parent.IndexOf(Item);
end;
YurKaluga
Спасибо за помощь.
У меня получилось по другому:
Код
  //Заполняем меню из списка
For i:=0 to Rec_Count do begin
   PopupMenu2.Items.Add(NewItem(Types[i]{это массив такой},0,False,True,MenuItemClick,0,'MI'));
   PopupMenu2.Items[i].Tag:=i;
end;

//А это обработчик меню для StringGrid. Просто нужен был в таблице типа ComboBox
procedure TForm3.MenuItemClick(Sender: TObject);
begin
      SG.Cells[1,SG.Row]:=PopupMenu2.Items[(Sender as TMenuItem).Tag].Caption;
end;

Но за помощь все равно спасибо.
hardcase
Да, пользоваться Tag даже быстрее, и в некоторых случаях безопаснее =)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.