Главная страница
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.014 c
1-242
ghost_by
2002-03-06 20:20
2002.04.01
Показать Hint ы в StringGride


1-124
Beginner
2002-03-21 18:48
2002.04.01
Запуск приложения из моей программы.


1-223
MaXie
2002-03-20 12:50
2002.04.01
Массив объектов.


14-280
cypher
2002-02-16 16:24
2002.04.01
Platform SDK


7-334
netter
2001-12-29 17:26
2002.04.01
getusername