![]() |
TreeView mit eigenen Daten
Hallo Delphianer,
Bin mir absolut nicht sicher, ob meine Ansprüche an ein TTreeView Element (Delphi 7) nicht doch zu groß sind. Mein Problem: Ich möchte einen TreeView mit eigenen Daten versehen, die pro Knoten gesetzt werden, aber nicht angezeigt werden sollen. Ich stell mir das so vor: - Name1 (Scope; Typ; Anzahl; ...) - SubName1 (Scope; Typ; Anzahl; ...) - SubName2 (Scope; Typ; Anzahl; ...) - ... - Name2 (Scope; Typ; Anzahl; ...) ... Nun sollen die Namen und Subnamen in dem TreeView angezeigt werden. Hat der Bediener dann einen Eintrag ausgewählt, werden die Parameter (Scope; Typ; Anzahl; ...) an eine übergeordnete Funktion gegeben. Hat jemand eine Idee dies zu realisieren Gruß FrankBrin |
Re: TreeView mit eigenen Daten
Jedes TTreeNode hat eine Eigenschaft Namens Data und dieses ist ein einfacher Pointer.
Du legst also einen Record mit den gewünschten Daten und kannst dann inen Pointer darauf in Data abspeichern. Type erstellen;
Delphi-Quellcode:
Und Daten in den Knoten einzutragen:
Type TRecord = Redord
Scope: ...; Typ: ...; Anzahl: ...; ... End; PRecord = ^TRecord;
Delphi-Quellcode:
Zugreifen kannst du natürlich auch ganz einfach:
TreeNode.Data := GetMem(SizeOfTRecord);
PRecord(TreeNode.Data)^.scope := ...; ...
Delphi-Quellcode:
... := PRecord(TreeNode.Data)^.scope
Und nicht vergessen, du ußt natürlich auch selber dafür sorgen, daß am Ende alles wieder freigegeben wird ;)
Delphi-Quellcode:
FreeMem(TreeNode.Data);
|
Re: TreeView mit eigenen Daten
Hai FrankBrin,
das kannst Du ohne Probleme mit einem TTreeView machen. Ein Item eines TreeViews besteht neben dem Text(caption) auch noch aus einem Pointer. In diesem kannst Du einfach einen Pointer auf zum Beispiel einen Record oder eine Instanz einer eigenen Klasse hinterlegen. In diesem ![]() Wichtig ist dabei nur das Du, wenn Du ein Item löschst auch den Speicher den dein Objekt belegt selber freigeben musst. Edit und grummel Wärend ich wie ein Wolf nach einem Beispiel in der DP suche hat der Foren(b)engel schon einen ganzen Beitrag mit Beispiel geschrieben ;-) |
Re: TreeView mit eigenen Daten
Hey Danke für die prompten Hinweise.
Werd mich gleich ans Werk machen und die Beispiele ausprobieren! |
Re: TreeView mit eigenen Daten
Hallo,
ich bin teilweise auch dazu übergegangen in den Member Data ein spezielles Objekt zu speichern. Wenn du hinter deinen Daten noch weitere Funktionalitöt brauchst ist das in der Regel sehr praktisch. Hier mußt du jedoch sauber arbeiten wenn du auf die Daten zugreifen möchtest. Data ist wie beschrieben vom Typ Pointer. Somit mußt du beim lesen auf jeden Fall eine Typkovertierung durchführen. Bsp.:
Delphi-Quellcode:
Gruß oki
var MyObj : TMyObj;
Name : String; begin MyObj := TMyObj(MyTreeView.Items[0].Data); Name := MyObj.Name; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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