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

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

динамическое создание элементов в TPopupMenu и обработка [D5, D6, D7, 2000, XP]


AlexeiBerkov ©   (2007-05-15 18:12:00) 

Доброго всем времени суток!

На форме есть компонент TPopupMenu.

Его элементы я создаю динамически. При этом в свойстве OnClick я указываю   некий свой метод. Всё отлично! Всё работает!  НО !  Возникает вопрос:   как мне в этом обработчике (в этой функции) узнать имя токо пункта меню, которым был вызван обработчик?

Ниже привожу кусок программного кода:



type
  PopupMenu: TPopupMenu;

procedure MyPopupHandler(Sender: TObject); // собственно обработчик
procedure genereteMenu();                          // генератор меню
.............

procedure TMainForm.genereteMenu();
var
   MyItem: array[0..10] of TMenuItem;
   i: Integer;
   nameOfComponent:string;
begin

 for i := 0 to 10 do begin
     nameOfComponent:='Item' + inttostr(i);
     MyItem[i] := TMenuItem.Create(Self);
     MyItem[i].Caption := 'New item ' + IntToStr(i);
     MyItem[i].OnClick:=MyPopupHandler;
     MyItem[i].Name:=nameOfComponent;
     PopupMenu.Items.Add(MyItem[i]);
 end;

end;

procedure TMainForm.MyPopupHandler(Sender: TObject);
begin
 with Sender as TMenuItem do begin
       // вот тут и возникают вопросы
 end;
 ShowMessage('А я обработчик');
end;


jaggies   (2007-05-15 18:38:00) [1]

посмотри свойства сендера


AlexeiBerkov   (2007-05-15 18:23:00) [2]


> MyItem[i].TAG := i;


Работает!

Спасибо!
Долго мучАлся....


G_M_S   (2007-05-15 18:21:00) [3]

При создании компонента -

MyItem[i].TAG := i;

В обработчике:

case (Sender as TMenuItem).Tag of

1:begin
...
end;

..........


Наверх

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