Saglabājiet vairāk pielāgotu datu koka mezglā Delfos

TTreeView Delfi komponents parāda hierarhisku vienumu sarakstu - koku mezgli. Mezglu attēlo mezgla teksts un izvēles attēls. Katrs mezgls koka skatā ir TTreeNode klases piemērs.

Kamēr dizaina laikā varat aizpildīt koka skatu ar vienumiem, izmantojot TreeView vienumu redaktors, vairumā gadījumu koka skats būtu jāaizpilda izpildes laikā - atkarībā no tā, kāda ir jūsu lietojumprogramma.

TreeView vienumu redaktors atklāj, ka ir tikai nedaudz informācijas, ko jūs varat "pievienot" mezglam: teksts un daži attēlu indeksi (normālam stāvoklim - izvērsti, atlasīti un līdzīgi).

Būtībā koka skata komponentu ir viegli ieprogrammēt. Ir dažas metodes, kā kokam pievienot jaunus mezglus un iestatīt to hierarhiju.

Tālāk parādīts, kā koka skatam pievienot nosaukumu 10 mezglu (ar nosaukumu “TreeView1”). Ņemiet vērā, ka rekvizīts Vienumi nodrošina piekļuvi visiem koka mezgliem. AddChild koka skatam pievieno jaunu mezglu. Pirmais parametrs ir vecāku mezgls (lai izveidotu hierarhiju), bet otrais parametrs ir mezgla teksts.

instagram viewer

AddChild atgriež tikko pievienoto TTreeNode. Iepriekš koda paraugs, visi 10 mezgli tiek pievienoti kā saknes mezgli (tiem nav vecāku mezglu).

Jebkurās sarežģītākās situācijās jūs vēlaties, lai jūsu mezglos būtu vairāk informācijas - vēlams, lai tām būtu kādas īpašas vērtības (īpašības), kas raksturīgas jūsu izstrādātajam projektam.

Pieņemsim, ka vēlaties parādīt klientu pasūtījuma-preces datus no savas datu bāzes. Katram klientam var būt vairāk pasūtījumu, un katru pasūtījumu veido vairāk preču. Šī ir hierarhiska saistība, ko var parādīt koka skatā:

Jūsu datu bāzē būtu vairāk informācijas par katru pasūtījumu un katru preci. Koka skatā tiek parādīts (tikai lasāms) pašreizējais stāvoklis - un jūs vēlaties redzēt informāciju par katru pasūtījumu (vai pat par katru vienumu) par izvēlēto pasūtījumu.

Kad lietotājs izvēlas mezglu “Pasūtīt_1_1”, vēlaties, lai lietotājam tiktu parādīta pasūtījuma informācija (kopējā summa, datums utt.).

Tajā laikā jūs varat iegūt vajadzīgos datus no datu bāzes, BET jums būtu jāzina izvēlētā pasūtījuma unikālais identifikators (teiksim, vesela skaitļa vērtība), lai satvertu pareizos datus.

Mums ir nepieciešams veids, kā saglabāt šo pasūtījuma identifikatoru kopā ar mezglu, bet mēs nevaram izmantot rekvizītu Teksts. Pielāgotā vērtība, kas mums jāuzglabā katrā mezglā, ir vesels skaitlis (tikai piemērs).

Ja rodas šāda situācija, jums var rasties kārdinājums meklēt īpašumu Tag (daudziem Delphi komponentiem ir), taču TTreeNode klase Tag īpašību neatklāj.

Pievienojiet pielāgotos datus koku mezgliem: TreeNode. Datu īpašums

Koka mezgla rekvizīts Data ļauj saistīt pielāgotus datus ar koka mezglu. Dati ir a rādītājs un var norādīt uz objektiem un ierakstiem. XML (RSS padeves) datu parādīšana TreeView parāda, kā uzglabāt ieraksta tips mainīgais koka mezgla Datu īpašumā.

Datu īpašums ir pakļauts daudzām vienību tipa klasēm - tās var izmantot, lai saglabātu jebkuru objektu kopā ar vienumu. Kā piemēru var minēt TListView komponenta TListItem. Lūk kā pievienot objektus datu īpašumam.

Pievienojiet pielāgotos datus koku mezgliem: TreeView. IzveidotNodeClass

Ja jūs nevēlaties izmantot TTreeNode rekvizītu Data, bet gan vēlaties, lai jūsu TreeNode tiktu paplašināts ar dažām īpašībām, Delphi ir arī risinājums.

Sakiet, ka vēlaties, lai varētu

Lūk, kā paplašināt standarta TTreeNode ar dažām savām īpašībām:

  1. Izveidojiet savu TMyTreeNode, pagarinot TTreeNode.
  2. Pievienojiet tam virknes īpašumu MyProperty.
  3. Rīkojieties ar koka skatu OnCreateNodeClass, lai norādītu, kāda mezgla klase ir jāizveido.
  4. Atklājiet formas līmenī kaut ko līdzīgu īpašumam TreeView1_SelectedNode. Tam būtu TMyTreeNode tips.
  5. Rīkojieties ar koka skatu OnChange, lai uz SelectedNode ierakstītu atlasītā mezgla vērtību.
  6. Izmantojiet TreeView1_Selected.myProperty, lai lasītu vai rakstītu jaunu pielāgoto vērtību.

Šeit ir pilns avota kods (veidlapā ir TBbutton: "Button1" un TTreeView: "TreeView1"):

Šoreiz TTreeNode klases datu īpašums netiek izmantots. Drīzāk jūs paplašināt TTreeNode klasi, lai būtu sava koka mezgla versija: TMyTreeNode.

Izmantojot koka skata notikumu OnCreateNodeClass, standarta TTreenode klases vietā jūs izveidojat savas pielāgotās klases mezglu.

instagram story viewer