如何将TreeView和ListView的选则状态保留(100分)

  • 主题发起人 主题发起人 段维
  • 开始时间 开始时间

段维

Unregistered / Unconfirmed
GUEST, unregistred user!
急!!!

现在遇到了一个问题,希望能够在同TreeView相联系的ListView中选择
多项纪录,且能够保留状态或由程序改变。
ListView的checkbox可以标示选择,但是当我在TreeView中选择了其他
节点后再返回时,其状态又恢复了。不能起到纪录我选择的节点的作用。
另外,希望能够在TreeView中显示的标出被选的项。

不知道有什么方法可以解决,或者有什么控件可以使用?
 
深度历险有带checkbox的treeview.
 
容易,把TreeView、ListView控件的HideSelection属性选为False,搞定。
 
真的看不明白。
 
有什么看不明白的?我也遇到过这个问题,瞎搞了一阵之后,按上面的方法搞定的。
 
主要不知道想干什么!
 
呵呵, 必须要在更改treeview的项时记录下listbox的状态, 然后返回时恢复就可以
了, 这可以使用一个3维数组实现, 1是treeview项(或index)2是listbox的项,3是
选择否:-)
 
ListView的数据是怎么保存的? 数据库?
反正最好还是在数据里面做记号.如果是数据库,则可以添加一个字段: IsSelected:boolean
 
一般来说,ListView中的数据中因TreeView中选中项目后再决定的(例如读磁盘或库等),
所以很难实现这样效果,在选中1时修改ListView,再选2,又选1,还是原来修改的样子。

依我看,唯一的办法是建立一个一维的动态数组,数据名给TreeNode的Data引用。
在选中某一个TreeNode之后,检查它的Data指向的数组,对应它的ListView作相应
的修改。如果没内容也就算了。如果ListView中ListItem改变了,也必须在此Data
指向的数组内作相应的变更。这样方能达到我们段同志的要求。

拙见,大家指正。
 
我也遇到过这种情况,我用的是最傻的办法,就是用cavans重画那一格:-(
 
同意3h分坛主的意见。

ListView不能保存CheckBox的选择状态,必须自己保存(可以在ListView的
OnChange事件中做这件事),然后在重新显示这些Items的时候恢复其状态,
或者干脆用Virtual ListView的方式。

TreeView要想能显式的标出被选的项,可以使用TreeNT控件,它可提供类似
IE中Internet选项对话框中那种带CheckBox的TreeView。
 
对于TreeView要想显式的标出被选的项,可以用StateImage.
procedure TMainForm.TreeView1GetImageIndex(Sender: TObject;
Node: TTreeNode);
begin
Node.StateIndex :=Index(You Can select a icon);
end;
在必要的地方,只要用TreeView1.Selected.StateIndex :=Index
 
谢谢大家的主意
不过,最后还是用了别人现成的控件 :(
 
后退
顶部