type
TSocketStatus = (ssActive, ssInactive, ssBusy, ssUnknow); TForm1 = class(TForm)
...
private
SocketStatus : TSocketStatus;
...
end;function TForm1.Connect: boolean;
begin
if ClientSocket1.Active then
result:=true
else
begin
SocketStatus := ssUnknow;
ClientSocket1.Active:=True;
while (SocketStatus =ssUnknow) do
begin
sleep(100);
application.ProcessMessages;
end;
result := (SocketStatus=ssActive);
end;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
SocketStatus := ssActive;
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ssStatus := ssInactive;
ErrorCode := 0;
end;procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
SocketStatus := ssInactive;
end;
TSocketStatus = (ssActive, ssInactive, ssBusy, ssUnknow); TForm1 = class(TForm)
...
private
SocketStatus : TSocketStatus;
...
end;function TForm1.Connect: boolean;
begin
if ClientSocket1.Active then
result:=true
else
begin
SocketStatus := ssUnknow;
ClientSocket1.Active:=True;
while (SocketStatus =ssUnknow) do
begin
sleep(100);
application.ProcessMessages;
end;
result := (SocketStatus=ssActive);
end;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
SocketStatus := ssActive;
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ssStatus := ssInactive;
ErrorCode := 0;
end;procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
SocketStatus := ssInactive;
end;
http://www.csdn.net/expert/topic/1010/1010355.xml?temp=.3667261