Database 版 (精华区)

发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标  题: VFP3.0中表格的应用
发信站: 哈工大紫丁香 (2000年12月30日19:42:22 星期六), 转信

 VFP3.0中表格的应用 
  表格是Visual FoxPro 3.0(VFP)提供的一个非常强大的控件,灵活地运它可以
实现许多实用的功能,下面是笔者在编程时使用的一些技巧。

  一、突出显示满足条件的记录
  在对记录进行浏览或维护时,经常需要将某些记录或字段突出显示,例如:工
资金额大于500元的字段。在VFP中,使用表格的INIT事件就能很容易地实现这些要
求,具体步骤如下:(注:本文的所有例程均要求临时表的buffermodeoverride属
性为5(“开放式表缓冲”))
  thisformgridlinit事件
  THISColumn4DynamicForeColor=; &&以Column4为例
  ″IIF(金额>=500,RGB(255,0,128),RGB(0,0,0))″

  仅通过上面的一行语句,就可使得在浏览、维护记录时,“工资金额”大于
500的项以红色突出显示,而且在修改时也能即时改变颜色。

  我们还可以在程序运行时改变条件值,提高程序应用的灵活性,使得程序更完
善实用,例如:使“工资金额”大于600的项显示红色等等。要达到这个目的,就
要用到表格的refresh方法,它使表格按新值进行刷新。

  新建一属性VALUE_1,用于接收和传递条件值,其初值为500,同时在表格的
init事件中将500改为thisformvalue_1,再设置一组合框combo1,其
rowsourcetype=1,rowsource=100,200,300……并在combo1click事件中编写如
下代码:

  for i=1 to thisformcombo1listcount
  if thisformcombo1selected(i)
  thisformvalue_1=thisformcombo1list(i)
  thisformgridlrefresh
  endif
  endfor
  这样,使用起来就灵活多了。

  二、突出显示被修改记录
  在VFP中设计记录维护模块时,一般是通过设置“开放式表缓冲”使记录可以
先修改再根据情况决定是否保存,但是在实际运用中,面对着一大堆数字,往往很
难分清哪些已被修改了,哪些还未修改,从而直接影响到工作效率。为此,我们可
以利用表格的afterrowcolchange事件配合“dynamicbackcolor”属性以及函数
getfldstate()等来解决这个问题,当某个记录被修改而且还未保存时,就改变它
的显示颜色以示区别,核对时就很方便了。
  gridlafterrowcol事件:

  thissetall(″dynamicbackcolor″,″iif(′2′$getfldstate(-1),
RGB(255,0,128),RGB(0,0,0))″,″column″)

  该事件中getfldstate()函数起着主要作用,它用于检测记录是否被修改,若
被修改则按字段顺序返回字符2,否则返回1。例如有五个字段,则有可能返回
11121(只有第四个字段被修改),为了简化程序,使用了“$”运算符,只判断在
返回的字符串中是否有“2”,若有则表示该行的某个字段被修改了,该行就显示
为红色(RGB(255,0,128))以示区别。

  该程序在6X86/166、中文Windows95、Visual FoxPro 3.0中文专业版中调试通
过。


 
转载自编程资源大全(文/何俊峰) 
 
返回首页
 

 
 

--

       大海无边天做岸
               山登绝顶我为风

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.917毫秒