Einzelnen Beitrag anzeigen

Novo

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

Dynamische Fenster und deren zuordnung

  Alt 6. Aug 2009, 14:07
Und zwar geht es nach dem hier:
http://www.delphipraxis.net/internal....php?p=1066031
mit meinen Problemen weiter.

Ich will ein eigenes, kleines ICQ Client schreiben und will nicht jedesmal (MSG empfangen / Nachricht schreiben)
ein NEUES Fenster aufmachen, sondern nur EIN Fenster mit Dynamischen Tabs haben.

Das habe ich teilweie hinbekommen, allerdings funktioniert das nicht einwandfrei.

Und zwar:
wenn neue Nachricht reinkommt oder ich eine neue nachricht schreiben will:
ICQ UIN nehmen, daraus panel_UIN dynamisch erzeugen und anzeigen.

Delphi-Quellcode:
procedure TfrmMain.lstBoxKontakteDblClick(Sender: TObject);
var
  newTabSheet: TTabSheet;
  newRichEdit: TRichEdit;
  newPanel: TPanel;
  newlabel: TLabel;
  aItem: TListItem;
begin
  if lstBoxKontakte.Selected = nil then Exit;

  aItem := lstBoxKontakte.Selected;
  AktuellerNICK := aItem.Caption;
  AktuelleUIN := aItem.SubItems[0];

  try

  newTabSheet := TTabSheet.Create(frmChat.PageControlChat);
  newTabSheet.Caption := AktuellerNICK;
  newTabSheet.Name := 'tab_' + AktuelleUIN;
  newTabSheet.PageControl := frmChat.PageControlChat;
  newTabSheet.Parent := frmChat.PageControlChat;
  frmChat.PageControlChat.ActivePage := newTabSheet;

  newRichEdit := TRichedit.Create(newTabSheet);
  TWinControl(newRichEdit).Name := 'edt_' + AktuelleUIN;
  TWinControl(newRichEdit).Parent := newTabSheet;
  newRichEdit.Align := alClient;

  newPanel := TPanel.Create(newTabSheet);
  TWinControl(newPanel).Name := 'panel_' + AktuelleUIN;
  TWinControl(newPanel).Parent := newTabSheet;
  TWinControl(newPanel).Height := 30;
  newPanel.Align := alTop;

  newLabel := TLabel.Create(newPanel);
  TWinControl(newLabel).Name := 'labelNICK_' + AktuelleUIN;
  TWinControl(newLabel).Parent := newPanel;
  newLabel.Align := alTop;

  newLabel := TLabel.Create(newPanel);
  TWinControl(newLabel).Name := 'labelUIN_' + AktuelleUIN;
  TWinControl(newLabel).Parent := newPanel;
  newLabel.Align := alBottom;


  except
   //Wenn nicht erzeugbar -> schon vorhanen -> dann will ich zu dem Tab switchen
   //GEHT NICHT! Variable 'newTabSheet' ist nicht initialisiert worden
   frmChat.PageControlChat.ActivePage := newTabSheet; // .ActivePage := 'tab_' + AktuelleUIN; geht NICHT!
  end;

if frmChat.Showing = false then frmChat.Show;
end;
Allerdings, wie prüfe ich, ob panel_UIN schon existiert?
wenn NEIN -> wie oben erzeugen und öffnen
wenn JA -> Diesen Tab aktiv machen (wie?)

Ausserdem muss ich ja die MSG dann an den RICHTIGEN senden, deshalb habe ich auch
labelUIN und labelNICK erzeugt, wo die aktuelle Daten des aktiven Tabs drinstehen.
die müsst ich dann ja nur auslesen udn an die labelUIN schicken.

Dann habe ich Dynamische Tabs mit einem schliessen Button erzeugt,
allerdings lässt sich das nur von Unit/Form 2 aus erzeugen, nicht von Unit/Form1 (NACH dem Public machen)

aber seht selbst, hier ist alles was ihr braucht zum nachvollziehen:
---


Mag mir einer vielleicht bei dem Projekt am Wochenende ein wenig per ICQ helfen?
Dynamische Tabs und deren Steuerung/verwalung

[edit=SirThornberry]Titel geändert - Hilfe braucht wohl jeder der in dieser Kategorie postet und sagt nichts über das Problem selbst aus Mfg, SirThornberry[/edit]
Angehängte Dateien
Dateityp: rar novo_s_icq_180.rar (560,7 KB, 5x aufgerufen)
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