AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView mit eigenen Daten

Ein Thema von FrankBrin · begonnen am 16. Nov 2005 · letzter Beitrag vom 16. Nov 2005
Antwort Antwort
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#1

TreeView mit eigenen Daten

  Alt 16. Nov 2005, 08:12
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
Frank Brinschwitz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

Re: TreeView mit eigenen Daten

  Alt 16. Nov 2005, 08:22
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:
Type TRecord = Redord
    Scope: ...;
    Typ: ...;
    Anzahl: ...;
    ...
  End;
  PRecord = ^TRecord;
Und Daten in den Knoten einzutragen:
Delphi-Quellcode:
TreeNode.Data := GetMem(SizeOfTRecord);
PRecord(TreeNode.Data)^.scope := ...;
...
Zugreifen kannst du natürlich auch ganz einfach:
... := PRecord(TreeNode.Data)^.scope
Und nicht vergessen, du ußt natürlich auch selber dafür sorgen, daß am Ende alles wieder freigegeben wird
FreeMem(TreeNode.Data);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TreeView mit eigenen Daten

  Alt 16. Nov 2005, 08:24
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 Beitrag hat MathiasSimmack das mal gemacht.

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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: TreeView mit eigenen Daten

  Alt 16. Nov 2005, 08:38
Hey Danke für die prompten Hinweise.

Werd mich gleich ans Werk machen und die Beispiele ausprobieren!
Frank Brinschwitz
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: TreeView mit eigenen Daten

  Alt 16. Nov 2005, 08:40
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:
var MyObj : TMyObj;
    Name : String;
begin
  MyObj := TMyObj(MyTreeView.Items[0].Data);
  Name := MyObj.Name;
end;
Gruß oki
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz