Visual Foxpro开发技巧四则

Author: 顾伟义 Date: 1998年 第05期 12版

#1  1.组合框ComboBox的多栏使用
  熟悉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。