|
TreeView控件与数据窗结合控件原理
来源:不详 作者 佚名 点击数: 录入时间:07-12-19 21:20:20
在某系统的实现中,遇到了物料清单的编辑及显示问题,要求能够按照树形结构显示某产品的详细构成情况。例如,产品分为几个大总成,各总成下有若干装置、部件,各部件下可能有小总成、部件、零件等等,这样就可能形成一棵很复杂的树结构。 而且要求能够进行复杂的查找,过滤等操作,因此与数据窗的查找(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[]) //返回当前节点的父节点句柄,一直到[1] [2] 下一页 更多精彩:学习网->http://www.haohao888.com.cn 网络编程->http://www.51wlpc.com 电脑设备->http://www.xpmaster.cn
|