Avatar billede fixxxer Nybegynder
11. februar 2004 - 01:20 Der er 2 kommentarer og
1 løsning

udvidede data i TTreeNode

Jeg har behov for at kunne lagre nogle informationer direkte i en TTreeNode, som kan kaldes ganske som TTreeNode's andre værdier, fx Name og Visible. Hvordan laver jeg sådan en wrapper af den originale TTreeNode?
Avatar billede hrc Mester
11. februar 2004 - 18:27 #1
Det har jeg også spekuleret på og tror ikke det kan lade sig gøre uden at lave en nedarving af TTreeView også.

I midlertid har en TTreeNode en .Data property af typen pointer hvorpå du kan klistre yderligere oplysninger i form af objekter eller records.

type
  TPersonClass = class
  private
    fNavn : string;
  public
    constructor Create(const aNavn : string);
    properrty Navn : string read fNavn;
  end;

.... Nede i koden hvor du opretter en treenode som top-node:

procedure TForm1.AddAPerson(aPerson : TPersonClass);
begin
  TreeView1.Items.AddObject(nil,aPerson.Navn,aPerson);
end;

Du kunne også tildele den bagefter:
  TreeNode.Data := aPerson;

Når du skal bruge data derfra, typisk i en OnClick hvor noden sendes med som parameter:

  Edit1.Text := TPersonClass(Node.Data).Navn;

På denne måde kan du koble alskens data sammen med en en TreeNode. Bemærk i øvrigt at det samme gælder TListItem (TListView) som også har en .Data.
Avatar billede hrc Mester
11. februar 2004 - 18:29 #2
En TreeView har en OnDelete hvor du kan frigive objekterne igen - alternativt må du gennemløbe TreeView.Items.
Avatar billede fixxxer Nybegynder
28. februar 2004 - 19:52 #3
jamen det var jo bare det :)

takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester