Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

динамическое создание элементов в TPopupMenu и обработка   Найти похожие ветки 

 
AlexeiBerkov ©   (2007-05-15 18:12) [0]

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

На форме есть компонент 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;



 
G_M_S ©   (2007-05-15 18:21) [1]

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

MyItem[i].TAG := i;

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

case (Sender as TMenuItem).Tag of

1:begin
...
end;

..........


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


> MyItem[i].TAG := i;


Работает!

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


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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.313 c
3-1173587325
O.O
2007-03-11 07:28
2007.06.03
Большие числа int64/LargeInt


2-1179071022
Kostafey
2007-05-13 19:43
2007.06.03
SQL Query Analyzer vs ADO: различия в интерпритации даты


15-1178816168
Ёжик
2007-05-10 20:56
2007.06.03
IP сервер-декодер Axis 292 и сетевая камера Axis


11-1161100472
Sapersky
2006-10-17 19:54
2007.06.03
OnEndEditLVItem


2-1179003400
aha
2007-05-13 00:56
2007.06.03
Как можно выполнить следующую процедуру ? имеется множество





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский