数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
TreeView控件与数据窗结合控件原理

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在某系统的实现中,遇到了物料清单的编辑及显示问题,要求能够按照树形结构显示某产品的详细构成情况。例如,产品分为几个大总成,各总成下有若干装置、部件,各部件下可能有小总成、部件、零件等等,这样就可能形成一棵很复杂的树结构。
  而且要求能够进行复杂的查找,过滤等操作,因此与数据窗的查找(find)及过滤(filter)、排序(sort)等结合起来是非常理想的控件构建方式。在PB中,通过树与数据窗一起运行,是可以满足这样要求的。甚至可以做成通用的控件用来满足所有的树结构类型的数据的编辑。

  以下讲述主要实现原理:

  1、数据窗中,包含用来处理成树节点treeviewItem的各个列,如 代码、名称、父代码、层次、排序、其他等等;
  2、创建数据窗时,在SQL语法中建立一个计算列(伪列):Item_Handle,用来存放该行数据对应的树句柄;
  3、从标准TreeView继承,建立UserObject,取名:PFC_Treeview,对该控件建立如下函数:
    ·uf_init_tree(as_data_store,as_id_col,as_name_col,as_parent_col,as_level_col,as_sort_string)  // datastore同步 
    ·uf_init_Tree(as_data_window,as_id_col,as_name_col,as_parent_col,as_level_col,as_sort_string) // 数据窗同步
    ·uf_find_id(string as_id_value) return long //按照ID进行查找(实际上在数据窗中查找并返回Item_Handle值);
    ·uf_find_name(string as_name_value) return long //按照 name_column 来查找;
    ·uf_get_all_handle(ref al_handles[]) return long//返回所有的句柄;
    ·uf_get_current_handle() return long //返回当前句柄;
    ·uf_get_current_item() return TreeViewItem //返回当前节点;
    ·uf_get_current_id() // 返回当前 节点的ID值
    ·uf_get_current_name() // 返回当前节点的 label 值
    ·uf_get_current_data() // 返回当前节点的 data 值,any类型,可以扩充为 structure以存放其它数据
    ·uf_get_child_handle(ref al_child_handle[]) //返回当前节点的所有子节点句柄
    ·uf_get_parent_handle(ref al_parent_handle[]) //返回当前节点的父节点句柄,一直到最顶层;
    ·……
    ·uf_update_item(al_handle) //更新节点;
    ·uf_insert_item(al_parent_handle,atvi_item) //增加节点

  4、在应用中,将这个控件直接放入窗口中,然后调用 uf_init_tree()函数来初始化;
  5、如果是常用的树,则将初始化函数在 PFC_Treeview的construct事件中写入,这样就可以直接用了。
  6、对数据窗的的修改,需要更新树的变化
  7、在树的 EndLabelEdit事件中,更新数窗信息;
  8、如果支持拖放,则dragdrop,dragenter,dragwithing,dragleave等事件都需要处理;
  9、……

  关于这个控件,可以写的函数非常多,甚至可以完成数据窗的所有功能,这样,对于经常使用TreeView的应用而言,就可以极大地简化代码复杂性,界面一致,高效。




相关文章

相关软件