TreeView控件与数据窗结合控件原理
来源:互联网 发布:怪物猎人x数据库安卓 编辑:程序博客网 时间:2024/06/18 14:02
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
而且要求能够进行复杂的查找,过滤等操作,因此与数据窗的查找(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(stringas_id_value)returnlong//按照ID进行查找(实际上在数据窗中查找并返回Item_Handle值);
·uf_find_name(stringas_name_value)returnlong//按照name_column来查找;
·uf_get_all_handle(refal_handles[])returnlong//返回所有的句柄;
·uf_get_current_handle()returnlong//返回当前句柄;
·uf_get_current_item()returnTreeViewItem//返回当前节点;
·uf_get_current_id()//返回当前节点的ID值
·uf_get_current_name() //返回当前节点的label值
·uf_get_current_data()//返回当前节点的data值,any类型,可以扩充为structure以存放其它数据
·uf_get_child_handle(refal_child_handle[])//返回当前节点的所有子节点句柄
·uf_get_parent_handle(refal_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的应用而言,就可以极大地简化代码复杂性,界面一致,高效。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
在某系统的实现中,遇到了物料清单的编辑及显示问题,要求能够按照树形结构显示某产品的详细构成情况。例如,产品分为几个大总成,各总成下有若干装置、部件,各部件下可能有小总成、部件、零件等等,这样就可能形成一棵很复杂的树结构。而且要求能够进行复杂的查找,过滤等操作,因此与数据窗的查找(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(stringas_id_value)returnlong//按照ID进行查找(实际上在数据窗中查找并返回Item_Handle值);
·uf_find_name(stringas_name_value)returnlong//按照name_column来查找;
·uf_get_all_handle(refal_handles[])returnlong//返回所有的句柄;
·uf_get_current_handle()returnlong//返回当前句柄;
·uf_get_current_item()returnTreeViewItem//返回当前节点;
·uf_get_current_id()//返回当前节点的ID值
·uf_get_current_name() //返回当前节点的label值
·uf_get_current_data()//返回当前节点的data值,any类型,可以扩充为structure以存放其它数据
·uf_get_child_handle(refal_child_handle[])//返回当前节点的所有子节点句柄
·uf_get_parent_handle(refal_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的应用而言,就可以极大地简化代码复杂性,界面一致,高效。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- TreeView控件与数据窗结合控件原理
- TreeView控件与数据窗结合控件原理
- TreeView树形控件与数据库结合编程!
- TreeVIew控件绑定数据
- TreeVIew控件绑定数据
- TreeView 控件与Vs2005
- TreeView控件结合js树形选择
- SurfaceView与控件结合
- TreeView控件
- TreeView 控件
- TreeView控件
- TreeView控件
- TreeView控件
- TreeView控件
- TreeView 控件
- TreeView控件
- TreeView控件
- TreeView控件
- 动态数据窗创建原理及实现
- 深入解析钩子和动态链接库(下)
- 「小知识」关于补丁使得IIS启动不了
- 局域网维护和优化技巧
- 孙振耀撰文谈退休并畅谈人生
- TreeView控件与数据窗结合控件原理
- 使用SkinMagic Toolkit美化界面
- 开始
- 白话范式
- 了解Cookie与浏览器的关系
- ADO 数据库连接
- 使Datawindow每页打印固定行
- 动态子类化CComboBox以得到子控件EDIT及LISTBOX
- 网络管理的几个误区