TCategoryPanelGroup einfügen eines TCategoryPanel
-
Hallo,
ich möchte zur Laufzeit einen TCategoryPanel in eine TCategoryPanelGroup einfügen. Im Designer alles kein Problem, geht ja über das Kontextmenü. Nur wie geht das zur Laufzeit? Die CategoryPanelGroup hat ne Eigenschaft 'Panels', diese wiederum eine Funktion 'Add'. Add erwartet als Paramneter einen void*. Damit weiss ich nichts anzufangen. Die Hilfe sagt zu diesem Punkt nichts. Hat das schomal jemand gemacht?Gruss
Jörn
-
Hallo,
da TCustomCategoryPanelGroup.Panels vom Typ TList ist, nimmt die Add-Methode ein beliebiges Objekt entgegen, d.h. du kannst einfach dein TCategoryPanel-Objekt hier übergeben:
TCategoryPanel panel = new TCategoryPanel(); panelGroup.Panels.Add(panel);
-
Hallo,
das habe ich auch schon probiert. Dann erscheint das Panel nicht. Wenn ich dann dem Panel einen Parent zuordne (die PanelGroup), dann erscheint das Panel. Jetzt noch Align auf Top setzen, dann huscht es auch noch in den Container unter die anderen Panels. Was dann aber nicht geht ist, dass die Captionbar angezeigt wird und das setzen der Caption erzeugt eine Exception.....Allerdings brauche ich bei alle dem nicht die Add Funktion benutzen, das geht dann auch ohne Add....
Jörn
-
Die Add-Methode ist unnötig, da die TCategoryPanelGroup beim dynamischen hinzufügen eines TCategoryPanel
dieses im Member Panels aufnimmt. Das Parent setzen ist auch nicht erforderlich; dafür PanelGroup setzen.Beispiel:
TCategoryPanelGroup *CPGrp; TCategoryPanel* CPanel; CPGrp = new TCategoryPanelGroup(this); CPGrp->Parent = Form1; CPGrp->Align = alLeft; CPGrp->Width = 200; for (int i = 0; i < 4; i++) { CPanel = new TCategoryPanel(this); CPanel->PanelGroup = CPGrp; CPanel->UseDockManager = true; CPanel->Collapsed = false; CPanel->Height = 40; CPanel->Caption = "Panel" + IntToStr(i); } int cnt = CPGrp->Panels->Count; Label1->Caption = IntToStr(cnt); . . . // an das Löschen der erzeugten Komponenten denken
mfg
Peter
-
Danke, das war der entscheidende Tip : CPanel->PanelGroup
Gruss
Jörn