TTreeview里如何转换打开文件和关闭文件图标?

时间:2022-03-12 10:01:53
我在程序里用了一个TTreeview的树形控件,还用Image加了两个图标,表示关闭文件夹和打开文件夹,要求做到像Windows的资源管理器一样,用鼠标点哪个节点,则哪个节点左边的图标就显示成打开文件夹的状态,其余节点的图标显示成关闭文件夹的状态,我在TTreeview的OnChange方法里通过Node->ImageIndex=0和Node->ImageIndex=0来转换,但不行,有什么好的方法吗?具体如何操作?
我在C++Buider论坛里问了但得不到解答。

12 个解决方案

#1


Node->ImageIndex=0和Node->ImageIndex=1来转换,但不行,有什么好的方法吗

#2


Node->SelectedInex = 0

#3


Node->SelectedIndex = 0
Node->SelectedIndex = 1

#4


这样可以
var
  node : TreeNode;
begin
  node := Treeview1.Selected;
  if node<>nil then
    node.SelectedIndex := 1;
end

#5


同意楼上的。

#6


procedure TFormHelp.TreeViewHelpCollapsed(Sender: TObject;
  Node: TTreeNode);
begin
  TTreeView(Sender).Items.BeginUpdate;
  Node.ImageIndex := 0;
  Node.SelectedIndex := 0;
  TTreeView(Sender).Items.EndUpdate;
end;

procedure TFormHelp.TreeViewHelpExpanded(Sender: TObject; Node: TTreeNode);
begin
  TTreeView(Sender).Items.BeginUpdate;
  Node.ImageIndex := 1;
  Node.SelectedIndex := 1;
  TTreeView(Sender).Items.EndUpdate;
end;

#7


其它你不用去设置SelectedIndex的,它的缺省值为0,
所以你只要将打开的图标放在第一个的话就根本不要去设置了!

#8


应该是不用每次去设置

#9


()()

#10


直接在创建Node的时候指定就可以了。
  Node := TreeView1.Add(Node1,'asasas');
  Node.ImageIndex := 0;   //关闭
  Node.SelectedIndex := 1; //打开
  

#11


同意楼上的

#12


同意 liang_z(千山一刀之忍者神龟) ,不用写代码就可以!

#1


Node->ImageIndex=0和Node->ImageIndex=1来转换,但不行,有什么好的方法吗

#2


Node->SelectedInex = 0

#3


Node->SelectedIndex = 0
Node->SelectedIndex = 1

#4


这样可以
var
  node : TreeNode;
begin
  node := Treeview1.Selected;
  if node<>nil then
    node.SelectedIndex := 1;
end

#5


同意楼上的。

#6


procedure TFormHelp.TreeViewHelpCollapsed(Sender: TObject;
  Node: TTreeNode);
begin
  TTreeView(Sender).Items.BeginUpdate;
  Node.ImageIndex := 0;
  Node.SelectedIndex := 0;
  TTreeView(Sender).Items.EndUpdate;
end;

procedure TFormHelp.TreeViewHelpExpanded(Sender: TObject; Node: TTreeNode);
begin
  TTreeView(Sender).Items.BeginUpdate;
  Node.ImageIndex := 1;
  Node.SelectedIndex := 1;
  TTreeView(Sender).Items.EndUpdate;
end;

#7


其它你不用去设置SelectedIndex的,它的缺省值为0,
所以你只要将打开的图标放在第一个的话就根本不要去设置了!

#8


应该是不用每次去设置

#9


()()

#10


直接在创建Node的时候指定就可以了。
  Node := TreeView1.Add(Node1,'asasas');
  Node.ImageIndex := 0;   //关闭
  Node.SelectedIndex := 1; //打开
  

#11


同意楼上的

#12


同意 liang_z(千山一刀之忍者神龟) ,不用写代码就可以!