在 Visual FoxPro 中捕获组合框中的输入

本文介绍如何在 ComboBox 控件下拉列表中输入可能不包含的数据,然后将表中的字段值更改为在组合框中输入的值。

原始产品版本:   Visual FoxPro
原始 KB 数:   140652

摘要

通过 Visual FoxPro,您可以使用窗体中的组合框来选择或输入窗体中的数据。 组合框允许数据派生自以下源:

  • Alias
  • SQL 语句
  • Queries
  • Arrays
  • 字段
  • 文件
  • 结构
  • 弹出窗口

本文介绍如何在 ComboBox 控件下拉列表中输入可能不包含的信息,然后使用组合框中输入的值更改表中的字段值。

更多信息

若要将数据输入到 ComboBox 控件中,然后将其存储到表中的字段(如果值已更改),请按照下列步骤操作:

  1. 创建一个新窗体,并将以下代码放在其 Load 事件过程中:

    PUBLIC ARRAY aTitle(1)
    SELECT DISTINCT(customer.contact) FROM customer ;
    INTO ARRAY aTitle
    
  2. 将 "customer" 表从 \Data 目录添加到表单的数据环境中。 您可以 \Data 在以下位置之一找到该目录:

    Visual FoxPro 3.x: VFP\Samples\Mainsamp
    Visual FoxPro 5.x: VFP\Samples
    Visual FoxPro 6.0: \MSDN98\98VS\1033\Samples
    Visual FoxPro 7.0,8.0,9.0: \Samples\Data
    
  3. 将文本框放置在窗体上,并将其 ControlSource 属性设置为:

    Customer.Contact
    
  4. 在窗体上放置一个组合框。 将其 RowSource 属性设置为 aTitle ,并将其 RowSourceType 属性设置为 5 数组

  5. 在此 InteractiveChange 过程中,键入以下代码行:

    IF Customer.Contact != Thisform.combo1.DisplayValue
        REPLACE Customer.Contact WITH Thisform.combo1.DisplayValue
        Thisform.Text1.Refresh
        SELECT DISTINCT(customer.contact) FROM customer ;
        INTO ARRAY aTitle
    ENDIF
    
  6. 在此 LostFocus 过程中,键入以下代码行:

    IF Customer.Contact != Thisform.combo1.DisplayValue
        REPLACE Customer.Contact WITH Thisform.combo1.DisplayValue
        Thisform.Text1.Refresh
        SELECT DISTINCT(customer.contact) FROM customer ;
        INTO ARRAY aTitle
    ENDIF
    thisform.combo1.displayvalue=""
    
  7. 向窗体中添加一个命令按钮,并在其事件过程中键入以下代码 Click

    SKIP
    ThisForm.Combo1.DisplayValue=Customer.Contact
    ThisForm.Refresh
    
  8. 向窗体中添加另一个命令按钮,并将以下代码放在其 Click 事件过程中:

    SKIP -1
    ThisForm.Combo1.DisplayValue=Customer.Contact
    ThisForm.Refresh
    
  9. 保存并运行该窗体。 更改组合框中的值,并使用命令按钮跳过表。 关闭窗体,然后浏览 Customer 表。 查看 " 联系人 " 字段。 在组合框中输入的更改将反映在字段中。