VFP中焦点行的动态显示
来源: 作者: 出处:综艺读书 2006-10-13
李明亮
在用VFP设计一个应用系统时,信息的浏览是其中一个相当重要的功能。人们一般用Grid对象来显示数据信息,但该对象在使用功能上却存在一些不足。
提出问题
|
|
|||
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”, “iif
(this.activerow=recno(), rgb(0,0,255),rgb(255,255,255))”,“column”)
else
select 学号from cenji where .not. deleted() into cursor temp_table
select temp_table
index on 学号 tag xh
set relation to 学号 into temp_table in cenji
sele cenji
this.setall(“dynamicbackcolor”,“iif(this.
activerow=recno(‘temp_table'), rgb(0,0,255),rgb(255,255,255))”,“column”)
endif
thisform.refresh
在上述代码中,当逻辑删除记录造成光标所在的行activerow()不等于数据的记录号recno()时,只需对数据建立一个关联子表,当记录指针在父表cenji中移动时,子表temp_table的记录指针移到学号相同的记录上。子表的记录号是不包括逻辑删除记录的,保证了光标所在行的子表记录号recno(‘temp_table')等于光标所在的行activerow(),从而使该行动态背景颜色能正确显示。本文为了说明方便, 在afterRowColChange事件过程中建立子表,实际上最好在Delete等命令之后建立。
另外,当activerow属性与recno()函数配合使用动态显示背景颜色时,一般会提示用户“请不要在所显示的记录中设定主索引”,否则不能正确动态显示。实际上,按照如上方法,同样可以解决这一问题。
设表cenji.dbf中,按成绩字段建立一个主索引,在Grid对象的afterRowColChange事件过程中写下如下代码:
LPARAMETERS nColIndex
select 学号 from cenji into cursor temp_table order by 成绩 desc
select temp_table
index on 学号 tag xh
set relation to 学号 into temp_table in cenji
this.setall(“dynamicbackcolor”,“iif
(this.activerow=recno(‘temp_table’), rgb(0,0,255),rgb(255,255,255))”,“column”)
thisform.refresh
同样,不一定要在Grid对象的afterRowColChange事件过程中建立关联子表temp_table。
本文代码在中文版Windows 98和Visual Foxpro 6.0中运行通过。进入讨论组讨论。
相关图文阅读
频道图文推荐
相关专题
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




