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

Вниз

Как программно добавить новый пункт меню в PopupMenu?   Найти похожие ветки 

 
azl ©   (2007-09-19 18:22) [0]

Здравствуйте, уважаемые мастера.
Помогите, пожалуйста, разобраться в следующем:
Есть у меня RxSpeedButton1 и RxPopupMenu1. RxSpeedButton1 - DropDownMenu = RxPopupMenu1. Т.е. при нажатии на RxSpeedButton1 выпадает менюшка.

Подскажите, пожалуйста, как программно (например, OnFormActivate) добавить новый пункт меню в RxPopupMenu1 и чтобы при нажатии на вновь созданный пункт меню его Caption присваивался Caption"у RxSpeedButton1.

Я нашел некоторый код, но он не совсем работает.

with PopUpMenu1.Items do
begin
  Add(NewItem("First Menu", 0, False, True, MenuItem1Click, 0, "MenuItem1"));
  Add(NewItem("Second Menu", 0, False, True, MenuItem2Click, 0, "MenuItem2"));
  Add(NewItem("Third Menu", 0, False, True, MenuItem3Click, 0, "MenuItem3"));
  Add(NewLine); // Добавляем разделитель
  Add(NewItem("Fourth Menu", 0, False, True, MenuItem4Click, 0, "MenuItem4"));
end;

Если вместо MenuItem1Click-MenuItem4Click написать OnClick, то менюшки добавляются, иначе пишет Undeclared identifier.

Но это только добавляется пункт меню. А как сделать, чтобы при нажатии на этот пункт происходило какое-то событие?

Заранее огромное спасибо за помощь.


 
Германн ©   (2007-09-19 18:31) [1]

В справке по TMenu очень подробные примеры


 
oldman ©   (2007-09-19 18:42) [2]


> Но это только добавляется пункт меню. А как сделать, чтобы
> при нажатии на этот пункт происходило какое-то событие?


Надо добавить событие...


 
azl ©   (2007-09-19 18:47) [3]


> Германн ©

Что-то ничего в справке Delphi 2006 я не нашел с примерами.


> oldman ©

А пример можно?


 
oldman ©   (2007-09-19 18:50) [4]


> azl ©   (19.09.07 18:47) [3]
> > oldman ©
> А пример можно?


Компонет.Событие:=НужнаяФункция...
Что, хелп отменили специальным постановлением совнаркома?


 
azl ©   (2007-09-19 19:04) [5]


> oldman ©

Спасибо, что хоть не матом. Было бы все так просто в хелпе найти, я бы не спрашивал.


 
Джо ©   (2007-09-19 19:35) [6]

> А как сделать, чтобы при нажатии на этот пункт происходило
> какое-то событие?

Создаем обработчик события (метод, описанный в типе события, т.е., с нужными параметрами, типом вызова, возвращаемым результатом). Так как это метод, то это должна быть процедура/функция некоего класса. Для простоты пусть он будет членом класса формы:

 TForm3 = class(TForm)
   procedure FormClick(Sender: TObject);
 private
   procedure OnMenuClick (Sender: TObject);
 end;

Пояснение. Метод имеет такие параметры, потому, что в событие TMenuItem.OnClick описано как property OnClick: TNotifyEvent, а TNotifyEvent, в свою очередь, как TNotifyEvent = procedure(Sender: TObject) of object.

Теперь свойству OnClick новосозданного экземпляра TMenuItem мы можем присвоить этот обработчик:

Add(NewItem("First Menu", 0, False, True, OnMenuClick, 0, "MenuItem1"));

Содержимое обработчика варьируется от того, что, собственно, в нем должно происходить. Например, выводим текст пункта меню:

procedure TForm3.OnMenuClick(Sender: TObject);
begin
 if Sender is TMenuItem then
   ShowMessage (TMenuItem(Sender).Caption)
end;


 
Инс ©   (2007-09-19 20:03) [7]

Удалено модератором
Примечание: Предлагаю не флудить.


 
Virgo_Style ©   (2007-09-19 20:24) [8]

Удалено модератором
Примечание: Флуд


 
имя   (2007-09-19 20:59) [9]

Удалено модератором


 
имя   (2007-09-19 22:24) [10]

Удалено модератором



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

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

Наверх





Память: 0.47 MB
Время: 0.041 c
15-1189268654
Gorlum
2007-09-08 20:24
2007.10.14
Плата MSI - а как узнать конкретно какая?


2-1189674456
alles
2007-09-13 13:07
2007.10.14
Как правильно уничтожать обьекты?


2-1189972791
Alexey_K
2007-09-16 23:59
2007.10.14
Окно, подобие понели задач


9-1161443298
Xdebugger
2006-10-21 19:08
2007.10.14
ODE


15-1189600171
zdm77
2007-09-12 16:29
2007.10.14
Фискальный регистратор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский