![]() |
TCollection in TCollectionItem im Objektinspektor
Einen wunderschönen guten abend,
mein Grundproblem ist folgendes : Ich habe ein VirtualStringTree und möchte die Nodes und Childnodes zurEntwurfszeit anlegen lassen.Diesen Nodes sollen jetzt noch weitere Infos hinterlegt werden können. Dieses Problem wollte ich Über eine eine TCollection mit TCollectionItems lösen. Das ist soweit auch kein Problem. Jetzt wollte ich Innerhalb der TCollectionItems eine neue TCollection eröffen, wo man die Unterpunke anlagen kann. Das Problem ist nur, wenn ich im Objektinspektor auf das 1. Item Klicke --> dann auf "SubItems" (was die SubCollection ist) geht kein neues Fenster auf, wo ich die Items anlegen kann. Ich hab hier das Prinzip mal übersichtlich dargestellt.
Delphi-Quellcode:
unit Coll_Item_Test;
interface uses SysUtils, Classes, ExtCtrls, StdCtrls; type TColl = Class; TColl_Item = Class(TCollectionItem) private Var U_Caption : String; U_SubCollection : TColl; procedure SetSubCollection(const Value: TColl); public constructor Create(Collection: TCollection); override; destructor Destroy; override; Published Property Caption : String read U_Caption write U_Caption; Property SubItems : TColl read U_SubCollection write SetSubCollection; end; TColl = Class(TCollection) private public Published end; TTestPanel = Class(TCustomPanel) Private U_Items : TColl; procedure SetItems(const Value: TColl); public constructor Create(AOwner: TComponent); override; Destructor Destroy; override; published Property Items : TColl read U_Items write SetItems; End; Procedure Register; implementation Procedure Register; Begin RegisterComponents('Standard', [TTestPanel]); End; { TColl_Item } constructor TColl_Item.Create(Collection: TCollection); begin Inherited; U_SubCollection := TColl.Create(TColl_Item); end; destructor TColl_Item.Destroy; begin U_SubCollection.Free; inherited; end; procedure TColl_Item.SetSubCollection(const Value: TColl); begin U_SubCollection.Assign(Value); end; { TColl } { TTestPanel } constructor TTestPanel.Create(AOwner: TComponent); begin inherited; U_Items := TColl.Create(TColl_Item); end; destructor TTestPanel.Destroy; begin U_Items.Free; inherited; end; procedure TTestPanel.SetItems(const Value: TColl); begin U_Items.Assign(Value); end; end. also der weg sollte folgender sein 1. das Hauptobjekt --> 2. hier auf Items --> hier geht ds Fenster zum anlegen der Items auf 3. klick auf ein Items --> 4. hier auf die eingenschaft "SubItems" (hier sollte jetzt ein weiteres Fenster aufgehen, wo man die SubItems anlegen kann. aber dieses geht eben leider nicht auf. muss hier erst irgendwas extra deklariert werden oder habe ich in meinem Grundprinzip schon einen Fehler oder könnte man das Anlegen der Nodes zu Entwurfszeit irgendwie einfacher realisieren. mfg Jens ps: ist im prinzip das gleiche wie ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz