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的子节点中增加节点那们朋友能帮我看看这段代码哪儿有错误吗?
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的子节点中增加节点那们朋友能帮我看看这段代码哪儿有错误吗?
TempNode:=TreeView1.Items.Add(node.Item[i],SubRegKey[j]);//
改成:
TempNode:=TreeView1.Items.AddChild(node.Item[i],SubRegKey[j]);
^^^^^^//你要添加的是子节点啊