Compartir a través de


Capturar la entrada en un cuadro combinado en Visual FoxPro

En este artículo se describe cómo introducir datos que pueden no estar contenidos en la lista desplegable control ComboBox y, a continuación, cambiar un valor de campo en una tabla con el valor especificado en el cuadro combinado.

Versión original del producto: Visual FoxPro
Número de KB original: 140652

Resumen

Visual FoxPro permite usar cuadros combinados en formularios para seleccionar o introducir datos dentro del formulario. Los cuadros combinados permiten derivar datos de los orígenes siguientes:

  • Valor
  • Alias (Nombre ficticio)
  • Instrucciones SQL
  • Consultas
  • Matrices
  • Campos
  • Archivos
  • Estructuras
  • Elementos emergentes

En este artículo se describe cómo introducir información que puede no estar contenida en la lista desplegable control ComboBox y, a continuación, cambiar un valor de campo en una tabla con el valor especificado en el cuadro combinado.

Más información

Para introducir datos en un control ComboBox y, a continuación, almacenarlos en un campo de una tabla si el valor ha cambiado, siga estos pasos:

  1. Cree un nuevo formulario y coloque el código siguiente en su procedimiento de evento Load:

    PUBLIC ARRAY aTitle(1)
    SELECT DISTINCT(customer.contact) FROM customer ;
    INTO ARRAY aTitle
    
  2. Agregue la tabla de clientes del \Data directorio al entorno de datos del formulario. Puede encontrar el \Data directorio en una de las siguientes ubicaciones:

    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. Coloque un cuadro de texto en el formulario y establezca su ControlSource propiedad en:

    Customer.Contact
    
  4. Coloque un cuadro combinado en el formulario. Establezca su RowSource propiedad en aTitle y su RowSourceType propiedad en 5-Array.

  5. En el InteractiveChange procedimiento, escriba las siguientes líneas de código:

    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. En el LostFocus procedimiento, escriba las siguientes líneas de código:

    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. Agregue un botón de comando al formulario y escriba el código siguiente en su Click procedimiento de evento:

    SKIP
    ThisForm.Combo1.DisplayValue=Customer.Contact
    ThisForm.Refresh
    
  8. Agregue otro botón de comando al formulario y coloque el código siguiente en su Click procedimiento de evento:

    SKIP -1
    ThisForm.Combo1.DisplayValue=Customer.Contact
    ThisForm.Refresh
    
  9. Guarde y ejecute el formulario. Cambie el valor del cuadro combinado y recorra la tabla mediante los botones de control. Cierre el formulario y examine la tabla de Clientes. Examine el campo Contacto . Los cambios que se introduzcan en el cuadro combinado se reflejarán en el campo.