Lista desplegable
Generalidades
Las listas desplegables son objetos que permiten al usuario seleccionar de una lista. Los elementos mostrados en la lista desplegable se gestionan mediante un array, una lista de selección o una acción estándar.
En macOS, las listas desplegables también se denominan a veces "menú emergente". Ambos nombres se refieren a los mismos objetos. Como muestra el siguiente ejemplo, el aspecto de estos objetos puede variar ligeramente según la plataforma:
Utilizar un array
Un array es una lista de valores en memoria a la que se hace referencia por el nombre del array. Una lista desplegable muestra un array como una lista de valores cuando se hace clic en ella.
Los objetos de lista desplegable se inicializan cargando una lista de valores en un array. Puede hacerlo de varias maneras:
-
Introduzca una lista de valores por defecto en las propiedades del objeto seleccionando
"\<Lista Estática>"
en el tema Fuente de Datos de la Lista de Propiedades. Los valores por defecto se cargan en un array automáticamente. Puede referirse al array utilizando el nombre de la variable asociada al objeto. -
Antes de mostrar el objeto, ejecute el código que asigna valores a los elementos del array. Por ejemplo:
ARRAY TEXT($aCities;6)
$aCities{1}:="Philadelphia"
$aCities{2}:="Pittsburg"
$aCities{3}:="Grand Blanc"
$aCities{4}:="Bad Axe"
$aCities{5}:="Frostbite Falls"
$aCities{6}:="Green Bay"
En este caso, el nombre de la variable asociada al objeto del formulario debe ser $aCities. Este código podría colocarse en el método formulario y ejecutarse cuando se ejecute el evento formulario On Load
.
- Antes de que se muestre el objeto, cargue los valores de una lista en el array utilizando el comando LIST TO ARRAY. Por ejemplo:
LIST TO ARRAY("Cities";$aCities)
En este caso también, el nombre de la variable asociada al objeto del formulario debe ser $aCities. Este código puede ejecutarse en lugar de las sentencias de asignación mostradas anteriormente.
Si necesita guardar la elección del usuario en un campo, deberá utilizar una sentencia de asignación que se ejecute después de aceptar el registro. El código podría ser así:
Case of
:(Form event=On Load)
LIST TO ARRAY("Cities";aCities)
If(Record number([People])<0) `nuevo registro
aCities:=3 `mostrar un valor por defecto
Else `registro existente, mostrar valor almacenado
aCities:=Find in array(aCities;City)
End if
:(Form event=On Clicked) `el usuario modifica la selección
City:=aCities{aCities} `el campo obtiene un nuevo valor
:(Form event=On Validate)
City:=aCities{aCities}
:(Form event=On Unload)
CLEAR VARIABLE(aCities)
End case
Debe seleccionar cada [event] que pruebe en las estructuras "For" de su código. Los arrays siempre contienen un número finito de elementos. La lista de elementos es dinámica y puede ser modificada por un método. Los elementos de un array pueden modificarse, ordenarse y añadirse.
Utilizar una lista de selección
Si desea utilizar una lista desplegable para gestionar los valores de un campo o variable lista, 4D le permite referenciar el campo o la variable directamente como fuente de datos del objeto. Esto facilita la gestión de los campos/variables listados.
Si utiliza una lista jerárquica, sólo se muestra el primer nivel y se puede seleccionar.
Por ejemplo, en el caso de un campo "Color" que sólo puede contener los valores "White", "Blue", "Green" or "Red", ahora es posible crear una lista que contenga estos valores y asociarla a un objeto emergente menú que haga referencia al campo "Color". 4D se encarga entonces de gestionar automáticamente la entrada y la visualización del valor actual en el formulario.
Para asociar un menú emergente/lista desplegable o un combo box con un campo o una variable, basta con introducir el nombre del campo o la variable directamente en el campo Variable o Expresión del objeto en la lista de propiedades.
Cuando se ejecuta el formulario, 4D gestiona automáticamente el menú emergente o el combo box durante la entrada o visualización: cuando un usuario elige un valor, éste se guarda en el campo; este valor del campo se muestra en el menú emergente cuando se visualiza el formulario:
No es posible combinar este principio con el uso de un array para inicializar el objeto. Si introduce un nombre de campo en el área Nombre de la variable, debe utilizar una lista de selección.
Guardar como
Cuando haya asociado un menú emergente/lista desplegable con una lista de selección y con un campo, puede utilizar la propiedad Guardar como valor/ Referencia. Esta opción permite optimizar el tamaño de los datos guardados.
Utilizar una acción estándar
Puede asignar una acción estándar a un menú emergente/lista desplegable (Acción tema de la Lista de Propiedades). Sólo las acciones que muestran una sublista de elementos (excepto la acción de Ir a la página) son soportadas por este tipo de objeto. Por ejemplo, si selecciona la acción estándar backgroundColor
, en tiempo de ejecución el objeto mostrará una lista automática de colores de fondo. Puede reemplazar esta lista automática asignando además una lista de selección en la que cada elemento tenga asignada una acción estándar personalizada.
Para más información, consulte la sección Acciones estándar.
Propiedades soportadas
Formato Alfa - Negrita - Inferior - [Estilo del botón](properties_TextAndPicture. md#button-style) - Lista de opciones - Clase - Formato de fecha - [Tipo de expresión](properties_Object. md#expression-type) - Focusable - Fuente - Color de la fuente - [Tamaño de la fuente](properties_Text. md#font-size) - Altura - Consejo de ayuda - Tamaño horizontal - [Italic](properties_Text. md#italic) - Izquierda - No renderizado - [Nombre del objeto](properties_Object. md#object-name) - Derecha - Acción estándar - Guardar como - [Formato de tiempo](properties_Display. md#time-format) - Superior - Type - Subrayado - [Variable o expresión](properties_Object. md#variable-or-expression) - Tamaño vertical - Visibilidad - Ancho