Ich hab jetzt noch ein Problem:
Delphi-Quellcode:
procedure TfrmMain.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var
newTabSheet: TTabSheet;
newRichEdit: TRichEdit;
newPanel: TPanel;
newlabel: TLabel;
aItem: TListItem;
i: integer;
begin
AktuelleUIN := UIN;
AktuellerNICK := AktuelleUIN;
for i := 0 to lstBoxKontakte.Items.Count-1 do
begin
aItem := lstBoxKontakte.Items[i];
if aItem.SubItems[0] = AktuelleUIN then AktuellerNICK := aItem.Caption;
end;
try
newTabSheet := TTabSheet.Create(frmChat.PageControlChat);
newTabSheet.Caption := AktuellerNICK;
newTabSheet.Name := 'tabChat_' + AktuelleUIN;
newTabSheet.PageControl := frmChat.PageControlChat;
newTabSheet.Parent := frmChat.PageControlChat;
frmChat.PageControlChat.ActivePage := newTabSheet;
frmChat.ShowTabButton(newTabSheet.PageIndex);
frmChat.ReCalculateButtonPositions;
newRichEdit := TRichedit.Create(newTabSheet);
TWinControl(newRichEdit).Name := 'edtChat_' + AktuelleUIN;
TWinControl(newRichEdit).Parent := newTabSheet;
newRichEdit.Align := alClient;
newPanel := TPanel.Create(newTabSheet);
TWinControl(newPanel).Parent := newTabSheet;
TWinControl(newPanel).Height := 28;
newPanel.Align := alTop;
newLabel := TLabel.Create(newPanel);
TWinControl(newLabel).Name := 'NICK_' + AktuelleUIN;
TWinControl(newLabel).Parent := newPanel;
newLabel.Align := alLeft;
//Platzhalter zwischen NICK und UIN
newLabel := TLabel.Create(newPanel);
TWinControl(newLabel).Parent := newPanel;
newLabel.Align := alLeft;
newLabel := TLabel.Create(newPanel);
TWinControl(newLabel).Name := 'UIN_' + AktuelleUIN;
TWinControl(newLabel).Parent := newPanel;
newLabel.Align := alLeft;
except
//
end;
//BUG: Curret Richedit ist falsch! -> 'edtChat_' + AktuelleUIN.Lines.Add
frmChat.CurrentRichEdit.Lines.Add(AktuelleUIN + ': ' + Msg);
if frmChat.Showing = false then frmChat.Show;
end;
ganz am Ende das:
frmChat.CurrentRichEdit.Lines.Add(AktuelleUIN + ': ' + Msg);
Das ist falsch, so kommt die msg eines anderen users in ein falsches RichEdit eines anderen Users,
eben weil ein anderes gerade aktiv ist.
Man müsste sagen können:
Delphi-Quellcode:
var
name : string;
name := 'edtChat_' + AktuelleUIN
//und dann:
frmChat.name.Lines.Add
//Das geht aber nicht!
//Wie kann ich den KomponentenNamen zum ansteuern benutzen?