Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
Chlavik   (2003-06-16 17:02) [0]

Мне нужно слеить два класса в один .. привожу пример
TFtpUpload = class(TUploadThrd)
private
Events:TUplThEvents;
FOnUploadfinished:TUploadEvent;
FOnUploadStarted:TUploadEvent;
FOnErrorMsg:TErrorMsgEvent;
FOnUploadMsg:TUploadMsgEvent;
FOnReqUpdate:TUploadEvent;
FOnUploadStoped:TUploadEvent;
FOnReconnected:TUploadRecEvent;
FOnConnected:TNotifyEvent;
FOnDisConnected:TNotifyEvent;
property RecepHWND;
destructor Destroy; override;
public
constructor Create(Owner:TComponent); reintroduce;
property OnUploadfinished:TUploadEvent read FOnUploadfinished write FOnUploadfinished;
property OnUploadStoped:TUploadEvent read FOnUploadStoped write FOnUploadStoped;
property OnUploadStarted:TUploadEvent read FOnUploadStarted write FOnUploadStarted;
property OnReqUpdate:TUploadEvent read FOnReqUpdate write FOnReqUpdate;
property OnUploadMsg:TUploadMsgEvent read FOnUploadMsg write FOnUploadMsg;
property OnErrorMsg:TErrorMsgEvent read FOnErrorMsg write FOnErrorMsg;
property OnReconnected:TUploadRecEvent read FOnReconnected write FOnReconnected;
property OnConnected:TNotifyEvent read FOnConnected write FOnConnected;
property OnDisConnected:TNotifyEvent read FOnDisConnected write FOnDisConnected;
end;

////////////////////////////////////////////////////////////////////////////////
{TFtpUpload}

constructor TFtpUpload.Create(Owner:TComponent);
begin
Inherited Create;
Events:=TUplThEvents.Create(Owner);
RecepHWND:=Events.Handle;
Events.OnUploadfinished:=OnUploadfinished;
Events.OnUploadStarted:=OnUploadStarted;
Events.OnErrorMsg:=OnErrorMsg;
Events.OnUploadMsg:=OnUploadMsg;
Events.OnReqUpdate:=OnReqUpdate;
Events.OnUploadStoped:=OnUploadStoped;
Events.OnReconnected:=OnReconnected;
Events.OnConnected:=OnConnected;
Events.OnDisConnected:=OnDisConnected;
end;

//******************************************************************************

destructor TFtpUpload.Destroy;
begin
Inherited Destroy;
Events.Free;
end;


Вот я хочу что бы события класса TUplThEvents были у TFtpUpload я дам окнечно в иструкторе вроде бред написал (потому что не пашет) а вот как правильно поступить и мне обязательно нада что бы этот класс на основе TUploadThrd.. Пасиба..


 
Skier   (2003-06-16 17:07) [1]

А в чём проблема-то, ведь TFtpUpload наследуется от TUploadThrd ?



 
Chlavik   (2003-06-16 17:14) [2]

Да но мне нада добавить еще события от TUplThEvents


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

>Chlavik © (16.06.03 17:14)
Тогда такой вариант :
-в конструкторе класса TFtpUpload всем
событиям экземпляра класса TUplThEvents задать обратотчики, которые будут методами класса TFtpUpload, или вызывать методы
экземпляра класса TUplThEvents (если они есть и не "запрятаны") типа DoSomeEvent1, DoSomeEvent2,...,DoSomeEventN
-классу TFtpUpload добавить события-обёртки, которые будут
"отвечать" за вызов событий TUplThEvents


 
reonid   (2003-06-16 17:30) [4]

Есть такой вариант:
...
property OnUploadfinished:TUploadEvent read GetOnUploadfinished write SetOnUploadfinished;

procedure SetOnUploadfinished(Value: TUploadEvent);
begin
if FEvents.OnUploadfinished <> Value then
FEvents.OnUploadfinished := Value;
end;

function GetOnUploadfinished: TUploadEvent;
begin
Result := FEvents.OnUploadfinished;
end;

