IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Событие для динамически созданного компонента
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Продолжнение "Вызывает антирес и такой ишо разрез"
Как можно осуществить событие для динамически созданного компонента? Проблема в том, что программа модульная и "процедура не описана как метод формы".
procedure MyOnClick(Sender: TObject);
begin
form1.Label1.Caption:=inttostr(form1.MainMenu1.Items.IndexOf(sender as TMenuItem));
end;

procedure CreateSubMenu(MainMenu: TMainMenu; p: TP);
var
i,j: integer;
k: longint;
N: TMenuItem;
begin
k:=3;
//...
SetLength(MenuItemArray, 2, k);
for j:=0 to k-1 do
for i:=0 to 1 do
begin
N:=TMenuItem.Create(MainMenu);
n.Caption:=inttostr(i)+inttostr(j);
n.OnClick:=MyOnClick; //вот здесь пишет Incompatible types: 'method pointer and regular procedure'
MainMenu.Items[i+1].items[1].Insert(j,n);
MenuItemArray[i][j]:=n;
end;
end;

Сама программа: Прикрепленный файл  VstupInfo.rar ( 275.13 килобайт ) Кол-во скачиваний: 506


Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Как можно осуществить событие для динамически созданного компонента?
Легко:

procedure CreateSubMenu(MainMenu: TMainMenu; p: TP);
var
// ...
M: TMethod; // Делай раз !!!
begin
// ...
// n.OnClick:=MyOnClick; // Это не нужно

M.Code := @MyOnClick; // Делай два !!!
M.Data := n;
n.OnClick := TNotifyEvent(M); // Всё, собственно, обработчик установлен

// ...
end;
Работоспособность твоего кода не проверял, ибо не надо использовать нестандартных компонентов smile.gif Не у всех они присутствуют.

Добавлено через 2 мин.
Да, кстати, на предупреждения компилятора тоже обращай внимание, ладно? У тебя будет как минимум одно предупреждение, связанное с некорректной работой с переменными цикла (хоть проект и не открылся в Дельфи, но как текстовый файл я его просмотрел, это предупреждение видно невооруженным взглядом).
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 6:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name