Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#7

Re: VST Node finden und neuen eintrag addieren

  Alt 14. Sep 2008, 22:11
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
  Mit Zitat antworten Zitat