Einzelnen Beitrag anzeigen

Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Dynamische Fenster und deren zuordnung

  Alt 7. Aug 2009, 08:52
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?
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat