Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView - Werte zum Item speichern (https://www.delphipraxis.net/103652-treeview-werte-zum-item-speichern.html)

Salomon 19. Nov 2007 09:49


TreeView - Werte zum Item speichern
 
hallo,
wie kann ich zu einem TreeView Item zusätzliche Infos speichern? z.B. einen Pointer auf eine eigene Datenstruktur?

Delphi-Quellcode:
var anode:TTreeNode;
  anode := TreeView.Items.Add(nil,'Root');
  TreeView.Items.AddChild(anode, 'First Child');
Die Funktionen zum Einfügen der Items habe dafür keine Option.

Gruß
Marcus

Deep-Sea 19. Nov 2007 09:53

Re: TreeView - Werte zum Item speichern
 
TreeView.Items.AddChildObject

Salomon 19. Nov 2007 10:09

Re: TreeView - Werte zum Item speichern
 
Genau das habe ich gesucht :)

Salomon 19. Nov 2007 11:06

Re: TreeView - Werte zum Item speichern
 
Okay, ich habe jetzt ein dynaisches Element an das Treeview Item gehängt. Jetzt könnte ich noch einen Tipp gebrauchen mit welchem Befehl ich wieder an das Datenelement rankomme :wink: :?: Sowas wie "GetChildObject"

Für interessierte, so habe ich ein dynamisches Element erstellt und an ein TreeView Item gehängt.

Delphi-Quellcode:
Type
  TElementPointer = ^TElement;

  TElement = record
    DBKey : integer;
end;



procedure TFRM_AM_Administration.Button19Click(Sender: TObject);
var anode : TTreeNode;
   Pointer, Element : TElementPointer;
begin
  new (Element);
  Element.DBKey := 1;
  Pointer := Element;

  //showmessage(IntToStr(Pointer^.DBKey));

  TreeView.Items.AddChildObject(nil,'Hidden Data', Pointer);
end;

Deep-Sea 19. Nov 2007 11:09

Re: TreeView - Werte zum Item speichern
 
D2006 Hilfe:
Zitat:

TTreeNode.Data Eigenschaft

Zeigt auf die Daten, die mit einem Baumknoten verbunden sind.

Salomon 19. Nov 2007 11:20

Re: TreeView - Werte zum Item speichern
 
Darauf bin ich auch gestoßen. Allerdings habe ich es noch nicht zum Laufen gebracht.

Der folgende Code lässt sich compilieren, allerdings bekomme ich einen "Listindex put of bound" Fehler. Egal ob ich 0 oder 1 als Item angeben.
Ich würde gerne an die Daten des selektierten Elementes kommen. Wundert mich, das ich da bei Item noch was angeben muss.

Delphi-Quellcode:
procedure TFRM_AM_Administration.Button20Click(Sender: TObject);
var Pointer : TElementPointer;
begin
  Pointer := TreeView.Selected.Item[1].Data;

  showmessage(IntToStr(Pointer^.DBKey));
end;

Deep-Sea 19. Nov 2007 11:33

Re: TreeView - Werte zum Item speichern
 
Mit "TreeView.Selected.Item[1].Data;" würdest du doch auf das 2. SubItem des Selektieren zeigen, müsste es nicht "TreeView.Selected.Data;" heißen?

marabu 19. Nov 2007 11:34

Re: TreeView - Werte zum Item speichern
 
Hallo,

besser so:

Delphi-Quellcode:
procedure TFRM_AM_Administration.Button20Click(Sender: TObject);
var
  pElement: TElementPointer;
begin
  if Assigned(TreeView.Selected) and Assigned(Treeview.Selected.Data) then
  begin
    pElement := TreeView.Selected.Data;
    ShowMessage(IntToStr(pElement.DBKey));
  end;
end;

Salomon 19. Nov 2007 11:54

Re: TreeView - Werte zum Item speichern
 
@marabu: Das funktioniert sehr gut :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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