Delphi 7-当客户套件突然断开连接时,如何删除ListView项目字幕



嘿,当客户端插座突然从服务器套接字上断开连接时,我要从listView删除项目字幕(例如客户端丢失的Internet连接)。我的serversocket1代码:

procedure TForm1.socket1ClientConnect(Sender: TObject;Socket:TCustomWinSocket);
var
L: TListItem;
begin
L:= Listview1.Items.Add;
l.SubItems.Add(Socket.RemoteHost, socket);
end;

这是我用来删除的代码:(仅在我将命令接近客户端发送时工作)。

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;Socket: TCustomWinSocket);
var
L:TlistItem;
begin
Listview1.findcaption(0,inttostr(socket.handle),false,true,false,);
if L <> nil then
l.delete;
end;

您没有在 TListItem.Caption中放置任何值,但是您正在尝试使用 FindCaption(),就好像有。我建议将TCustomWinSocket对象指针放入TListItem.Data中,然后使用FindData()

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var
  L: TListItem;
begin
  L := Listview1.Items.Add;
  L.SubItems.Add(Socket.RemoteHost);
  L.Data := Socket;
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
  L: TListItem;
begin
  L := ListView1.FindData(0, Socket, true, false);
  if L <> nil then
    L.Delete;
end;

最新更新