VFP查询系统实现技巧六则
来源: 作者: 出处:综艺读书 2006-10-13
用VFP6.0编写完整的应用程序时查询系统往往是不可缺少的重要部分。而开发一个优秀的查询系统需要很多的应用技巧。由于工作原因,笔者经常开发查询系统模块,现将个人编程中总结的一些技巧介绍给大家,希望对读者的应用开发有所帮助。
|
|
|||
任务进度条的实现
在查询的过程中,如果数据较多,需要用户等待时,查询系统中应有进度条加以显示,才能使系统更加具有规范性。具体实现方法如下:
1.选择VFP的系统选单“工具”中“选项”条,弹出“选项”窗口,在窗口中点击“ActiveX控件”栏,添加任务进度栏控件Microsoft ProgressBar Control Version5.0(SP2)至ActiveX工具箱中。
2.选定表单控件工具栏中“ActiveX控件”,添加控件Microsoft ProgressBar Control Version6.0至查询的表单Form1中,并设置其属性Max值为1000。
3.将下列代码添加到数据查询程序代码之后:
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
通过这样的设置,在查询时如果时间较长,查询进度条会为用户显示查询任务的运行情况。
应用宏命令实现组合查询
在组合查询中,需要查询的组合项通常很多,如果每项都使用不同的变量,编程会非常烦琐。笔者使用宏命令轻松实现查询组合条件,具体实现的方法是在查询按钮里加入如下代码:
LOCAL cFilter,nCnt,cCondition
FOR nCnt = 1 to THISFORM.ControlCount
IF TYPE('THISFORM.Controls(nCnt).controlSource') <> "U" THEN
IF !EMPTY(THISFORM.Controls(nCnt).ControlSource) AND ;
TYPE('THISFORM.Controls(nCnt).value') <> "U" THEN cCondition=THIS.Parent.parseCondition(THISFORM.Controls(nCnt).value,THISFORM.Controls(nCnt).controlSource)
IF !EMPTY(cCondition) THEN
cFilter = cFilter + " AND " cCondition
ENDIF
ENDIF
ENDIF
ENDFOR
通过这样的设置,虽然有多个查询条件,但查询的组合条件为cFilter,以后的应用只要对cFilter进行处理即可。
删除查询表中的空记录
使用类查询(_dataquery.vcx)时,会在待查询表中的最后自动插入一条空记录,而在实际的GRID表格显示中,我们是不希望将空记录显示出来的。下面是解决此问题的详细步骤:
1.在主程序或Form对象的Load事件输入以下代码:
SET DELETE ON
2.在查询结束代码后输入以下代码:
Thisform.Refresh
&&&&刷新表单
go bottom
delete next 1
&&&&因为当前表被添加了一个空记录,在实际应用中应删除掉
Thisform.Grid1.Column1.Setfocus
go top
Thisform.grid1.refresh
&&&&删除一条记录后,应及时地刷新GRID表
实现中英文自动切换
在用VFP6.0开发查询系统时,文本框对象和组合框对象应用得较多,在文本框中进行中英文的输入时,来回切换非常烦琐,所以笔者借助自定义子类,来实现中英文输入的自动切换。具体实现的步骤如下:
1.点击VFP6系统选单栏“文件→新建→类”,启动“新类”对话框,填入类名为gsTextBox,并设置父类为TextBox,在“存储于”栏处输入存储的位置和名称,按“确定”键进入类设计器画面。
2.新增一个属性,来作为对象是否启动中文输入法的控制码。通过系统选单栏“类→新建属性...”,启动“新建属性”对话框,设置一些属性,其中可视性设为public。
3.最后设置GotFocus与LostFocus事件过程。Gotfocus Event事件过程如下:
If thischinese
&&&&中英文选择,thischinese为逻辑量
=imestatus(1)
else
=imestatus(0)
endif
Lostfocus Event事件过程如下:
=imestatus(0)
至此,类已经定义完成,以后只要在设计表单时,通过表单控件“工具栏→查看类→添加...”把自定义类加入,并且设置“中英文选择”属性,即可实现中英文输入的自动切换。
实现整条记录突出显示
在用VFP设计一个查询应用系统时,信息的浏览是相当重要的功能之一,通常采用的实现方法是用Grid对象来显示数据信息,但在使用过程中却存在一些不足,就是当使用者在记录之间移动时,只有获得焦点的那条记录的某一字段可以以不同于Grid背景的颜色显示,很不醒目。
笔者利用Grid对象,成功实现了当数据记录移动时,整条记录均用同一种颜色突出显示,即当数据记录移动时,用颜色动态变化显示相对光标所在的位置,设计步骤如下:
首先定义一个Grid对象,并设置好其属性,然后在其AfterRowColChange事件过程中添加如下代码:
LPARAMETERS nColIndex
this.setall("dynamicbackcolor","iif(this.activerow〈〉recn(),rgb(255,255,255),rgb(0,0,255))","column")
利用以上代码,我们就能达到当数据记录移动时,其相对的Row显示动态颜色变化。
在上面的设计中,我们首先使用了SetAll() 方法设定Grid中的Column层次的 DynamicBackColor(动态背景颜色属性),然后在第二个参数中使用了Grid 对象的ActiveRow反映相对的行数,若不等于记录编号时,则通过 RGB(255,255,255) 送出白色背景,若相对行等于记录编号时,则通过 RGB(0,0,255)送出绿色背景色,而该颜色也可自行设定。
用Grid模拟Browse窗口
可以将Grid结合在Form对象中,模拟成一个Browse命令窗口,可以自由调整Form大小,而Grid对象也会自动调整大小。实现方法如下:
1.首先设定一个Form对象,该对象必须保留其BorderStyle为“3-可调边框”,这样可自由调整大小的边线属性,同时设定Resize事件程序如下:
Thisform.Grid1.Width=this.width
Thisform.Grid1.Height=this. Height
2.设计一个Grid对象于Form对象中,并设定其属性如下:
Width=Thisform.Width
Height=Thisform.Height
RecordSource设为目前“数据环境”中所设定的工作区别名;
Top与Left均设为0,表示该对象左上端坐标为0,0。
这样,已经设定好的Grid对象和Browse窗口一样,当对Form对象进行大小调整时,对象的高度与宽度就可以随之调整。
相关图文阅读
频道图文推荐
相关专题
·Office技巧专区 (6077篇文章)
·系统优化大全 (13909篇文章)
·系统安全设置 (18705篇文章)
·系统安装手册 (16385篇文章)
·系统备份专题 (13518篇文章)
·SQL Server 索引和查询专题 (2635篇文章)
·网管实用技巧100例 (5846篇文章)
·系统维护手册 (13057篇文章)
·ADO.NET实用技巧 (5469篇文章)
·系统技巧 (542篇文章)
·系统优化大全 (13909篇文章)
·系统安全设置 (18705篇文章)
·系统安装手册 (16385篇文章)
·系统备份专题 (13518篇文章)
·SQL Server 索引和查询专题 (2635篇文章)
·网管实用技巧100例 (5846篇文章)
·系统维护手册 (13057篇文章)
·ADO.NET实用技巧 (5469篇文章)
·系统技巧 (542篇文章)
最新技术文档
·用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动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




