Visual Foxpro开发技巧四则
熟悉VFP的用户都知道ComboBox对象若显示多栏式时,正常选择结果会以第一栏的内容显示在选择项目上。但实际系统设计中要显示多个栏位如图书编号、名称、作者和出版商,而选定的结果及要传递的值则可能是其中的任意一项,此时实现方法如下:
(1)设定ComboBox对象的属性ColumnCount为4;属性ColumnCountWidth为12,40,12,40;属性RowSourceType为Field;属性RowSource为book.code,title,writer,publisher。
(2)设定ComboBox对象的属性BoundColumn为2,表示图书名称为要显示的内容。
(3)设定ComboBox对象的事件InteractiveChange Event的内容如下:
This.DisplayValue=This.Value
如欲将显示的内容贮存于其他变量,可添加如下内容:
Public Unknow_str
Unknow_str=This.value
#1 2.PageFrame的刷新记录内容
在设计对数据库进行查询修改的操作界面时,将其设为PageFrame方式,在ToolsBar条的记录移动按钮触发时,除当前活动页内容更新外,其他页内容并未刷新,极易产生错误操作。解决问题方法如下:
在ToolsBar中,把涉及到移动记录的Command按钮对象的Click事件作如下添加:
…
this.parent.parent.activepage=2
this.parent.parent.page2.refresh()
this.parent.parent.activepage=3
this.parent.parent.page2.refresh()
…
this.parent.parent.activepage=n
this.parent.parent.page2.refresh()
n——为PageFrame的页数。
#1 3.任务进度栏的实现
(1)选择系统菜单“工具”中“选项”条,单击“控件”栏,添加任务进度栏控件Microsoft ProgressBar Control,Version5.0至ActiveX工具箱中。
(2)创建表单Form1及Command对象Receive;选定表单控件工具栏中“查看类”,添加控件Microsoft ProgressBar Control,Version5.0至表单Form1中,设置其属性Max值为1000。
(3)设置表单Form1中命令按钮Receive事件,Click内容如下:
for i=1 to 1000
for j=1 to 2000
j=j+1
endfor
thisform.olecontrol1.value=i
i=i+1
endfor
=messagebox('数据传送与展开完毕,OK!',0+64,'信息窗口')
thisform.release
clear events
#1 4.Grid模拟Browse窗口
(1)创建表单Form1及Grid1对象;设定Form1属性BorderStyle为3,可自由调整大小;在事件Resize Event中输入如下内容:
ThisForm.Grid1.Width=This.Width
ThisForm.Grid1.Height=This.Height
(2)设定Grid1对象属性RecordSource为当前Form1所设定的工作区,属性Top与Left值均为0;属性Width=Thisform.Width;属性Height=Thisform.Height。