HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

TreeView komponens


Példaprogram letöltése

10254 bájt

A TTreeView osztály is kiegészült néhány újdonsággal. Az alábbi példában egy TTreeView komponenst feltöltünk adatokkal úgy, hogy minden elemhez kiegészítő információkat is eltárolunk, melyeket egy általunk létrehozott összetett adattípusban tárolunk. Ezzel a módszerrel bármilyen tetszőleges adatot egyszerűen hozzárendelhetünk az elemekhez.
Egy másik újdonság, hogy most már lehetőség van több elem kijelölésére is a listában. A második példaprogram ennek lehetőségeit mutatja be.

A példában a „C:\Program Files” könyvtár tartalmát jelenítjük meg a TreeView komponensben. Amikor kiválasztunk egy fájlt a TreeView-ből, akkor annak tulajdonságai megjelennek a komponens alatt. Ezt a feladatot úgy oldjuk meg, hogy létrehozunk egy TFileProperties nevű összetett adattípust (record), amiben a tartalomjegyzék beolvasásakor a fájl adatai eltárolhatók. Az új elemet a TreeView-hoz az Items property AddNode függvényével adjuk hozzá.
TreeView1.Items.AddNode(nil, node, f.Name, fi, naAddChild);
Az első paraméter TTreeNode típusú (Node). Ha már egy előzőleg létrehozott TTreeNode objektumot szeretnénk hozzáadni a listához, akkor azt ebben a paraméterben tudjuk megtenni. Ha a TreeView egy már létező elemét adjuk meg, akkor ezzel áthelyezhetjük azt.
Ha nil-t adunk meg, akkor a függvény automatikusan létrehozza az objektumot.
A második (Relative) és az utolsó (Method) paraméterek együtt határozzák meg, hogy az új elem a listában hova kerüljön. A Method paraméter értékétől függően a Relative paraméterben megadott elem lesz a szülő, vagy a testvér eleme az új elemnek.
A Relative paraméter értékei a következők lehetnek:
  • naAdd: az új elem a testvér eleme lesz a Relative paraméterben megadott elemnek, és az utolsó helyre kerül.
  • naAddFirst: annyiban különbözik az naAdd-tól, hogy az elem az első helyre kerül.
  • naInsert: az új elemet a Relative paraméterben megadott elem elé fogja beszúrni.
  • naAddChild: a Relative paraméterben megadott elem a szülője lesz az új elemnek, az új elem pedig az utolsó helyre kerül.
  • naAddChildFirst: ua. mint az előző, de az elem az első helyre kerül.
A harmadik paraméter (S) az elem neve, ami a listában megjelenik.
A negyedik (Data) paraméter egy pointer az elemhez fűzendő objektumra. Mivel ez egy egyszerű pointer, így ez az objektum bármi lehet, egy egyszerű változótól kezdve egy összetettebb objektumig. Az elemhez fűzött objektumokhoz a Data property-n keresztül férhetünk hozzá.
var
  fi: ^TFileProperties;
...
  fi:=TreeView1.Selected.Data;
A példában a fi egy pointer, amely egy TFileProperties típusú változóra mutat. Ennek a változónak futásidőben foglaljuk le a memóriát, amit az elemek törlésekor fel is kell szabadítani. Ezt a Form OnDestroy eseményénél tesszük meg.
A második példaprogramban a MultiSelect lehetőséget vizsgáljuk meg. Ha a MultiSelect property értéke igaz, akkor a listából a felhasználó egyszerre több elemet is kijelölhet. Ennek lehetőségeit a MultiSelectStyle property-ben szabályozhatjuk. Ez egy tömb típusú property. amelyben a következő értékeket lehet megadni:
  • msControlSelect: a Ctrl billentyű nyomva tartása mellett lehet több elemet kijelölni.
  • msShiftSelect: a Shift billentyű használatával egyszerre több elem is kijelölhető. Az elsőnek kijelölt elemtől (Selections[0]), a Shift billentyű nyomva tartása mellett kijelölt elemig az összes elemet kijelöli. Ha például kijelöljük az első elemet, majd a Shift billentyűvel az utolsót, akkor az összes közbenső elem kijelölt lesz.
  • msVisibleOnly: csak a látható elemeket jelöli ki. Ha ez az érték nincs megadva, akkor a Shift-tel történő kijelölésnél az összes elemet kijelöli, ellenkező esetben csak azokat, amelyek látszanak.
  • msSiblingOnly: csak a testvér elemeket engedi kijelölni.
A kijelöléseket a ClearSelection eljárással tudjuk törölni. A KeepPrimary logikai típusú paraméterben megadhatjuk, hogy az elsőnek kiválasztott elem (Selections[0]) kijelölését is törölje-e. Ha a paraméter értéke igaz, akkor nem törli, ha hamis, akkor pedig törli. Ez utóbbi a paraméter alapértelmezett értéke, tehát ha az összes kijelölést törölni szeretnénk, akkor nem kötelező megadni a paramétert.
A Deselect eljárás a TTreeNode típusú paraméterben (Node) megadott elem kijelölését szünteti meg.
A FindNextToSelect függvény visszatérési értéke a következő kiválasztható elem objektuma (TTreeNode). A kiindulási pont mindig Selected property-n keresztül elérhető elem. Először ennek testvér elemeit nézi meg, és ha talál olyat, amelyik még nincs kijelölve, akkor annak objektumával tér vissza. Ha az összes testvér elem ki van már jelölve, akkor a szülő elemet, és annak testvér elemeit nézi meg. Ez így megy egészen addig, amíg nem talál egy kiválasztható elemet, illetve nem ér el a gyökér elemhez. Ha nem talált kiválasztható elemet, akkor a függvény visszatérési értéke nil.
A GetSelections függvény egy TList típusú listába kimásolja a kijelölt elemeket. A lista objektumát kell paraméterként megadni. A függvény visszatérési értéke megegyezik a Selected property-vel.
A Subselect eljárás a paraméterként megadott elemet (TTreeNode) kijelöli. Ha a Validate logikai típusú paramétert is megadjuk igaz értékkel, akkor ellenőrzi, hogy a kijelölés a MultiSelectStyle property-ben meghatározott szabályoknak megfelel-e. Ennek a paraméternek az alapértelmezett értéke hamis, ha tehát ha nem akarjuk, hogy a kijelölés után ellenőrzést végezzen, akkor egyszerűen hagyjuk el a paramétert.
A Select eljárással egyszerre több elemet jelölhetünk ki a listából. Az eljárásnak háromféle formája van, ezek természetesen csak a paraméterezésben térnek el egymástól.
Az első formában a paraméter egy TTreeNode típusú elemeket tartalmazó tömb. A második formátum, amikor egy TList típusú listában vannak az elemek tárolva, és az ebben a listában tárolt elemeket kell kijelölni. Mindkét esetben az előző kijelölések törölve lesznek.
A Select eljárás harmadik formája eltér az előző kettőtől. Ebben paraméterként megadhatjuk egy elem objektumát, valamit egy másik paraméterben a Shift illetve Ctrl billentyű állapotát. Ha ez egy üres tömb, akkor ugyanaz történik, mintha csak egyszerűen kattintottunk volna az elemen, tehát az elem ki lesz jelölve, míg az előzőleg kiválasztott elemek kijelölése törlődik. Ha a paraméterben megadjuk az ssShift értéket, akkor a kijelölés úgy történik meg, mintha lenyomva tartottuk volna a Shift billentyűt, illetve az ssCtrl érték mellett a Ctrl billentyűt.

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 517. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |