网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 数据库类-> Foxpro-> 为FoxPro中的弹出式菜单增加自学习功能

为FoxPro中的弹出式菜单增加自学习功能
作者:佚名 来源:InterNet 加入时间:2005-1-31
相关文章
  • Visual FoxPro 9.0更强大了
  • 用FoxWeb在网上快速发布你的FOXPRO数据库
  • 为Visual FoxPro应用程序增加文件压缩功能
  • 用Visual FoxPro 5.0 设计数据文件结构浏览器
  • 利用Foxpro在网络环境下开发数据库管理软件经验点滴
  • 用Foxpro制作Windows输入法码表
  • Visual Foxpro生成任意打印字段报表的实现
  • 用FoxPro生成HTML文件
  • 优化 FoxPro 在网络上的性能
  • 如何修复被破坏的Foxpro数据库
  • 相关书籍:
  • Visual FoxPro 6.0 中文版程序员指南
  • Visual Foxpro 6.0初级教程
  • VisualFoxpro 6.0中文版程序员指南
  • 开发过应用系统的人都知道,使用FoxPro for Win-dows在用屏幕生成器进行数据窗口设 计的过程中,经常要使用弹出式菜单(POPUP)来设计进行数据输入的数据入口。弹出式菜单平 常在屏幕上只会显示一个选项的内容,当您用鼠标选择它或按下空白键、ENTER键时,它就在 屏幕上出现一个窗口和一些供用户选择的选项。使用弹出式菜单有两个方面的优点:一个优 点是用户可以不在该数据入口中输入数据,而只需在该弹出项提供的有效选项中选择一项即可;使用弹出式菜单的另一个优点是它能保证数据输入的有效性,由于用户只限于从菜单弹出 的选项中选择数据,所以不会产生输入错误。但是,我们在开发软件的过程中发现弹出式菜单 存在一个缺点:就是当弹出式菜单所弹出的选项不包括用户所要输入的数据时,则系统无法让 用户输入正确的数据。本文所叙述的方法(以FoxPro 2.5 for Windows为例),就是为了改进 弹出式菜单的
    这一缺点,为弹出式菜单增加让用户输入数据的功能,并能够将用户输入的数据自动添加到弹出式菜单的选项中(即我们所说的自学习功能),以便用户以后输入数据时选择 使用。

    实现效果

    我们可以在数据窗口中将一个数据入口定义为弹出式菜单(POPUP),并在该弹出式菜单的 相同位置上定义一个输入字段(INPUT FIELD),该字段与弹出式菜单大小相同,其初始状态为 Initially Disable Field,被弹出式菜单完全覆盖。当第一次使用该弹出式菜单时,其弹出 的选项中只出现"其它"一项。如果用户输入数据时发现菜单弹出的选项中不包括所要输入的 数据,则可以选"其它"项。这时数据窗口中在弹出式菜单的位置上将出现一个输入字段,并且该输入字段可以把弹出式菜单完全覆盖,用户就可以在这个输入字段上输入新的数据,输入完 毕后该输入字段将又被弹出式菜单覆盖,屏幕上弹出式菜单显示为刚输入的内容。用户每次 在这个输入字段中输入的新数据(必须是原弹出式菜单的选项中没有的)都将作为一个新的选 项加入到弹出式菜单的选项中,而选项中的"其它"项将始终是选项的最后一项。

    实现方法

    我们假设是为数据库ab.dbf定义一个数据窗口ab.scx,数据库ab.dbf中有一个字符型字 段aa,数据窗口ab.scx中将与aa字段相对应的数据入口变量m.aa定义为弹出式菜单(POPUP), 其Array Popup的名为aalist。另为该弹出式菜单定义一个相对应的输入字段(INPUT FIELD ),其字段名为m.newaa。

    (一)定义数据窗口ab.scx,选择Screen/Layout后进入Screen Code,在
    Screen Setup Co de中输入以下程序段:

    && 该程序段的功能是初始化和生成数组aalist
    PRIVATE m.popupedit, m.savrec, m.aacnt
    m.popupedit = .F.
    m.aacnt = 0
    DIMENSION aalist[1]
    m.savrec = RECNO()
    GO TOP
    SCAN FOR NOT DELETED()
    m.string = ALLTRIM(aa)&& 取字段内容
    IF NOT EMPTY(m.string) AND ASCAN(aalist
    m.string) = 0
    && 确认数组aalist中是否不包括该字段内容
    m.aacnt = m.aacnt + 1
    IF m.aacnt > ALEN(aalist)
    DIMENSION aalist[m.aacnt]
    ENDIF
    aalist[m.aacnt] = m.string && 把该字段内容加入
    到数组aalist中
    ENDIF
    ENDSCAN
    DIMENSION aalist[m.aacnt]
    = ASORT(aalist) && 为数组aalist排序
    m.aacnt = m.aacnt + 1
    DIMENSION aalist[m.aacnt]
    aalist [m.aacnt] = "其它"&& 把"其它"项加入到数组aalist的最后一项
    GOTO RECORD m.savrec
    SCATTER MEMVAR MEMO BLANK
    (二)在数据窗口ab.scx中定义一个弹出式菜单,进入Popup对话框,把该对话框
    的Variab le栏定义为m.aa,Option栏中选Array Popup,并在该栏输入数组名
    aalist。Clause栏中选Va lid项,输入以下程序段:

    && 该程序段的功能是当在弹出式菜单中选择"其它"时,激活输入字段m.newaa
    IF m.aa = "其它"
    m.popupedit = .T.
    SHOW GET m.newaa ENABLE
    _CUROBJ = OBJNUM(m.newaa)
    ENDIF

    (三)在数据窗口ab.scx中与弹出式菜单相同的位置上定义一个输入字段(INPUT FIELD) ,并调整该字段的大小使其可以把弹出式菜单完全覆盖。进入Field对话框后,在Field栏选I nput Field (Get)项,Options栏选In-itially Disable Field和Select Field on Entry两 项,Input栏输入m.newaa。Clause栏中选Valid项,然后输入以下程序段:

    IF EMPTY(m.newaa) OR ASCAN(aalist, m.newaa)<>0
    RETURN .T.
    ENDIF &&m.newaa为空或已存在于aalist中,则返回
    = AINS(aalist,m.aacnt)
    aalist[m.aacnt] = ALLTRIM(m.newaa)&&在aalist中插入新元素,其内容为m.newaa
    = ASORT(aalist)&& 为数组aalist排序
    m.aacnt = m.aacnt+1
    DIMENSION aalist[m.aacnt]
    aalist[m.aacnt] = "其它"&& "其它" 项追加到数组aalist的最后
    REPLACE aa WITH ALLTRIM(m.newaa) && 修改数据库中的字段
    m.newaa = ""
    m.popupedit = .F.
    SHOW GET m.newaa DISABLE
    SHOW GET m.aa

    (四)在数据窗口ab.scx中,选择Screen/Object Order进入Object Order屏幕。在这个屏 幕中调整弹出式菜单m.aa与输入字段m.newaa的排列顺序,使得m.aa排列在m.newaa的前面,屏 幕显示时m.aa就可以将m.newaa覆盖。这样,在输入过程中先输入m.aa,当用户在m.aa中选择 "其它"项时,输入字段m.newaa才显示出来让用户输入新的数据。

    (五)在定义输入字段m.newaa的过程中,应在其Clause栏Valid项的程序段中,适当加入一 些有关数据有效性校验的命令,以保证输入数据正确、有效。

    [文章录入员:nancy]

    相关文章
  • Visual FoxPro 9.0更强大了
  • 用FoxWeb在网上快速发布你的FOXPRO数据库
  • 为Visual FoxPro应用程序增加文件压缩功能
  • 用Visual FoxPro 5.0 设计数据文件结构浏览器
  • 利用Foxpro在网络环境下开发数据库管理软件经验点滴
  • 用Foxpro制作Windows输入法码表
  • Visual Foxpro生成任意打印字段报表的实现
  • 用FoxPro生成HTML文件
  • 优化 FoxPro 在网络上的性能
  • 如何修复被破坏的Foxpro数据库
  • 相关书籍:
  • Visual FoxPro 6.0 中文版程序员指南
  • Visual Foxpro 6.0初级教程
  • VisualFoxpro 6.0中文版程序员指南
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Foxpro
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    电脑教程阅读排行
    ·Visual FoxPro 9....
    ·VFP与Excel交互编程
    ·Visual Foxpro生成任...
    ·VFP访问外部数据源的几种方法
    ·为Visual FoxPro应用...
    ·如何用VFP的dbf进行SQL ...
    ·如何修复被破坏的Foxpro数据...
    ·用VFP6.0编写图片浏览器
    ·在VFP报表中实现每页打印指定记...
    ·利用Foxpro在网络环境下开发...