Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.02.2014, 23:35
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию Обработчик на динамически созданный пункт меню

Код:
procedure ReceiveFile (FileName: String);
begin
    ...
//некое действие
    ...
end;
Код:
procedure TForm1.FormCreate(Sender: TObject);  
var mi: TMenuItem;
     LF: TStringList;    i: Byte;
begin
 
                .......................................

  mi:= TMenuItem.Create(Self);
  mi.Caption:= LF[i];
  mi.Hint:= Optns.ReadString(LF[i]);

  mi.OnClick:= //Вот тут и загвоздочка

  PopupMenu2.Items.Insert(1, mi);

              ................................................

end;
Есть процедура принимающая параметр, динамически создается MenuItem, задача в том что бы на mi.OnClick выполнялась procedure ReceiveFile (FileName: String)
Ответить с цитированием
  #2  
Старый 15.02.2014, 23:41
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Делаешь метод, в параметрах Sender. Можно создать автоматом дабл-кликом на идентичном объекте (меню итем), потом убрать его как обработчик. Ну и назначаешь.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 16.02.2014, 09:04
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Делаешь метод, в параметрах Sender. Можно создать автоматом дабл-кликом на идентичном объекте (меню итем), потом убрать его как обработчик. Ну и назначаешь.
Можно пример?
Ответить с цитированием
  #4  
Старый 16.02.2014, 10:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  private
    { Private declarations }
    procedure Click1Click(Sender: TObject);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 16.02.2014, 16:42
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию

Цитата:
Ну и назначаешь
Как понять "назначаешь"? mi.OnClick - событие (TNotifyEvent), обработчик это процедура (или как правило процедура?) для компонента добавленного в DesignTime обработчик назначаю в инспекторе объектов, а как это делается для динамически создаваемых компонентов? Вроде что-то с указателями связано, но я не понял.
Еще вопрос в догонку: у TMenuItem есть свойство Hint: String, оно как то по-другому работает по сравнению с аналогичным свойсвом, например, у кнопки?

Последний раз редактировалось Помидоркин, 16.02.2014 в 16:50.
Ответить с цитированием
  #6  
Старый 16.02.2014, 16:50
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

На самом деле всё очень просто. Предварительно создаёте свой обработчик, идентичный по входным/выходным параметрам "родной" процедуре обработки для создаваемого компонента напр.
Код:
private
procedure MyClick(Sender: TObject);
...

procedure TForm1.MyClick(Sender: TObject);
begin
// здесь всё что нужно выполнить при событиии
end;
затем при создании назначаете
Код:
...
mi.OnClick:=MyClick;
...
вот и всё
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Помидоркин (16.02.2014)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:31.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025