东方不败独宠雪千寻:VFP组合框动态数据绑定实例之查找定位控件设计

来源:百度文库 编辑:中财网 时间:2024/04/29 02:01:55

对于经常用VFP编程和操作数据表的用户来说,做一个对任意VFP支持的数据表都能进行浏览和编辑的表单是非常必要的,在这个表单里,首先要有一个用来显示数据表的表格Grid控件,其次要有许多的命令按钮、组合框、文本框等控件,来执行对数据表进行筛选、定位、统计、修改等各种日常的操作。经过长期摸索与实践,本人已经初步完成了这样一个表单,而且给日常管理工作带来了很大的便利。本文就其查找定位功能一项,写出来与同行们交流。
二、基本思路
有很多VFP应用系统的查找定位功能,大多都只局限于对具体某个数据表的某一个或某几个字段进行操作,不能满足实际工作的各种需要。如果要对任何一个数据表的任何一个字段进行查找定位,就需要有一个能动态绑定源数据的组合框来实现。这个组合框的数据源必须随光标在表格Grid1控件中的不同列的变化而动态绑定。方法是当鼠标点击表格中不同列时,表格控件必须返回当前列的字段名和当前数据表名称给两个公共变量,组合框在得到焦点时首先根据表格通过公共变量反馈的数据表名和字段名,用Select语句生成临时数据表,且该表名称按照上述的表名和字段名动态构造。该临时数据表只有一个字段,就是表格中对应的那个字段,但要去掉重复值。这一点在Select语句中用关键字Distinct实现。另外它需要进行排序以便用户快速查找,该临时表生成后与组合框动态绑定,当点击组合框时就会在下拉列表框中列出相应字段值供用户选择。若被操作的数据表中该字段值相等或相近的记录有多条时,还可以在表单中另设一个命令按钮来查找定位其下一条记录。查找定位后应能及时显示在表格中,这需要在点击组合框后把焦点交给表格控件,以便表格控件能及时将所定位的记录高亮度显示给用户。
三、界面的设计与实现
设表单Form1中有一个组合框Combo1和一个表格Grid1,现在要通过点击Combo1来定位Grid1中的记录(另设一个命令按钮作为Combo1的辅助来定位相同字段值的下一条记录),并且要求被定位的记录被选中为Grid1中的当前记录。具体代码如下:
属性设置:
Thisform.Combo1.RowSourceType = 6 (字段)
其余属性设为默认值。
方法设置:
Combo1.Init:
public fvalue          &&为字段值变量
fvalue=''
Combo1.refresh:
this.enabled=iif(empt(fieldname).or.type(fieldname)='M',.f.,.t.)  &&对备注型字段不可用
Combo1.gotfocus:
cursor_table = tabname+'_'+fieldname+'_cmb1'  
&&cursor_table 是为组合框提供数据源的临时表名称,tabname为当前数据表名称,fieldname为当前字段名,这一语句的功能是按当前操作的数据表名称和当前选中的数据列名称为组合框动态构造数据源表名称,tabname和fieldname两变量的值由Grid1提供。