vfp实例教程   vfp基础教程   vfp初级教程   vfp中级教程   vfp高级教程   vfp网上文摘   vfp等级考试   vfp源码下载
您的位置:首页 >> vfp教程 >> vfp中级教程


第三课 用新的控件改进人事管理(二)

这一课讲用组合框选择输入部门和职务。之所以要用选择输入,是因为对于同一值不同人在不同时候输入是不一样的,比如“人事部门”,有人可能会输入成“人事部”,再加上无意识的输入错误,使得一个部门会有好几种说法,这将给查询、统计等带来很大问题,因此我们对于一个其内容只有有限个选择的字段的输入,最好采用选择输入。

从我们前面所讲过的控件中可以看出,复选框、选项按钮组、列表框、组合框都可以用作选择输入,那么时候该用哪一个控件呢?一般原则是:

1、对于具有“是”、“否”两种选择的,用复选框;

2、选项是固定的,并且选项不太多,可以用选项按钮组;

3、对于选项是可变的,并且选项不是非常多,可用列表框;

4、对于选项是可变的,并且选项非常多,可用组合框,因为选项非常多的情况下,用列表框找起来是很麻烦的,而组合框可以直接输入,只是在必要的时候才查一下。另外如果不希望该输入控件占太多地方,也可用组合框,因为它平时只占一行,拉下时才显示框,而列表框始终要占一块位置,当然您高兴也可以让列表框只占一行,但那样操作起来一定别扭。

要实现选择输入,就要将可选择的项目事先准备好,对于选项来说有两种情况,一种是固定的、一种是可变的。比如性别就是固定的,而部门就可能是不固定的,因为一个单位随时可以增减部门。

固定的选项可以在编程时编好,而不固定的一般就要有个数据表来存放选项,而且这个表可由使用的人任意增删和修改,下面我们就来讲讲怎样实现这种功能。

  1. 在人事档案数据库中建立一个数据表,就一个字段,字段名为“部门”;
  2. 在菜单中加一项“维护”,下面有一个子菜单项“部门字典”使用的命令是:
    do form bmzd name bmzd
  3. 建立一个表单,界面如图1;
  4. 在“新增”按钮的click事件中写入如下程序:
    if this.caption='新增' &&假如本按钮的标题为“新增”,表示第一次新增
      this.caption='继续新增' &&将本按钮标题设为“继续新增”
    endif &&结束假设

    select bmzd &&选择部门表
    append blank &&加一空记录

    thisform.grid1.readonly=.f. &&将表格设为非只读,即可以修改

    thisform.grid1.refresh &&表格刷新
    thisform.grid1.setfocus &&将焦点放到表格上以利于输入
  5. 在“修改”按钮的click事件中写入如下程序:
    if this.caption='修改' &&如果本控件的标题是“修改”
      this.caption="结束修改" &&将本控件的标题设为“结束修改”
      thisform.grid1.readonly=.f. &&将表格设为非只读,即可以修改
    else &&否则
      this.caption="修改" &&将本控件的标题设为“修改”
      thisform.grid1.readonly=.t. &&将表格设为非只读,即可以修改
    endif

    thisform.grid1.refresh &&表格刷新
    thisform.grid1.setfocus &&将焦点放在表格上
  6. 在“删除”按钮的click事件中写入如下程序:
    select bmzd &&选择部门字典
    *虽说目前肯定是bmzd表,不用选也可以,但这是为了防止以后程序做了某种改动,
    *造成当前表不是bmzd而使程序出错,这样就万无一失了。
    delete &&删除当前记录

    thisform.grid1.refresh &&表格刷新
    thisform.grid1.setfocus &&将焦点放在表格上
  7. 在“恢复”按钮的click事件中写入如下程序:
    select bmzd &&选择部门字典
    *虽说目前肯定是bmzd表,不用选也可以,但这是为了防止以后程序做了某种改动,
    *造成当前表不是bmzd而使程序出错,这样就万无一失了。
    recall &&恢复当前记录

    thisform.grid1.refresh &&表格刷新
    thisform.grid1.setfocus &&将焦点放在表格上
  8. 在“退出”按钮的click事件中写入如下程序:
    select bmzd &&选择部门表
    locate for delete() &&查找是否有做了删除标记的记录
    if found() &&假如找到
      pack &&将做删除标记的记录彻底删除
    endif &&结束假设

    thisform.release &&关闭本表单
  9. 在表格下的column1下的text1控件的lostfocus事件中写入如下程序:
    *当处于新增状态时,即command1的标题为“继续新增”,
    *一旦光标离开本格,表示新增结束,就将表格设为只读,
    *同时将标题设回“新增”
    if thisform.command1.caption='继续新增'
      thisform.grid1.readonly=.t.
      thisform.command1.caption='新增'
    endif
  10. 存盘退出

这样用于输入和维护部门选项的子功能就做好了。

下面在编辑人员的表单中设置一组合框用于输入部门:

  1. 将原来用于输入部门的文本框删除;
  2. 换上一组合框,如图2;
  3. 将组合框的controlsource设为“rsda.部门”;
  4. 将rowsourcetype设为“6-字段”;
  5. 将rowsource设为“bmzd.部门”;
  6. 重新设置所有控件的tabindex,设置方法在第七课的第九条“设置控件的tabindex位置”中有讲解。
  7. 将菜单的初始化代码改为如下:
    set talk off &&关闭命令响应
    set safety off &&当覆盖磁盘上的文件时不提示,当程序编好后,不会错误覆盖文件
    set date ansi &&设置日期为“年.月.日”方式
    set century on &&设置年为4位数表示
    set default to d:\soft\jfzcc\mcc\mcc2\rsgl2 &&设置软件所在目录,应根据您的目录做适当修改
    use rsda &&打开人事档案数据表
    select 0 &&选一空工作区(新增语句)
    use bmzd &&打开部门表(新增语句)

    dkda=.f. &&设置一变量用于检测档案是否打开,真为打开,假为关闭

至此用选择输入部门的功能就编好了,用同样方法,我们可以编出用选择输入职务的功能,这做为本课的练习,大家自己做一做。

目录 下一课 上一课

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号