Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Virtual TreeView mit INI füllen (https://www.delphipraxis.net/119835-virtual-treeview-mit-ini-fuellen.html)

EWeiss 1. Sep 2008 23:47


Virtual TreeView mit INI füllen
 
Hallo
Das Schnipsel von mir befüllt ein normales TreeView mit daten die aus einer INI Datei gelesen werden.
Man hat mir geraten auf das Virtual TreeView umzusteigen damit kenne ich mich aber nicht so gut aus.
Jemand eine Lösung wie oder welche Funktion ich da verwenden muss ?

Delphi-Quellcode:
procedure TMainForm.ParseIniToTree(INIFileName: string; TreeView: TVirtualStringTree);

// ... schnipp
end;
AddChildObject gibt es nicht beim TVirtualStringTree ..

gruss EMil

Die Muhkuh 1. Sep 2008 23:53

Re: Virtual TreeView mit INI füllen
 
Hi,

darf man erfahren, warum Du auf das VST umsteigen willst / sollst?

Ich würde es beim TreeView belassen, wenn Du damit alle Deine Anforderungen abdecken kannst.

Ansonsten gibt es für das VST hier ein nettes Tutorial.

EWeiss 2. Sep 2008 00:21

Re: Virtual TreeView mit INI füllen
 
Zitat:

Zitat von Die Muhkuh
Hi,

darf man erfahren, warum Du auf das VST umsteigen willst / sollst?

Ich würde es beim TreeView belassen, wenn Du damit alle Deine Anforderungen abdecken kannst.

Ansonsten gibt es für das VST hier ein nettes Tutorial.

weiss nicht warum das wichtig ist
aber wegen diesen Thread .. da hat man es mir geraten.

http://www.delphipraxis.net/internal...t.php?t=141471

Nettes .. ja aber nur net denn es funktioniert nicht.
das hilft mir nicht weiter.

gruss Emil

Die Muhkuh 2. Sep 2008 00:24

Re: Virtual TreeView mit INI füllen
 
Zitat:

Zitat von EWeiss
Nettes .. ja aber nur net denn es funktioniert nicht.
das hilft mir nicht weiter.

Mir auch nicht ;)

omata 2. Sep 2008 00:37

Re: Virtual TreeView mit INI füllen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein kleines Beispiel...

EWeiss 2. Sep 2008 00:40

Re: Virtual TreeView mit INI füllen
 
Zitat:

Zitat von omata
Hier mal ein kleines Beispiel...

Das ist nett von dir .. :-D
Danke schön

Dann nochmal auch für andere ...

Normales TreeView
Delphi-Quellcode:
procedure TMainForm.ParseIniToTree(INIFileName: string; TreeView: TTreeView);

  function IdOf(s: string): string;
  begin
    result := s;
  end;

  function ValOf(s: string): string;
  begin
    result := copy(s, pos('=', s) + 1, maxint);
  end;

var INI     : TIniFile;     // Ini File
    Section : TStringList;  // Section
    Value   : TStringList;  // Ergebnis
    node    : TTreeNode;    // Node
    IntSect : integer;      // Zähler für Section
    IntValue : integer;      // Zähler für Ergebnis

begin
  if (not FileExists(INIFileName)) then
    exit;

  INI    := TIniFile.Create(INIFileName);
  Section := TStringList.Create;
  Value  := TStringList.Create;

  try

    INI.ReadSections(Section);
    for IntSect := 0 to Section.Count - 1 do
    begin
      node := TreeView.Items.AddChild(nil, Section[IntSect]);
      INI.ReadSectionValues(Section[IntSect], Value);
      for IntValue := 0 to Value.Count - 1 do
        TreeView.Items.AddChildObject(node,
                                IdOf(Value[IntValue]),
                                pointer(StrToIntDef(ValOf(Value[IntValue]),
                                0)));
    end;

  finally
    INI.Free;
    Section.Free;
    Value.Free;
  end;

end;
und für VirtualTreeView
Delphi-Quellcode:
procedure TFMain.ParseIniToTree(INIFileName: string; TreeView: TVirtualStringTree);

  function IdOf(s: string): string;
  begin
    result := s;
  end;

  function ValOf(s: string): string;
  begin
    result := copy(s, pos('=', s) + 1, maxint);
  end;

var INI         : TIniFile;    // Ini File
    Section     : TStringList; // Section
    Value       : TStringList; // Ergebnis
    Node, Parent : PVirtualNode; // Node
    IntSect     : integer;     // Zähler für Section
    IntValue    : integer;     // Zähler für Ergebnis
    Data        : PTreeData;

begin
  if FileExists(INIFileName) then begin
    TreeView.Clear;
    INI := TIniFile.Create(INIFileName);
    Section := TStringList.Create;
    Value := TStringList.Create;
    try
      INI.ReadSections(Section);
      for IntSect := 0 to Section.Count - 1 do
      begin
        Parent := TreeView.AddChild(nil);
        Data := TreeView.GetNodeData(Parent);
        Data^.Caption:=Section[IntSect];
        INI.ReadSectionValues(Section[IntSect], Value);
        for IntValue := 0 to Value.Count - 1 do begin
          Node:=TreeView.AddChild(Parent);
          Data := TreeView.GetNodeData(Node);
          Data^.Caption:=IdOf(Value[IntValue]);
          Data^.ValOf:=ValOf(Value[IntValue]);
        end;
      end;
    finally
      INI.Free;
      Section.Free;
      Value.Free;
    end;
  end;
end;
das wird auch anderen helfen denke ich mal
Muss jetzt nur noch schaun wie das mit Headern funktioniert dann ist es fertig
Denke hab da was auf der Seite gelesen was aber nicht funktioniert.

gruss Emil

omata 2. Sep 2008 00:57

Re: Virtual TreeView mit INI füllen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier noch ein Beispiel, das mit dem normalen TreeView nicht möglich ist...

EWeiss 2. Sep 2008 01:00

Re: Virtual TreeView mit INI füllen
 
Zitat:

Zitat von omata
Hier noch ein Beispiel, das mit dem normalen TreeView nicht möglich ist...

Feine Sache ;)
Du meinst das mit den Button rechts wo man den header verschieben kann ?

gruss Emil

omata 2. Sep 2008 01:01

Re: Virtual TreeView mit INI füllen
 
Lade doch mal eine INI-Datei, dann kannst du sehen was ich meine...

EWeiss 2. Sep 2008 01:12

Re: Virtual TreeView mit INI füllen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von omata
Lade doch mal eine INI-Datei, dann kannst du sehen was ich meine...

Habe eine geladen sieht was seltsam aus ;)
Links wird der Name incl. der Value angezeigt und rechts die Value
Entweder wird da was doppelt addiert oder das ist es was du meinst.

Hab mal ein pic angehängt

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz