IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Динамическое Popupmenu, Как получить индекс выбранного пункта?
YurKaluga
сообщение 27.01.2006 13:14
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской

Репутация: -  0  +


Собственно вопрос в "Описании темы ".
Программно наполняю Popupmenu.
Обработчик выбора - один на все (заранее не знаю, сколько будет пунктов).
В обработчике нужно в зависимости от выбранного пункта, выполнить что-то.
Не могу найти у Popupmenu свойство, которое показывает индекс выбранного пункта.ypriamii.gif
Помогите, плиз!!!
Нужно срочно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
hardcase
сообщение 27.01.2006 14:38
Сообщение #2


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Тем, элементам, которые ты создаёшь, нужно назначить обработчик 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;


Сообщение отредактировано: volvo - 7.11.2006 18:23


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
YurKaluga
сообщение 27.01.2006 15:30
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской

Репутация: -  0  +


Спасибо за помощь.
У меня получилось по другому:
Код
  //Заполняем меню из списка
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;

Но за помощь все равно спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 27.01.2006 16:08
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Да, пользоваться Tag даже быстрее, и в некоторых случаях безопаснее =)


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 10:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"