Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

Как в компоненте унаследовать события?   Найти похожие ветки 

 
PolarS ©   (2003-10-21 13:37) [0]

Здравствуйте.
Подскажите, пожалуйста, как реализовать мой нев.компонент TTestComp = class(TComponent).
Проблема в следующем:
есть интерфейсы
IDCCMan=interface(IUnknown)
...
procedure SetIconNoDataTransferring();stdcall;
procedure SetIconError();stdcall;
end;

IDCCManSink=interface(IUnknown)
...
procedure OnLogActive();stdcall;
procedure OnLogInactive();stdcall;
procedure OnLogAnswered();stdcall;
procedure OnLogListen();stdcall;
end;
есть класс
TDCCManSinkBase=class(TInterfacedObject, IDCCManSink) // реализует методы IDCCManSink
public
...
procedure OnLogActive();virtual;stdcall;
procedure OnLogInactive();virtual;stdcall;
procedure OnLogAnswered();virtual;stdcall;
procedure OnLogListen();virtual;stdcall;
end;
Как мне в своем компоненте унаследовать события из TDCCManSinkBase и их реализовать?
Извините за ламерский вопрос.
Спасибо.


 
Nikolay M. ©   (2003-10-21 14:05) [1]

TMyEvent = procedure of object;

TMyComponent = class
private
FOnMyLogActivate : TMyEvent;
protected
procedure DoLogActivate;
published
property OnMyLogActive() : TMyEvent read FOnMyLogActivate write FOnMyLogActivate;
end;

procedure TMyComponent.DoLogActivate;
begin
if Assigned (FOnMyLogActivate) then
FOnMyLogActivate;
end;

Все содрано из VCL дословно.

Если в наследнике просто требуется наличие указанных методов, тогда еще проще:
TMyComponent = class
protected
property OnLogActive(); override;
end;

Или я не въехал в суть вопроса?


 
sirius ©   (2003-10-21 14:12) [2]

Мой компонент наследует от TComponent, и кроме своих собственных событий (как Вы написали) он еще должен реализовать события третьего класса TDCCManSinkBase.


 
Юрий Федоров ©   (2003-10-21 14:25) [3]

Добавить интерфейс в список реализуемых компонентом, реализацию сделать через implements


 
sirius ©   (2003-10-21 14:29) [4]

Можно примеров кода показать?
Спасибо.


 
Юрий Федоров ©   (2003-10-21 14:32) [5]

TTestComp = class(TComponent, IDCCManSink)
private
FDCCManSinkBase: TDCCManSinkBase;//В конструкторе создать !
public
property DCCManSinkBase: TDCCManSinkBase read FDCCManSinkBas implements IDCCManSink


 
sirius ©   (2003-10-21 14:46) [6]

А для чего последняя строка?


 
sirius ©   (2003-10-21 14:50) [7]

А нашел:
методы реализующие IDCCManSink следует искать в DCCManSinkBase.
Спасибо.


 
Юрий Федоров ©   (2003-10-21 14:51) [8]

Для того, чтобы не реализовывать заново методы IDCCManSink


 
sirius ©   (2003-10-21 15:14) [9]

Не пойму, почему после установки компонента в Inspector Object не видны события.
Они объявлены как published.


 
Amoeba   (2003-10-21 15:23) [10]

А если property DCCManSinkBase объявить как published?


 
sirius ©   (2003-10-21 15:37) [11]

Не помогло.


 
Skier ©   (2003-10-21 15:43) [12]

>sirius © (21.10.03 15:37) [11]
1) покажи объявление класса-компонента
2) потом скажи что именно должно отображаться в ИО


 
sirius ©   (2003-10-21 15:48) [13]

TSyncPocket = class(TComponent, IDCCManSink)
...
published
...
// вот эти события хотелось бы увитеть в ИО
procedure OnLogAnswered(); virtual;stdcall;
procedure OnLogListen(); virtual;stdcall;
procedure OnLogDisconnection(); virtual;stdcall;
procedure OnLogError(); virtual;stdcall;
end;


 
Skier ©   (2003-10-21 15:50) [14]

ууу...как всё запущено !
Срочно за книги !


 
sirius ©   (2003-10-21 15:53) [15]

:(


 
sirius ©   (2003-10-21 16:05) [16]

Прошу прощения:
TSyncPocket = class(TComponent, IDCCManSink)
...
published
...
// вот эти события хотелось бы увитеть в ИО
property OnLogAnswered();
property OnLogListen();
property OnLogDisconnection();
property OnLogError();
end;


 
Skier ©   (2003-10-21 16:06) [17]

>sirius © (21.10.03 16:05) [16]
1) где read или write ?!
2) где параметры событий ?!


 
sirius ©   (2003-10-21 16:13) [18]

property OnLogIpAddr: TNotifyEvent read FOnLogIpAddr write FOnLogIpAddr;
property OnLogTerminated: TNotifyEvent read FOnLogTerminated write FOnLogTerminated;
property OnLogActive: TNotifyEvent read FOnLogActive write FOnLogActive;
property OnLogInactive: TNotifyEvent read FOnLogInactive write FOnLogInactive;
property OnLogAnswered: TNotifyEvent read FOnLogAnswered write FOnLogAnswered;
property OnLogListen: TNotifyEvent read FOnLogListen write FOnLogListen;
property OnLogDisconnection: TNotifyEvent read FOnLogDisconnect write FOnLogDisconnect;
property OnLogError: TNotifyEvent read FOnLogError write FOnLogError;



Страницы: 1 вся ветка

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
3-98474
European
2003-10-08 01:11
2003.10.30
Разноцветный потомок DbGrid


11-98533
Kladov
2003-02-12 16:57
2003.10.30
Просьба посмотреть на DoubleBuffered/Transparent


14-98819
Marser
2003-10-09 22:34
2003.10.30
Глас народа - глас божий


14-98880
Карлсон
2003-10-10 00:24
2003.10.30
переходник с IDE на ???


1-98611
No_Na_Me
2003-10-16 20:00
2003.10.30
FileSetAttr & FileGetAttr