4D v16Arrays, pop-ups, list boxes |
||||||||||||||||||||||||||||||||||||
|
4D v16
Arrays, pop-ups, list boxes
Arrays, pop-ups, list boxes
Además de las manipulaciones explicadas en el vídeo, también debe tener en cuenta que: Los arrays son una de las características indispensables en 4D. Prácticos, ilimitados, dinámicos, de una o dos dimensiones, son un espacio en memoria que se puede mostrar en los formularios por intermedio de objetos (pop-ups, combo boxes, list boxes, áreas de desplazamiento, etc.) Ya hemos tratado el concepto y el uso de variables con un solo valor. Un array es una variable con varios valores donde se puede leer o escribir cada uno de sus elementos. Definimos un array por el número de líneas que contiene y su tipo. Este gráfico muestra las diferentes etapas de una variable y el ciclo de la vida de un array:
Como puede ver, hay un número de similaridades entre las dos. El nombre del array se utiliza a veces con llaves {}, a veces solo. En este caso, se trata de una variable (entero largo) creada automáticamente por 4D. Esta variable, asociada al array, sirve como un índice (número de línea) de array. Es a través de esta variable que podemos saber que línea fue seleccionada por el usuario o forzar las selección de una línea específica en el menú pop-up. Esta es razón por la que verá a menudo esta sintaxis concisa escrita en la base de datos: [INTERVENTIONS]Object:=ObjectsArr{ObjectsArr} que podemos descifrar de la siguiente manera: "Object := contenido del array {en la línea seleccionada}" [INTERVENTIONS]Object:=Self->{Self->} Independientemente de la sintaxis utilizada, el funcionamiento es el mismo. En 4D, una pestaña es un objeto único, con varios títulos (valores). Este es un ejemplo de un objeto de interfaz que puede representar un array. Por lo general, ponemos las pestañas en la página 0 del formulario (ver la sección cubre este punto). Notará que los arrays se vuelven muy útiles rápidamente, de hecho, pronto se convierten en una necesidad. Un array sólo contiene elementos del mismo tipo. No puede tener un array con un elemento Alfa, un elemento Fecha y un tercer elemento Hora.En este caso, puede utilizar un array de punteros que apunten a variables de diferentes tipos. Como se mencionó en la lección sobre los punteros, se pueden combinar punteros y arrays para obtener "arrays de punteros". También puede considerar que un list box es una serie de arrays conectados (de la misma dimensión X). Es un objeto que agrupa y sincroniza uno o más arrays. En un list box, puede configurar:
En total, si el list box tiene X columnas, usted tiene 2X+1 objetos (X columnas, X encabezados + 1 list box). Los list boxes permiten:
Tenga en cuenta que el list box sincroniza sus columnas, toma el menor número de líneass de los arrays que lo componen. Este punto es importante de recordar, ya que podría tener arrays que están llenos de datos y aún así terminar con un list box vacío si uno de sus arrays está vacío. En este vídeo, vamos a aprender a crear y programar arrays así como también los objetos que podemos utilizar para que representarlos en las formularios. Al igual que una variable simple, un array debe:
Para ayudarnos a entender esto, vamos a crear un primer array en el formulario DETAIL de la tabla INTERVENTIONS. Este array concierne a los objetos.
Para simplificar las cosas, vamos a poner toda la programación en el objeto. Esto también nos permitirá revisar el concepto de evento.
$evt:=Form event El método objeto se compone de un cierto número de elementos:
Vamos a rastrear el funcionamiento de este método mediante la realización de una prueba inicial. Vemos que cuando hacemos doble clic en una intervention, vamos a On load. Vamos poder mostrar el array que contiene 5 elementos y a estos 5 elementos se les asignan valores poco a poco. Cuando elegimos un valor en el menú, vemos aquí el número de línea indicado en una variable, que es una variable que tiene el mismo nombre que el array, sino que es una variable de tipo entero largo. Y aquí vemos los 5 elementos del array, los elementos de 1 a 5 y luego el elemento cero, al cual volveremos más adelante. Cuando se ejecuta este método::
Podemos sustituir estas 3 líneas por una sola como sigue: [Interventions]Object:=PopObjects{PopObjects} ¿Por qué? Por que este valor es la variable entero largo que contenía 3 antes, por lo que indica el número de línea del array en cuestión (que tiene el mismo nombre). [Interventions]Object:=Self->{Self->} que utiliza un puntero al objeto. Dado que la programación se lleva a cabo en el objeto en sí mismo, Self se refiere al objeto y cuando escribimos Self->{Self->}, indicamos el array {en la línea elegida en el array} y transferimos el contenido directamente en el objeto. Vamos a hacerle seguimiento para comprobar que se obtiene el mismo resultado.
Así que esta división nos ayuda a entender en detalle. Ahora vamos a crear un nuevo array donde podemos introducir una fecha con más o menos 10 días.
Esta es un array fecha de 21 elementos: hoy + 10 días - 10 días y vamos a escribir el código más conciso de esta manera. Ahora, ¿Cómo llenar estos elementos? Vamos a hacer un bucle en el que asignamos un valor al array de la siguiente manera: (Current date + $i-11). Por supuesto, el array tendrá el nombre correcto y ahora lo podemos probar: Ahora que ya sabe cómo programar arrays, puede representarlos en diferentes objetos 4D, tales como list boxes. Un list box es un objeto compuesto por una o más columnas con un encabezado y una columna que es la que nos interesa, donde sólo tendremos que escribir el nombre del array que hemos administrado en memoria. Si volvemos ahora a una intervención, el list box contiene los diferentes valores del array y vemos la sincronización directa entre la elección en el list box y la correspondiente en el array aquí. Vamos a programar el list box de la misma manera para que cuando hagamos clic en él o cuando se haga una nueva selección en el mismo list box, el valor del objeto se modifique automáticamente. En el list box seleccionamos los eventos On Clicked y On Selection Change. Sólo tenemos que copiar la siguiente línea en el método objeto del list box: [Interventions]Object:=PopObjects{PopObjects} Durante el uso, cuando se selecciona un valor en el list box con el ratón o con las flechas del teclado, los valores se transfieren de automáticamente. Por supuesto, también es posible utilizar arrastrar y soltar, siempre y cuando las áreas se definan como arrastrables y soltables.
|
PROPIEDADES
Producto: 4D
HISTORIA
ARTICLE USAGE
Autoformación ( 4D v16) |
||||||||||||||||||||||||||||||||||