VFP焦点怎么解释?获取

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:12:43

在用VFP设计一个应用系统时,信息的浏览是其中一个相当重要的功能。人们一般用Grid对象来显示数据信息,但该对象在使用功能上却存在一些不足。
提出问题
当使用者在记录之间移动焦点时,只有获得焦点的记录的某一个字段以不同于Grid背景的颜色显示。为使整条记录均用同一种颜色突出显示(本文示例为蓝色背景),即当数据记录移动时,用颜色动态变化显示相对光标所在记录的位置,可以在Grid对象的afterRowColChange事件过程中加入如下内容:
this.setall(“dynamicbackcolor”,“iif(this.activerow=recno(),rgb(0,0,255),rgb(255,255,255))”,“column”)。
笔者在使用中发现:如果设置了Set delete on环境参数,则当逻辑删除记录后,动态背景的颜色显示就会出现混乱。
分析问题
这种情况一般有两种解决方法:
●执行pack命令,再重新创建和设置Grid的各项属性;
●先将没有删除标志的记录复制到一个临时表中,用zap命令删除源表中所有记录,再将没有删除标志的记录从临时表追加到源表中。
这两种方法实质上都是把已逻辑删除的记录从数据表中真正删除,缺点是两种方式都要求该表必须以独占方式打开。
如果表是以共享方式使用,那么又该如何处理呢?其实,动态背景颜色不能正确显示的原因是由于逻辑删除记录,该操作造成光标所在的行activerow()不等于数据的记录号recno(),从而导致了动态背景颜色的显示出现混乱。笔者通过两个表的关联成功地解决了这一难题。
解决问题
我们以一个实际的例子来说明如何解决这一问题。设有一个表cenji.dbf,表的字段分别为:学号、姓名、姓别、成绩。新建一个表单,并创建一个Grid对象,设置Grid对象的recordsource属性为cenji,在Grid对象的afterRowColChange事件过程中添加如下代码:
LPARAMETERS nColIndex
if this.activerow = recno()
this.setall(“dynamicbackcolor”, “