(Gast)
n/a Beiträge
|
Socket.data Werte an Listview übergeben
19. Jan 2016, 23: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 = 'Connect' then 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
|
|
Zitat
|