![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонента в RunTime [D5, WinXP]
greenrul © (2002-02-25 19:27:00)Не хочет присваиваться процедурка - для нового объекта чтобы если случалось собылие OnPressed включалась процедура RunSomething.
Вообщем вот цитата из кода
private
{ Private declarations }
procedure RunSomething(path:string);
public
{ Public declarations }
procedure NewHotKey(key,action:string);
end;
var
Form1: TForm1;
Binds:array[1..5] of TARHotKey;
i:Integer;
implementation
{$R *.DFM}
procedure TForm1.RunSomething(path:string);
begin
{a}
end;
procedure TForm1.NewHotKey(key,action:string);
begin
binds[i]:=TARHotKey.create(Self);
binds[i].OnPressed:=RunSomething(Form1.caption);
//компилятор НЕ позваоляет это сделать
end;
пробовал
procedure Form1.NewHotKey
procedure NewHotKey
и процедурку из privat"a убирал
однако в вашем FAQ"e - http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988625051&n=19все именно так и описано 8(
Sasha9 (2002-02-26 19:09:00) [1]сделать переменную-папраметр глобальной, тогдаей можно будет пользоваться в любой функции
McSimm (2002-02-26 17:05:00) [2]Процедура одна для всех.
Параметр передается при вызове процедуры.
binds[i].OnPressed:=RunSomething;
Сам binds[i] в какой-то момент производит вызов, приблизительно так:
...
if Assigned(FOnPressed) then FOnPressed(параметры);
...
Вот в этом месте параметры и передаем.
greenrul (2002-02-26 16:07:00) [3]А как тогда присвоить процедуру, но передать ей параметр.
То есть у каждой компоненты есть СВОЯ процедурка - такая же как и у "родительной" - RunSomething но с "своим" параметром?
McSimm (2002-02-25 19:33:00) [4]:)
в нашем FAQ`e написано совсем не так :)
:= RunSomething; // Присвоит адрес процедуры
:= RunSomething(Form1.caption); // Попытается присвоить результат выполнения процедуры.
Разницу заметно?
Sasha9 (2002-02-25 19:31:00) [5]может список параметров не тот
а какую ошибку выдаёт?