Delphi - TTreeView komponens

TTreeView 1. rész

forráskód letöltése
A TTreeView komponens hierarchikus adatok megjelenítésére, szerkesztésére, az adatok böngészésére szolgál. Minden Windows felhasználó találkozott már vele, hisz az Intéző is ilyen komponensben jeleníti meg a könyvtárszerkezetet.

Most induló cikksorozatunkban ennek a komponensnek szentelünk figyelmet, és végignézzük a használatához szükséges információkat. Szerkesztési időben elemekkel feltölteni a komponenst az azon való duplakattintással lehet. A New item gomb azonos szintű, míg a New subitem gyermek elemet szúr be. Tudunk törölni illetve állományból is betölteni adatokat. Beállíthatjuk az egyes elemek szövegét és különböző indexeit. A SelectedIndex a kiválasztásakor megjelenítendő képre mutat.

Nézzünk meg néhány tulajdonságot, metódust és eseményt.

property AutoExpand: Boolean;
Igaz érték esetén a kiválasztott elem kifejtésre kerül (vagyis a gyermekei látszanak), míg a többi elemet elrejti. Ez egy gyors böngészési lehetőséget nyújt.

property ChangeDelay: Integer;
E tulajdonság beállításával a megadott ideig lehet várakoztatni az OnChange esemény bekövetkezését, vagyis egy elem kiválasztása és az ennek hatására bekövetkező esemény között eltelt idő adható itt meg.

property HideSelection: Boolean;
Igaz érték esetén a fókusz elvesztésekor az aktív elem kijelöltsége eltűnik, tehát csak akkor látszik a kijelölt elem, ha a fókusz a komponensünkön van. Hamis érték esetén a fókusz elvesztésekor is látható, hogy melyik elem aktív.

property HotTrack: Boolean;
Igaz érték esetén az egér az elem fölé mozgatására a böngészőkből vagy a Windows súgóból megszokott módon megváltozik az egérkurzor (nyíl helyett egy kézfej látható) és az elem megjelenítése is megváltozik: aláhúzott és (alapesetben) kék színű lesz.

property Indent: Integer;
Az elemek közötti vonal hossza képpontban.

property Images: TCustomImageList;
A fa minden egyes eleméhez egy képet is hozzárendelhetünk. E tulajdonság tartalmazza a képeket leíró TImageList típusú komponenst. Képet az adott (TTreeNode típusú) elemhez, az ImageIndex tulajdonság segítségével rendelhetünk. A képeket a TImageList komponensen való dupla kattintás után megjelenő dialógus ablakban lehet betölteni, szerkeszteni.

property ReadOnly: Boolean;
Alapértelmezés szerint a komponens elemei szerkeszthetők (a Windows-ban szokásos módon, az aktív elemen való kattintás után, illetve F2). Ha ezt a tulajdonságot igazra állítjuk, az elemek nem szerkeszthetők.

property RightClickSelect: Boolean;
Igaz érték esetén a jobb gombbal is lehet kiválasztani.

property RowSelect: Boolean;
Igaz érték esetén az egész sor kijelölésre kerül, nem csak az elem neve. Ez azonban csak akkor igaz, ha a ShowLines tulajdonság hamis.

property ShowButtons: Boolean;
Igaz érték esetén a +,- jeleket is megjeleníti az elemek előtt. Ezt célszerű igazra állítani, ha a fa nagy méretű.

property ShowLines: Boolean;
Igaz érték esetén az elemeket összekötő vonalak láthatók. Ez a szülő-gyermek kapcsolat nyomon követésénél segítség.

property ShowRoot: Boolean;
Igaz érték esetén az első szintű, tehát gyökérből nyíló elemek esetén is láthatóak a kezdővonalak. Elsősorban esztétikai jelentősége van.

property SortType: TSortType;
Meghatározza az elemek rendezettségét. Négy különböző értéket vehet fel:
  • stNone: Nincs rendezés.
  • stText: Az elem Text tulajdonsága alapján rendez.
  • stData: Az elem Data tulajdonsága alapján rendez.
  • stBoth: Mindkettő alapján rendez.


property StateImages: TCustomImageList;
E tulajdonsággal egy újabb, állapotinformációk megjelenítésére szolgáló kép jeleníthető meg. Az elem StateIndex tulajdonsága határozza meg a kép sorszámát.

property ToolTips: Boolean;
Igaz érték esetén a Hint tulajdonság tartalmát az alkalmazás Hint tulajdonságának adja át.

property TopItem: TTreeNode;
Az éppen megjelenített elemek közül a legfelsőt adja meg. Függőleges scroll esetén lehet érdekes.

procedure FullCollapse;
Bezárja az összes nem első szintű elemet.

procedure FullExpand;
Kinyitja az összes al-elemet.

function IsEditing: Boolean;
Igaz értéket ad vissza, ha a felhasználó éppen szerkeszti valamelyik elemet (tehát nem csak kiválasztott, hanem a szövegkurzor is látható, és a név közvetlenül módosítható).

procedure LoadFromFile(const FileName: string);
Állományból tölti be az adatokat. Akár teljes, akár relatív állománynév megadható.

procedure LoadFromStream(Stream: TStream);
Streamról tölti be az adatokat.

procedure SaveToFile(const FileName: string);
Állományba menti az adatokat.

procedure SaveToStream(Stream: TStream);
Streamre menti az adatokat.


A példaprogram a felsorolt tulajdonságok működését mutatja be. A tulajdonságok értékét többségében a megjelenő eszköztár segítségével állíthatjuk. A metódusokat a menü segítségével próbálhatjuk ki. E tulajdonságok felhasználásával csak az olvasó fantáziája szab határt a hierarchikus adatok megjelenítésében.

Nagy Gusztáv
nagygus@freemail.hu

TTreeView cikksorozat