知识大全 为PB的TreeView实现同步选择

Posted 事件

篇首语:读书也像开矿一样“沙里淘金”本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 为PB的TreeView实现同步选择相关的知识,希望对你有一定的参考价值。

为PB的TreeView实现同步选择  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  TreeView控件能够清晰地表示层次关系 在TreeView编程中 常见的一个问题是同步选择(即选择一个节点时 同时选择该节点的所有子节点 不选一个节点 同时去除该节点的祖先节点选择标志)

  要实现这种效果 本来不难 只需要在检测到节点选择状态变化时 遍历节点的祖先或者后代节点进行同步即可 但是PB并没有提供检测节点选择状态变化的事件

  让我们来看看PB中TreeView节点选择状态的表示 当TreeView的CheckBoxes属性为True时 每个节点包含一个复选框 选中复选框时 StatePictureIndex属性为 未选中则为 当选择某个节点时 首先触发TreeView的Clicked事件 处理完Clicked事件后再对StatePictureIndex进行设置 显然 如果我们能够将Clicked事件前后节点的StatePictureIndex属性值进行比较 我们就可以判断节点的选择状态是否发生了变化 按照这个思路 疏理PB的事件模型 发现采用Post的调用事件方法 可以实现将一个事件加入控件消息序列 在处理完当前事件后再对新加入的事件进行处理

  至此 我们得到了如下的解决方案

     为TreeView控件添加一个用户事件ue_synchronizechildren(long handle integer state)

  代码如下

  long childitem

  treeviewitem tvitem

  getitem(handle tvitem)

  tvitem statepictureindex=state

  setitem(handle tvitem)

  childitem=this finditem(ChildTreeItem! handle)

  do while(childitem<> )

  this Event ue_synchronizechildren(childitem state) //递归遍历后代结点

  childitem=this finditem(NextTreeItem! childitem)

  loop

  添加一个用户事件ue_synchronizeparent(long handle integer state) 如下

  long parentitem

  treeviewitem tvitem

  getitem(handle tvitem)

  tvitem statepictureindex=state

  setitem(handle tvitem)

  parentitem=this finditem(ParentTreeItem! handle)

  if parentitem<> then

  this Event ue_synchronizeparent(parentitem state)

  end if

     添加一个用户事件ue_statechanged(long handle integer prevstate)检测节点的选择状态 如果发生了变化则调用ue_synchronizechildren同步后代节点 并根据需要通过ue_synchronizeparent同步祖先节点

  代码如下

  treeviewitem tvitem

  getitem(handle tvitem)

  if tvitem statepictureindex=prevstate then

  return

  else

  this Event ue_synchronizechildren(handle tvitem statepictureindex)

  if tvitem statepictureindex= then //如需实现文末提及的功能 可在此处添加代码

  this Event ue_synchronizeparent(handle tvitem statepictureindex)

  end if

  end if

     在Clicked事件中 添加如下调用

  treeviewitem tvitem

  getitem(handle tvitem)

  post event ue_statechanged(handle tvitem statepictureindex)

cha138/Article/program/PB/201311/24640

相关参考

知识大全 TreeView 拖动的下横线

TreeView拖动的下横线  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于treeview

知识大全 实现静态的TreeView控件导航

实现静态的TreeView控件导航  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET提

知识大全 C#动态绑定treeview控件

C#动态绑定treeview控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh

知识大全 Silverlight 中给TreeView添加复选框

Silverlight中给TreeView添加复选框  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ASP.NET中使用TreeView控件

ASP.NET中使用TreeView控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介  

知识大全 利用javascript实现TreeView中的checkbox全选

利用javascript实现TreeView中的checkbox全选  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 从DataGridView托放数据到TreeView控件

从DataGridView托放数据到TreeView控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 vb.net中TreeView控件的使用

vb.net中TreeView控件的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在中Tr

知识大全 VB中如何修改treeview的背景色

VB中如何修改treeview的背景色  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!改变TreeV

知识大全 ASP.NET中TreeView控件使用小结

ASP.NET中TreeView控件使用小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  浏览