VFP查询系统实现技巧六则

用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对象进行大小调整时,对象的高度与宽度就可以随之调整。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
系统采用VFP 6.0编写,界面大方,操作简单。主要用于学生信息的管理。 本系统采用VFP 6.0编写,界面大方,操作简单。主要用于学生信息的管理。 1. 欢迎界面 双击程序图标启动程序后,欢迎界面显示约3秒钟,自动弹出登录对话框。 2. 登录界面 必须输入正确的用户名和密码才能进行主界面,进行各种操作,默认的用户名和密码均为“admin”。 3. 主界面 进入主界面后,请先在左侧进行学院、系和班级的选择,当单击班级列表框,右侧的表格将同步显示对应班级的学生简明信息。 主界面上方的菜单栏和工具栏可以进行各种设置和操作,如学院设置、系设置等等。 4. 学院设置 程序提供添加学院,修改学院名称,删除学院三类操作,其中删除学院操作,只会删除学院本身,其下所属的系,班级及学生不会被删除,只是不能被显示,可以重新添加相同ID号的学院找回丢失的系、班级和学生。 5. 系设置 程序提供添加系,修改系名称,删除系三类操作,其中删除系操作,只会删除系本身,其下所属的班级和学生不会被删除,但是不能被显示,可以重新添加相同ID号的系找回丢失的班级和学生。 6. 班级设置 程序提供添加班级,修改班级名称,删除班级三类操作,其中删除班级操作,除删除班级本身外,程序会级联删除其下所属的班级和学生,一旦删除班级,其下的学生将不能被找回,删除前请谨慎操作。 7. 学生信息 进行模块后,请先输入学号,并单击定位,程序会搜索相匹配的启示,并在界面上显示详细的学生信息。如果需要修改,在修改后单击“修改”按钮保存。在单击“添加”后,程序会自动清除所有文本框的内容,以方便用户添加新的学生信息,在添加完成后,请单击“确认添加”按钮。 8. 查询功能 程序提供按姓名查询和按学号查询两种方式,输入姓名或学号后单击查询按钮即可。 首次启动程序,需要进行“学院设置”,添加一个学院,接着在其学院下添加一个系,在系下添加一个班级。添加学生可以在“学生信息”模块中进行。其中,由于本系统照片使用相对路径显示,学生照片必须先放在程序目录的Photo文件夹中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

exp_moon

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值