Tallenna lisää mukautettuja tietoja puusolmuun Delphissä

TTreeView Delfoi komponentti näyttää hierarkkisen luettelon kohteista— puun solmut. Solmu esitetään solmutekstin ja valinnaisen kuvan avulla. Jokainen puunäkymän solmu on esimerkki TTreeNode-luokasta.

Vaikka voit täyttää puunäkymän esineillä suunnittelun aikana, TreeView Items Editor, useimmissa tapauksissa täytät puunäkymän ajon aikana - riippuen siitä, mistä sovelluksessasi on kyse.

TreeView Items Editor paljastaa, että siellä on vain kourallinen tietoja, jotka voit "liittää" solmuun: teksti ja muutama kuvahakemisto (normaalia tilaa varten, laajennetut, valitut ja vastaavat).

Pohjimmiltaan puunäkymäkomponentti on helppo ohjelmoida. On olemassa pari tapaa lisätä uusia solmuja puuhun ja asettaa niiden hierarkia.

Näin voit lisätä 10 solmua puunäkymään (nimeltään "TreeView1"). Huomaa, että Kohteet-ominaisuus tarjoaa pääsyn kaikkiin puun solmuihin. AddChild lisää uuden solmun puunäkymään. Ensimmäinen parametri on emo-solmu (rakentaa hierarkia) ja toinen parametri on solmun teksti.

AddChild palauttaa juuri lisätyn TTreeNode. Edellä

instagram viewer
koodinäyte, kaikki 10 solmua lisätään juurisolmuiksi (ei vanhempaa solmua).

Kaikissa monimutkaisemmissa tilanteissa haluat, että solmuillasi on enemmän tietoa - mieluiten, että niillä on joitain erityisiä arvoja (ominaisuuksia), jotka ovat ominaisia ​​kehittämällesi projektille.

Sano, että haluat näyttää asiakastilaustiedot-tiedot tietokannasta. Jokaisella asiakkaalla voi olla enemmän tilauksia ja jokainen tilaus koostuu useammasta tuotteesta. Tämä on hierarkkinen relaatio, joka voidaan näyttää puunäkymässä:

Tietokannassasi olisi lisätietoja jokaisesta tilauksesta ja jokaisesta tuotteesta. Puunäkymässä näkyy (vain luku) nykyinen tila - ja haluat nähdä tilauksen (tai jopa kohteen) yksityiskohdat valitulle tilaukselle.

Kun käyttäjä valitsee solmun "Tilaus_1_1", haluat tilauksen yksityiskohdat (kokonaissumma, päivämäärä jne.) Näkyvän käyttäjälle.

Voit silloin noutaa vaaditut tiedot tietokannasta. MUTTA sinun on tiedettävä valitun tilauksen yksilöivä tunniste (sanotaan kokonaisluku) oikean datan napauttamiseksi.

Tarvitsemme tavan tallentaa tämä tilaustunniste solmun kanssa, mutta emme voi käyttää Teksti-ominaisuutta. Jokaiseen solmuun tallennettava mukautettu arvo on kokonaisluku (vain esimerkki).

Kun tällainen tilanne tapahtuu, saatat houkutella etsimään Tag-ominaisuutta (monilla Delphi-komponenteilla on), mutta TTreeNode-luokka ei paljasta Tag-ominaisuutta.

Lisää mukautettuja tietoja puusolmuihin: TreeNode. Tietoominaisuus

Puusolmun Data-ominaisuuden avulla voit yhdistää mukautetut tiedot puusolmuun. Tiedot ovat a osoitin ja voi osoittaa esineitä ja tietueita. XML (RSS-syötteen) tietojen näyttäminen puunäkymässä näyttää, kuinka a tietuetyyppi muuttujan puusolmun Data-ominaisuuteen.

Monet esineetyyppiluokit paljastavat Data-ominaisuuden - voit tallentaa minkä tahansa objektin kohteen kanssa. Esimerkki on TListView-komponentin TListItem. tässä kuinka lisätä esineitä Data-omaisuuteen.

Lisää mukautettuja tietoja puusolmuihin: Puunäkymä. CreateNodeClass

Jos et halua käyttää TTreeNode-tietoominaisuutta, vaan haluat pikemminkin oman TreeNode-laajennuksen muutamalla ominaisuudella, Delphillä on myös ratkaisu.

Sano, että haluat tehdä

Voit laajentaa TTreeNode-standardia muutamalla omalla ominaisuudellasi seuraavasti:

  1. Luo TMyTreeNode laajentamalla TTreeNode.
  2. Lisää se merkkijono-ominaisuus MyProperty.
  3. Käsittele OnCreateNodeClass-puunäkymää määrittääksesi solmuluokan, joka olisi luotava.
  4. Paljasta jotain TreeView1_SelectedNode-ominaisuutta, lomaketasolla. Tämä olisi tyyppiä TMyTreeNode.
  5. Käsittele puunäkymän OnChange-sovellusta kirjoittaaksesi SelectedNode-arvoon valitun solmun arvon.
  6. Käytä TreeView1_Selected.myProperty-sovellusta uuden mukautetun arvon lukemiseen tai kirjoittamiseen.

Tässä on täydellinen lähdekoodi (TB-painike: "Button1" ja TTreeView: "TreeView1" lomakkeella):

Tällä kertaa TTreeNode-luokan Data-ominaisuutta ei käytetä. Pikemminkin laajennat TTreeNode-luokkaa, jotta sinulla olisi oma versio puusolmusta: TMyTreeNode.

Puunäkymän OnCreateNodeClass-tapahtumaa käyttämällä luot mukautetun luokan solmun normaalin TTreenode-luokan sijasta.