![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Console + TNotifyEvent (... of Object) [D6]
mkmkm © (2006-11-23 13:30:00)Есть не визуальный компонент, который я собрался использовать в консольном приложении.
делаю так
var
myComp: TmyComp;
begin
myComp := TmyComp.Create(nil);
myComp.MyValue := 10;
myComp.OnMyEvent := HereOnMyEvent;
...
...
procedure HereOnMyEvent(Sender: TObject);
begin
//
end;
В TMyComp, OnMyEvent представлен, как FOnMyEvent: TNotifyEvent;
При попытке использовать это код myComp.OnMyEvent := HereOnMyEvent возникает ошибка: Incompatible types: 'method pointer and regular procedure'. Что делать в таком случае?
Джо (2006-11-23 13:49:00) [1]> [0] mkmkm (23.11.06 13:30)
См. [1].
А решение простое. Традиционное, я бы даже сказал.
type
TEventHandlerClass = class
private
procedure OnMyEvent (Sender: TObject);
end;
procedure TEventHandlerClass.OnMyEvent(Sender: TObject);
begin
//
end;
var
MyEventHandlerObject: TEventHandlerClass;
...
begin
...
MyEventHandlerObject := TEventHandlerClass.Create;
try
MyComp.OnEvent := MyEventHandlerObject.OnMyEvent;
finally
MyEventHandlerObject.Free
end;
end.
Anatoly Podgoretsky (2006-11-23 13:44:00) [2]> Сергей М. (23.11.2006 13:33:02) [2]
> Console здесь вовсе ни при чем
И ГУИ тоже!
Сергей М. (2006-11-23 13:33:00) [3]
> Console +
+ Console здесь вовсе ни при чем
Сергей М. (2006-11-23 13:31:00) [4]
> Что делать в таком случае?
Понять различие между регулярной процедурой и процедурным методом объекта.