嘿,当客户端插座突然从服务器套接字上断开连接时,我要从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;