Hallo
ich sehe Du gibst nirgendwo den Channel an. Einen
IRC-Client zu programmieren ist sehr aufwändig...
Hier ein Paar Lines aus einem Programm dass ich mal zusammengebastelt hatte:
Delphi-Quellcode:
Users: TListBox; //das ist Deine ListBox
UserNames: TStringList;
procedure TcFrame.UpdateNames;
begin
UserNames.Sort;
Users.Items.Assign(UserNames); //hier erneuerst Du die Userlist
end;
procedure TStatusFr.ircJoined(Sender: TObject; AChannel: TIdIRCChannel);
var
WichFrame: TcFrame;
begin
try
WichFrame:= FindChannelWindow(GetnameFromChannel(AChannel)); //hier wird der Channelname angegeben
if WichFrame<> nil then
begin
WichFrame.Joined(GetnameFromChannel(AChannel));
rej := 0;
end;
finally
end;
end;
procedure TStatusFr.ircJoin(Sender: TObject; AUser: TIdIRCUser;
AChannel: TIdIRCChannel);
var
WichFrame: TcFrame;
begin
try
WichFrame:= FindChannelWindow(GetnameFromChannel(AChannel));
if assigned(whichwindow) then
begin
WichFrame.Join(GetnameFromUser(AUser), Auser.Address,
GetNameFromChannel(AChannel));
end;
finally
end;
end;
procedure TcFrame.Joined(chan: string);
begin
WLines(cText, getClNr(clGreen) + '[' + DateToStr(Date) + ' ' +
TimeToStr(time) + '] * ' + 'Joined channel ' + chan + #13#10); //msg im Channelfenster
UserNames := TStringList.Create;
end;
procedure TcFrame.Join(Username, mask, chan: string);
begin
if IndexOfUserName(UserName) = -1 then
UserNames.Add(username);
UpdateNames;
JoinLine := '[' + TimeToStr(time) + '] * ' + Username + '(' + mask +
') has joined ' + chan;
WLines(cText, getClNr(clGreen) + JoinLine + #13#10);
end;
Das gleiche Prinzip verwendest Du dann für alle
IRC-Controls. Z.B. beim OnPart: UserNames.Delete(i);
Hoffe es hilft Dir weiter