Главная страница
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.016 c
14-98798
Дурик
2003-10-13 08:16
2003.10.30
Шо такое сабж?


14-98795
DimaK
2003-10-13 12:09
2003.10.30
обломс


1-98623
Василиск
2003-10-17 15:39
2003.10.30
Какая API функция возвращает путь, в кот. устанавливаются проги?


1-98684
leonidus
2003-10-21 00:46
2003.10.30
Может вопрос глупый или у меня глюки, но проблема есть...


1-98716
AndreyG
2003-10-21 04:42
2003.10.30
Как добавить примечание в ячейку Excel