Crear combo box

De WikiDgp21
Saltar a: navegación, buscar

Vamos a explicar como se define una combo box como esta:

Combo1.jpg

Comportamiento

Si introducimos algo en la caja de texto, por ejemplo 'P', al pulsar el botón se nos mostrará un listado de monedas cuya descripción empieza por 'P'.

Si no introducimos nada en la caja de texto en el listado aparecerán todas las monedas de la tabla de monedas.


Combo2.jpg

De la lista que aparece, pinchando con el ratón en la línea que queremos escoger efectuamos la selección y el valor escogido aparece en la caja de texto de la pantalla principal.

Definición del control

  • Tipo: H
  • Pos. Y2: Numero de imagen: 42
  • Etiqueta: _buscar
  • Código de programación: Dependiendo del resultado de la primera función, ejecutaremos la segunda o no. Si en la pantalla de la lista a escoger, no escogemos ninguna opción, por lo tanto salimos clickando en la “x”, no se ha de ejecutar la segunda función:
   //codi pantalla de selección
   oid numeric(10,0)@6;
   exef(1);
   if (oid > 0)
    exef(2);
  • Funciones:

1. g_list: Hace aparecer la pantalla con la lista a escoger 2. g_rellena: Coloca el dato escogido en el campo destino.

   *
     Datos 1a función, g_list.
   * Número de orden: 1
   * Nombre función: g_list
   * Tipo: B
   * Parámetros función: dgsel 01,033.
   * Aquí estamos indicando que queremos visualizar la pantalla 'dgsel 01' (atención, el nombre de la pantalla debe tener 10 dígitos) y que queremos que se ejecute el control '033' de esa pantalla. Estos datos son fijos. La pantalla 'dgsel 01' es la que se usa habitualmente para este menester siempre que los datos a mostrar no sean demasiado extensos.
   * Enlaces.
   * 006=006, 033=033.

Veamos:

006=006: Campo común también a todas las pantallas. En el se guarda el oid de la fila seleccionada.

   * 033=033: El campo 33 en la pantalla origen no existe pero lo usa internamente la aplicación y consecuentemente debe especificarse como enlace.
   * Sentencia SQL:
   * select di_desc,di_divisa from divisas where di_divisa like '#079%' order by di_divisa;
   * Con esta sentencia indicamos que columnas y que filas de la tabla queremos visualizar en el listado. Como se ve, utiliza el contenido de la caja de texto (campo 79) para confeccionar la select. Si no se introduce nada en la caja de texto se elimina la cláusula 'where' del select.
   * Descripción del listado:
   * X15X06.

Indicamos la composición de las columnas a visualizar:

   * 1a columna: Corresponde a di_desc, es alfanumérica y mostrará 15 dígitos
   * 2a columna: Corresponde a di_divisa, es alfanumérica y mostrará 6 dígitos.

Para indicar una columna numérica por ejemplo de 2 dígitos pondríamos: N02.


Datos 2a función, g_rellena.

   * Número de orden: 2
   * Nombre función: g_rellena
   * Tipo: B
   * Sentencia SQL:

select di_divisa from divisas where oid = #006

En el campo 6 tendremos guardado el oid correspondiente a la fila seleccionada por la función anterior. Mediante este select obtendremos el dato (di_divisa) que debemos guardar en la pantalla principal.

   * Pares de campos:

001079.

aquí indicamos donde colocar el resultado de la select anterior. En este caso como nos devuelve una sola columna, sólo debemos indicar un par de campos:

La columna 001 (di_divisa) debe colocarse en el campo 079 (caja de texto).