Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-98687
denick
2003-10-21 09:50
2003.10.30
Как в MDI приложении


14-98855
Дон Хуан
2003-10-08 19:52
2003.10.30
Раскаяние


4-98927
wicked
2003-08-25 20:44
2003.10.30
о таймерах....


4-98933
gRad2003
2003-08-23 14:53
2003.10.30
Resorces


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский