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 FindWreckersOnline(var Memo: TMemo;source: string);
var
srvReply: TStringStream;
Poem: string; // Подразумевается WideString

i, start, finish, counter: integer;
SL: TStringList;
begin
srvReply := TStringStream.Create('', 1251); // Будем получать данные в кодировке 1251
Form1.IdHTTP1.Get(source, srvReply);
Poem := srvReply.DataString; // Пересылаем в строку полученную информацию ...

... при этом работу по перекодировке из 1251 (или любой другой кодировки, которая указана в TStringStream.Create вторым параметром) возьмет на себя Дельфи.

Цитата
Ого, я тоже всегда считал, что если цикл завершился, то "loop variable" будет равна конечному параметру..
Очень плохо. Я тысячу раз говорил, что это не так, ни в Дельфи ни в Паскале, нигде это не должно подразумеваться, но никто ж не слушает... И в Турбо Паскале тоже нельзя было полагаться на подобное поведение, но на это тоже всем наплевать, здесь и сейчас работает и ладно.

Цитата
А что делать если в MyOnClick нужно еще передать дополнительные параметры?
Подумать, так ли они нужны на самом деле. Потому что обработчик события OnClick имеет строго определенную сигнатуру:
Цитата
type TNotifyEvent = procedure (Sender: TObject) of object;
, что явно не подразумевает передачу дополнительных параметров. Попробуй передать доп. параметры (а самое главное - обработать их в самОй процедуре), если обработчик - метод класса, то есть, без этих всяких ухищрений с TMethod... Получится у тебя это?
 К началу страницы 
+ Ответить 

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


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

 





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