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

Вниз

TClientSocket и переопределение OnConnect   Найти похожие ветки 

 
eblade   (2002-01-16 22:18) [0]

В общем, задача такая. Мне нужно сделать класс1 с полем, наследником от TClientSocket и подвесить
на событие OnConnect, OnDisconnect данного поля вызов процедур класса1 (класа-владельца). Как это
можно осуществить? Буду очень признателен за ответ.


 
Digitman ©   (2002-01-17 10:55) [1]

interface

Ткласс1 = class(TClientSocket)
procedure MyConnectProc(Sender: TCustomWinSocket);
procedure MyDisConnectProc(Sender: TCustomWinSocket);

public
constructor Create(AOwner: TComponent);
end;
...

implementation

constructor Ткласс1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OnConnect:= MyConnectProc;
OnDisconnect:= MyDisconnectProc;
end;


 
eblade   (2002-01-17 19:55) [2]

спасибо, но чуть-чуть не то
я спрашивал, как повесить но ОнКоннект поля вызов процедуры владельца... объясню

Ткласс1 = class(TComponent)
private
CS: TClientSocket;
public
procedure OnConnect(i: integer);
end;
...

как на онКоннект CS повесить вызов OnConnect Ткласс1 c i, к примеру = 1?


 
Digitman ©   (2002-01-18 09:20) [3]

не знаю, в какой момент у тебя создается экз-р TClientSocket, поэтому поместил его создание в конструктор твоего класса

Ткласс1 = class(TComponent)
private
CS: TClientSocket;
...
procedure ConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
procedure OnConnect(i: integer);
...
public
constructor Create(AOwner: TComponent);
destructor Destroy; override;
end;
...

implementation

constructor Ткласс1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
CS:= TClientSocket.Create(nil);
CS.OnConnect:= ConnectEventHandler;
end;

destructor Ткласс1.Destroy;
begin
CS.Free;
inherited;
end;

procedure Ткласс1.ConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
begin
OnConnect(1);
end;



 
eblade   (2002-01-18 13:54) [4]

сенкс, это то что надо

еще один вопрос
как поступить в случае если у меня CS - будет список наследников от ТКлиентСокет с добавленным уникальным идом, который мне нужно будет передать в Ткласс1.ConnectEventHandler?


 
Digitman ©   (2002-01-18 14:36) [5]


Ткласс1 = class(TComponent)
private
CS: TList;
...
procedure ConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
procedure OnConnect(i: integer);
...
public
constructor Create(AOwner: TComponent);
destructor Destroy; override;
end;
...

implementation

constructor Ткласс1.Create(AOwner: TComponent);
var
i: Integer;
newsocket: TClientSocket;
begin
inherited Create(AOwner);
CS:= TList.Create;
for i:= 0 to ..... do begin
newsocket:= TClientSocket.Create(nil);
newsocket.OnConnect:= ConnectEventHandler;
CS.Add(newsocket);
end;
end;

destructor Ткласс1.Destroy;
var
i: Integer;
begin
for i:= 0 to CS.Count - 1 do
TObject(CS.Items[i]).Free;
CS.Free;
inherited;
end;

procedure Ткласс1.ConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
begin
OnConnect(CS.IndexOf(Socket));
end;


 
eblade   (2002-01-18 22:31) [6]

огромное спасибо еще раз



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
3-19
Yulik
2002-03-06 11:33
2002.04.01
DBGrid


3-9
Андре
2002-03-04 12:07
2002.04.01
IBSQL


6-257
Fred
2002-01-19 03:04
2002.04.01
Как получить подтверждение доставки письма?


1-142
Zool
2002-03-21 22:53
2002.04.01
Ошибка


14-314
phantom2040
2002-02-20 14:11
2002.04.01
Сервер удаленного доступа на XP