Zitat von
toms:
Zitat von
EWeiss:
Zitat von
toms:
Ich verstehe nicht ganz, warum du TStringList verwendest.
Dann meine gegenfrage was würdest du verwenden ?
Ich muss das Tree ja irgendwie füllen ..
Nun, du füllst zuerst eine TStringList und dann den VST. Die Werte sind ja alle vordefiniert. Diese kannst du
auch in ein Array schreiben:
Delphi-Quellcode:
const AvailableScreens:
array[0..X] of Char = ('Splash', 'Mainmenu', '..');
Ja oder in einer Type
Delphi-Quellcode:
TCAVEAvailableScreensType = (stSplash, stMainmenu);
AvailableScreens: array[TCAVEAvailableScreensType] of string = ('Splash', 'Mainmenu');
Denke aber alle möglichkeiten sind grundsätzlich gleich da am ende ein Array of bei rauskommt.
Ob nun einen StringListe befüllt wird oder ein array.
Mit dem IterateSubtree komme ich nicht so recht klar , mein problem
weiss nicht wann ich diese aufrufen soll da die abfrage beim einlesen der INI erfolgen muss.
Hier meine INI
Delphi-Quellcode:
procedure TCAVESkinManager.ParseIniToTree(INIFileName: string; Section: string; TreeView: TVirtualStringTree);
function IdOf(s: string): string;
begin
if pos('=', s) = 0 then
result:=s
else
result := copy(s, 1, pos('=', s) - 1);
end;
function ValOf(s: string): string;
begin
result := copy(s, pos('=', s) + 1, length(s));
end;
var
INI : TIniFile; // Ini File
Value : TStringList; // Ergebnis
Node, Parent : PVirtualNode; // Node
IntSect : integer; // Zähler für Section
IntValue : integer; // Zähler für Ergebnis
Data : PTreeData;
NewSection : TStrings; // Strings in TStrings convertieren
begin
if FileExists(INIFileName) then begin
// ImiFile initialisieren
INI := TIniFile.Create(INIFileName);
// TStringList für Ergebnis initialisieren
Value := TStringList.Create;
// TStringList zur convertierung (Section..string)
// zu TStrings initialisieren
NewSection := TStringList.Create;
// string zur TStringListe addieren
NewSection.Add(Section);
try
Parent := TreeView.AddChild(nil);
INI.ReadSectionValues(Section, Value);
for IntValue := 0 to Value.Count - 1 do begin
Node:=TreeView.AddChild(Parent);
Data := TreeView.GetNodeData(Node);
Data^.FCaption:=IdOf(Value[IntValue]);
Data^.FColumn1:=ValOf(Value[IntValue]);
end;
finally
INI.Free;
NewSection.Free;
Value.Free;
end;
end;
end;
Wenn
Data^.FCaption:=IdOf(Value[IntValue]);
den Wert Background enthält sollte zu Bitmap dieser eintrag addiert werden.
den Wert Label enthält sollte zu Text dieser eintrag addiert werden.
Keine Idee wie ich das am besten verwirklichen kann.
Das Video von generic bringt mich auch nicht weiter da es komplett anders aufgebaut ist.
gruss Emil