クライアントソケットがサーバーソケットから切断されたときに、リストビューから項目のキャプションを削除しようとしています。私のコードでは、クライアントがサーバーに接続するとリストビューにアイコンとキャプション (client.hostname) が追加されますが、クライアントが切断されたときに項目を削除するにはどうすればよいですか? Listview1.items.delete.caption(socket.host)
. 何か助けはありますか?
英語が下手ですが、説明しようと思います。必要なのは、リストビューからアイテムを削除して、クライアントソケットを切断することだけです。ケン・ホワイト氏は、ほとんど同じ質問に対する解決策を教えてくれましたが、サーバーに複数のクライアントが接続されている状況にうまく適合できませんでした。つまり、切断したばかりのホストに属するリストビューのキャプションを削除するにはどうすればよいですか?
私のserversocket1コード:(serversocket1の名前をsocket1に変更しました)
procedure TForm1.socket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ListView1.AddItem(Socket.RemoteHost, socket);
end;
クライアントの切断時にアイテムを削除しようとするために使用するコード:
procedure TForm1.socket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
var
L : TListItem;
begin
L:=listview1.FindCaption(0,inttostr(socket.Handle),false,true,false);
if L<>nil then
L.Delete;
end;
しかし、リストビュー項目は削除されません。