![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметра
Антон1209 © (2006-02-03 10:31:00)constructor TAuditItem.Create(AOwner: TComponent; AName, ACaption: string);
begin
inherited Create(AOwner);
Name:=AName;
Caption:=ACaption;
OnClick:=ShowAuditWindow( AOwner);
end;
procedure TAuditItem.ShowAuditWindow(Sender : TObject);
хочу передать AOwner в процедуру ShowAuditWindow возникает ошибка, не могу понять почему, помогите.
[Error] ViewSimple.pas(717): Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'
Антон1209 (2006-02-03 10:57:00) [1]все это и нужно было спасибо :-)
evvcom (2006-02-03 10:51:00) [2]А ты его косвенно и так передаешь:
OnClick:=ShowAuditWindow;
...
procedure TAuditItem.ShowAuditWindow(Sender : TObject);
begin
TComponent(Sender).Owner // это и есть твой владелец
Digitman (2006-02-03 10:49:00) [3]
> Да понял
Ну где же понял-то ?!
Зачем передавать владельца , если в Sender впри вызове обработчика предназначен для указания компонента-источника (!) события (источник у тебя TAuditItem), а не компонента-владельца, коего в общем случае у компонента TAuditItem может и не быть ?
constructor TAuditItem.Create(AOwner: TComponent; AName, ACaption: string);
begin
..
OnClick:=ShowAuditWindow;
end;
И все !
И ничего выдумывать не надо !
Когда произойдет событие TAuditItem.OnClick, будет вызван метод TAuditItem.ShowAuditWindow со значением переданного параметра Sender, соответствующим ссылке на конкретный компонент TAuditItem, который "кликнули"
Антон1209 (2006-02-03 10:43:00) [4]Да понял, а как тогда мне лучше передать владельца компонента TAuditItem в процедуру ShowAuditWindow?
Digitman (2006-02-03 10:35:00) [5]Не понятно, с какой стати источником события (Sender) должен быть некий заранее не известный владелец компонента TAuditItem, если он, компонент TAuditItem, как раз сам и является источником события ?