![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамическое создание элементов в 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;
..........