Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизКак в компоненте унаследовать события? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c