Einzelnen Beitrag anzeigen

codenoob
(Gast)

n/a Beiträge
 
#1

Socket.data Werte an Listview übergeben

  Alt 19. Jan 2016, 22:28
Hi Delphianer's

Ich übergebe Socket.data Werte an meine Listview wo die Verbundenen User meines Messager's eingetragen werden.
Die Funktioniert auch ganz gut nur habe ich das Problem das ich wenn sich ein User abmeldet er nicht aus der Listview gelöscht wird.

Unit SocketWerte
Delphi-Quellcode:
unit SocketWerte;

interface

uses
  windows, classes, Forms, ComCtrls, Controls, sysutils, strutils,dialogs,
  ScktComp;

type

  TSocketData = class
    Data: ansistring;
    Socket: TCustomWinSocket;
    User: string;
    Color: string;
    Font: String;
    ListItem: TListItem;
    Form: pointer;
    Idle: string;
  end;

end.
Meine Messager Form
Delphi-Quellcode:
procedure TClientForm.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
....
....
....

 if Command = 'Connectthen begin

    SocketData.User := Split(Data,'|',1);
    Delete(Data,1,Length(Split(Data,'|',1)) +1);

    SocketData.Color := Split(Data,'|',1);
    Delete(Data,1,Length(Split(Data,'|',1)) +1);

    SocketData.Font := Split(Data,'|',1);
    Delete(Data,1,Length(Split(Data,'|',1)) +1);
 
    SocketData.Socket := Socket;

    LI := ListView1.Items.Add;
 
    Li.Data := socketdata;

    LI.ImageIndex := 0;
    LI.Caption := SocketData.User;
    li.SubItems.add(SocketData.Color);
    Li.SubItems.add(SocketData.Font);

  end;
....
....
....

end;


procedure TClientForm.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
  Li : TListItem;
  P : Pointer;
begin

 integer(P) := socketdata.Socket.Handle;

 Li:=listview1.finddata(0,P,true,false);

if Li<>nil then
begin
Li.Delete;
end;

end;
Grüsse Tom
  Mit Zitat antworten Zitat