...
и для других событий то же самое.


 
reonid   (2003-06-16 17:31) [5]

То есть
procedure TFtpUpload.SetOnUploadfinished(Value: TUploadEvent);
begin
if FEvents.OnUploadfinished <> Value then
FEvents.OnUploadfinished := Value;
end;

function TFtpUpload.GetOnUploadfinished: TUploadEvent;
begin
Result := FEvents.OnUploadfinished;
end;



 
Chlavik   (2003-06-16 17:34) [6]

нету у меня там DoOn... мне просто они не нужны. TUplThEvents это оболчка для класса TUploadThrd которая просто генерит собития в зависимости от сообщения отосланого потоком этой оболчке контактируют они черех handle... Так я вот не понял, это
что прийдётся в TFtpUpload тоже писать все процедуры событий а потом в них попрописывать например if Assigned(FOnConnected) then FOnConnected(Self); ? и короче никак нельзя?

вот класс TUplThEvents

TUplThEvents = class(TWinControl)
private
FOnUploadfinished:TUploadEvent;
FOnUploadStarted:TUploadEvent;
FOnErrorMsg:TErrorMsgEvent;
FOnUploadMsg:TUploadMsgEvent;
FOnReqUpdate:TUploadEvent;
FOnUploadStoped:TUploadEvent;
FOnReconnected:TUploadRecEvent;
FOnConnected:TNotifyEvent;
FOnDisConnected:TNotifyEvent;
procedure CmOnErrorMsg(var Message: TMessage); message CM_ErrorMsg;
procedure CmOnStatusMsg(var Message: TMessage); message CM_StatusMsg;
procedure CmOnUplStoped(var Message: TMessage); message CM_UplStoped;
procedure CmOnReqUpdate(var Message: TMessage); message CM_ReqUpdate;
procedure CmOnUplStarted(var Message: TMessage); message CM_UplStarted;
procedure CmOnUplFinished(var Message: TMessage); message CM_UplFinished;
procedure CmOnReconnected(var Message: TMessage); message CM_Reconnected;
procedure CmOnConnected(var Message: TMessage); message CM_Connected;
procedure CmOnDisConnected(var Message: TMessage); message CM_DisConnected;
public
constructor Create(Owner:TComponent); reintroduce;
property OnUploadfinished:TUploadEvent read FOnUploadfinished write FOnUploadfinished;
property OnUploadStoped:TUploadEvent read FOnUploadStoped write FOnUploadStoped;
property OnUploadStarted:TUploadEvent read FOnUploadStarted write FOnUploadStarted;
property OnReqUpdate:TUploadEvent read FOnReqUpdate write FOnReqUpdate;
property OnUploadMsg:TUploadMsgEvent read FOnUploadMsg write FOnUploadMsg;
property OnErrorMsg:TErrorMsgEvent read FOnErrorMsg write FOnErrorMsg;
property OnReconnected:TUploadRecEvent read FOnReconnected write FOnReconnected;
property OnConnected:TNotifyEvent read FOnConnected write FOnConnected;
property OnDisConnected:TNotifyEvent read FOnDisConnected write FOnDisConnected;
end;


 
Chlavik   (2003-06-16 17:36) [7]

Пока написал последню месагу то еще два два ответа написали...


 
Chlavik   (2003-06-16 20:20) [8]

А может можна обойтись без класа TUplThEvents. Может можно както написать класс на основе TUploadThrd но только надо както тогда его научить ловит месаги... Но я просто не знаю как это сразу реализовать без класса на основе TwinControl...



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

Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.029 c
1-84120
Melamed
2003-06-10 21:13
2003.06.26
Странная вешь обнаружена в демках


1-84147
Rel_
2003-06-11 12:05
2003.06.26
TTreeNode


1-84342
Merfi
2003-06-16 10:49
2003.06.26
Завязка с разрешением


14-84709
AGAMEMNUM
2003-06-05 13:51
2003.06.26
SQL Monitor


3-83987
Ann
2003-05-30 10:36
2003.06.26
DBNavigator





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский