你的需求我不太清楚,下面这段程序是用递归实现的.如果不明白再问我吧. var tmpNode: TTreeNode; procedure SetImageIndex(ANode: TTreeNode); begin if ANode.ImageIndex = 0 then ANode.ImageIndex := 1 else ANode.ImageIndex := 0; end; procedure ChangeImage(ATreeNode: TTreeNode); begin if ATreeNode.Count <> 0 then begin tmpNode := ATreeNode.GetFirstChild; SetImageIndex(tmpNode); ChangeImage(tmpNode); tmpNode := tmpNode.GetNext; SetImageIndex(tmpNode); ChangeImage(tmpNode); end; end;begin tmpNode := TreeView2.items.Item[0]; SetImageIndex(tmpNode); ChangeImage(tmpNode); end;
to reonlyrun 我是了你的代码它实现的功能是点一下即变,但点的那个节点却不变 而我要实现的功能是点中根目录,所有的子目录全变,再点又变回来, 请指教
我把程序又改了改,这样子行吗?不过好想有一个问题点击根节点后必须再点击一下才能再点别的,我想是就两张图片的问题,不知道你的应用中有几个图片所以也就没有再试,不行的化再和我联系 procedure TForm1.TreeView1Click(Sender: TObject); procedure SetImageIndex(ANode: TTreeNode); begin if ANode.ImageIndex = 0 then ANode.ImageIndex := 1 else ANode.ImageIndex := 0; end; procedure ChangeImage(ATreeNode: TTreeNode); var tmpNode: TTreeNode; begin if ATreeNode.Count <> 0 then begin tmpNode := ATreeNode.GetFirstChild; SetImageIndex(tmpNode); ChangeImage(tmpNode); end; tmpNode := ATreeNode.getNextSibling; if tmpNode <> nil then begin SetImageIndex(tmpNode); ChangeImage(tmpNode); end; end;begin if TreeView1.Selected.Count <> 0 then begin SetImageIndex(TreeView1.Selected.GetFirstChild); ChangeImage(TreeView1.Selected.GetFirstChild); end; end;
var
tmpNode: TTreeNode; procedure SetImageIndex(ANode: TTreeNode);
begin
if ANode.ImageIndex = 0 then
ANode.ImageIndex := 1
else
ANode.ImageIndex := 0;
end; procedure ChangeImage(ATreeNode: TTreeNode);
begin
if ATreeNode.Count <> 0 then
begin
tmpNode := ATreeNode.GetFirstChild;
SetImageIndex(tmpNode);
ChangeImage(tmpNode);
tmpNode := tmpNode.GetNext;
SetImageIndex(tmpNode);
ChangeImage(tmpNode);
end;
end;begin
tmpNode := TreeView2.items.Item[0];
SetImageIndex(tmpNode);
ChangeImage(tmpNode);
end;
我是了你的代码它实现的功能是点一下即变,但点的那个节点却不变
而我要实现的功能是点中根目录,所有的子目录全变,再点又变回来,
请指教
procedure TForm1.TreeView1Click(Sender: TObject);
procedure SetImageIndex(ANode: TTreeNode);
begin
if ANode.ImageIndex = 0 then
ANode.ImageIndex := 1
else
ANode.ImageIndex := 0;
end; procedure ChangeImage(ATreeNode: TTreeNode);
var
tmpNode: TTreeNode;
begin
if ATreeNode.Count <> 0 then
begin
tmpNode := ATreeNode.GetFirstChild;
SetImageIndex(tmpNode);
ChangeImage(tmpNode);
end;
tmpNode := ATreeNode.getNextSibling;
if tmpNode <> nil then
begin
SetImageIndex(tmpNode);
ChangeImage(tmpNode);
end;
end;begin
if TreeView1.Selected.Count <> 0 then
begin
SetImageIndex(TreeView1.Selected.GetFirstChild);
ChangeImage(TreeView1.Selected.GetFirstChild);
end;
end;