Текущий архив: 2007.10.14;
Скачать: CL | DM;
Вниз
Как программно добавить новый пункт меню в 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;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.033 c