procedure TF_Scaner.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
var
  i,j:integer;
  Reg:TRegistry;
  SubRegKey:TStringList;
  TempNode:TTreeNode;
  Thred:TGetFirstRegKey;
begin
  if TreeView1.Selected.Level=1 then
  begin
    if TreeView1.Selected.Text='HKEY_CURRENT_USER' then
      h:=HKEY_CURRENT_USER
    else if TreeView1.Selected.Text='HKEY_LOCAL_MACHINE' then
      h:=HKEY_LOCAL_MACHINE
    else if TreeView1.Selected.Text='HKEY_USERS' then
      h:=HKEY_USERS
    else if TreeView1.Selected.Text ='HKEY_CLASSES_ROOT' then
      h:=HKEY_CLASSES_ROOT
    else
      h:=HKEY_CURRENT_CONFIG;
  end;
  Reg:=TRegistry.Create;
  SubRegKey :=TStringList.Create;
  for i:=0 to node.Count -1 do
  begin
    if node.Item[i].GetLastChild.Index>0 then Continue;
    reg.RootKey :=h;
    reg.OpenKey(SelectedKeyName+'\'+node.Item[i].Text,false);
    reg.GetKeyNames(SubRegKey);
    for j:=0 to SubRegKey.Count -1 do
    begin
      TempNode:=TreeView1.Items.Add(node.Item[i],SubRegKey[j]);//前面的代码好代执行没什么问题
      TempNode.SelectedIndex :=1;
      TempNode.ImageIndex :=0;
      Application.ProcessMessages;
    end;
    reg.CloseKey;
    SubRegKey.Clear;
  end;
  SubRegKey.Free;
  reg.Free;
  TreeView1.Selected.getFirstChild.Selected:=true;end;
不知道为什么这段代码执行后并不是在node的子节点中增加节点那们朋友能帮我看看这段代码哪儿有错误吗?

解决方案 »

  1.   

    TreeView1.Items.AddChild(node.Item[i],SubRegKey[j]);
      

  2.   

    把:
          TempNode:=TreeView1.Items.Add(node.Item[i],SubRegKey[j]);//
    改成:
          TempNode:=TreeView1.Items.AddChild(node.Item[i],SubRegKey[j]);
                                       ^^^^^^//你要添加的是子节点啊
      

  3.   

    ADD添加的是同级节点 ADDCHILD则添加的是子节点