Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Probleme beim Auslesen der Registry

  Alt 13. Aug 2005, 13:19
ich hab das ganze so gelöst das wenn ein subkey existiert ein Item "\" angelegt wird. Im OnExpand überprüfe ich dann ob ein solches Item existiert und wenn dies der fall ist wird der unterzweig dann gefüllt.
Folgende Procedure befüllt den TreeView
Delphi-Quellcode:
procedure ShowRegInTree(ATree: TTreeView; AParentNode: TTreeNode; ARegPath: String);
var LRegistry, LReg2: TRegistry;
    LNames: TStringlist;
    LCount: Integer;
    LNode: TTreeNode;
begin
  ATree.Items.BeginUpdate;
  LRegistry := TRegistry.Create;
  LRegistry.RootKey := HKEY_CLASSES_ROOT;
  if Assigned(AParentNode) then
    AParentNode.DeleteChildren;
  if LRegistry.OpenKey(ARegPath, False) then
  begin
    LReg2 := TRegistry.Create;
    LReg2.RootKey := LRegistry.RootKey;
    LNames := TStringList.Create;
    LRegistry.GetKeyNames(LNames);
    for LCount := 0 to LNames.Count - 1 do
    begin
      LNode := ATree.Items.AddChild(AParentNode, LNames.Strings[LCount]);
      if LReg2.OpenKeyReadOnly(ARegPath + '\' + LNames.Strings[LCount]) then
      begin
        if LReg2.HasSubKeys then
          ATree.Items.AddChild(LNode, '\');
        LReg2.CloseKey;
      end;
    end;
    LNames.Free;
    LRegistry.CloseKey;
    LReg2.Free;
  end;
  LRegistry.Free;
  ATree.Items.EndUpdate;
end;
Um den Baum erstmal mit den ersten Items zu befüllen
ShowRegInTree(TreeView1, TreeView1.Items.GetFirstNode, ''); und im OnExpanding
Delphi-Quellcode:
var LPath: String;
    LNode2: TTreeNode;
begin
  AllowExpansion := True;
  if (Node.Count = 1) and (Node.Item[0].Text = '\') then
  begin
    LNode2 := Node;
    LPath := LNode2.Text;
    while Assigned(LNode2.Parent) do
    begin
      LNode2 := LNode2.Parent;
      LPath := LNode2.Text + '\' + LPath;
    end;
    ShowRegInTree(TreeView1, Node, LPath);
  end;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat