
A mellékelt példaprogram megnyitása előtt az IniView.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens a TCustomTreeView osztály leszármazottja.
Mivel meg kell adnunk az ini fájl elérési útját és nevét, szükség van egy IniFileName tulajdonságra. Az egyes elemek mellett képeket is meg szeretnénk jeleníteni, ezért a tulajdonságok listájában hivatkoznunk kell az Images, örökölt tulajdonságra. Amikor majd felhasználjuk a komponenst, mint a mellékelt példaprogramban is, hozzárendelhetünk egy TImageList objektumot. A TImageList objektum első (0) képe lesz a fő elemek ikonja, a második kép (1) pedig az alárendelt elemeké.
Amikor megváltoztatjuk az IniFileName tulajdonság értékét, meghívódik a ScanItems eljárás, amely beolvassa az ini fájl tartalmát.
ScanItems
Először tennünk kell két biztonsági intézkedést, hogy akkor se akadjon ki a komponens, amikor hibás érték van az IniFileName tulajdonságban.
if FIniFileName='' then Exit;
if not FileExists(FIniFileName) then Exit;
Ezután kezdődhet az ini fájl beolvasása. Az ini állományok használatához a Delphi tartalmaz egy TIniFile osztályt, amely az IniFiles unit része. Ennek használatával könnyedén beolvashatjuk a fájl tartalmát. Az alábbi utasítás rendeli hozzá a változót az állományhoz.
IniFile:=TIniFile.Create(FIniFileName);
Az IniFile objektum metódusainak használatához TStringList változókra van szükség. A Main változó a gyökér elemek, a Sub változó az alárendelt elemek és a Values változó pedig az értékek tárolását valósítják meg. A beolvasást az alábbi kód valósítja meg.
IniFile.ReadSections(Main);
for i:=0 to Main.Count-1 do
begin
Node:=Items.Add(nil,Main[i]);
Node.ImageIndex:=0;
Node.SelectedIndex:=0;
Sub.Clear;
IniFile.ReadSection(Main[i],Sub);
IniFile.ReadSectionValues(Main[i],Values);
for j:=0 to Sub.Count-1 do
begin
SubNode:=Items.AddChild(Node,Sub[j]+' = '+Values[j]);
SubNode.ImageIndex:=1;
SubNode.SelectedIndex:=1;
end;
end;
A ReadSections metódus egy TStringList változóba olvassa be a gyökér elemeket. Az ezeknek alárendelt elemeket a ReadSection metódus olvassa be.
Az egyes TreeView elemek (TNode) ImageIndex és SelectedIndex tulajdonságát ugyanarra az értékre állítsuk be. Ekkor nem lesz különbség a kijelölt és a nem kijelölt elemek ikonjai között.