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]