如何利用treeview的stateimage?(50分)

  • 主题发起人 主题发起人 chenyihai
  • 开始时间 开始时间
C

chenyihai

Unregistered / Unconfirmed
GUEST, unregistred user!
如何利用treeview的stateimage?
就是如何实现目录树的节点打开和关闭图表的变换?
 
在窗体上放一imagelist,加入你要显示的image,设第1个是Openedico,第2个是
Closedico,(第0个随便是什么,取第0个好象有问题) ,把Stateimage指定为此
imagelist

然后在CustomDrawItem事件里添加代码:

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Node.Expanded = True then
Node.StateIndex := 1
else
Node.StateIndex :=2;
end;
 
在添加Node时,设置其ImageIndex和SelectedIndex属性,分别为未选中和选中时的图标索引。
如果分别设为关闭和打印开关的文件夹图标,即可实现你的目的。
有一个小缺陷是不选中节点,只是单击左边的加号展开,图标不会变化,这可以通过在
expand中设置其stateindex解决。
 
多人接受答案了。
 
非常感谢 breeze ,谢谢!!
 
后退
顶部