Текущий архив: 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.45 MB
Время: 0.005 c