COMPANY

BLOGS

  • user warning: Unknown column 'u.signature_format' in 'field list' query: SELECT c.cid as cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.signature_format, u.picture, u.data, c.thread, c.status FROM comments c INNER JOIN users u ON c.uid = u.uid WHERE c.nid = 19578 AND c.status = 0 ORDER BY c.cid LIMIT 0, 50 in /var/www/www.4d.com/docs/modules/comment/comment.module on line 991.
  • warning: file_get_contents(http://www.telize.com/geoip/54.224.166.141) [function.file-get-contents]: failed to open stream: HTTP request failed! in /var/www/www.4d.com/docs/includes/common.inc(1762) : eval()'d code on line 4.

La evolución de los list boxes en 4D

14.09.2010
por Thibaud Arguillère

Después de hablar el otro día sobre el editor de métodos, ahora hablemos sobre los ListBoxes. Entre otras  cosas porque entre las nuevas funcionalidades (1) de 4D v12, las mejoras a los Listboxes son mayores (1 otra vez).


Comencemos con un breve resumen, historia del ListBox.

 

La primera generación de ListBoxes aparece con 4D 2004. El uso de un ListBox es muy fácil: el desarrollador arrastra y deja caer un objeto ListBox en el formulario y lo asocia a los arrays. Eso es todo. 4D hace el resto. A pesar de que este resto no es poco (2): muchos de los automatismos facilitan (léase "aceleran") considerablemente el desarrollo. Por ejemplo, la ordenación automática cuando el usuario hace clic en el encabezado (primer clic: orden ascendente, segundo clic: orden descendente y así sucesivamente). O el hecho de que el usuario pueda mover columnas o filas, modificar automáticamente los arrays. Todo esto sin escribir código.

 

Esta primera implementación de ListBoxes en 4D también le permite:

  • Dar formato a las columnas y a las líneas,
  • Dar formato al ListBox (colores alternos, líneas de separación verticales y horizontales, etc.)
  • Modificar dinámicamente, con el lenguaje, las columnas (arrays) y los encabezados (que son botones 4D)
  • Hacer muchas otras cosas que hicieron que esta primera versión de los ListBoxes en 4D fuera un éxito. Una gran cantidad de desarrolladores los utilizó de inmediato. Bueno, al menos los desarrolladores que pasaron a 2004, cuando se lanzó.

 

La segunda generación de ListBoxes vino con 4D v11 SQL. Era posible asociar una selección a un ListBox. La selección actual o selección temporal (y por supuesto, aún se manejaron los arrays). Esta actualización fue un gran paso adelante para los listboxes. En modo cliente/servidor especialmente, se le facilitó la vida a los desarrolladores, ya que el acceso de red se optimiza, los datos se paginan automáticamente, etc. Los listbox de tipo "selección temporal" permiten, entre otras buenas ideas, mostrar varias selecciones de la misma tabla en el mismo formulario. Esto fue posible con las versiones de 4D antes de v11, ¿Alguién recuerda Áreas de desplazamiento? a costa de cierta complejidad de desarrollo.

 

Del lado de los automatismos, para los ListBox de tipo Selección actual, 4D maneja los campos relacionados (dependiendo del estado de las relaciones) y también de la entrada de datos: el usuario final puede modificar los datos directamente en el ListBox y 4D guarda los registros. Si el registro está bloqueado, no se permite la entrada de datos. Los Listboxes v11 eliminan el uso de MODIFY/DISPLAY SELECTION. Y permítanme expresar mi opinión: esta es una buena noticia, porque estos dos comandos no nos permiten construir fácilmente una interfaz moderna (con barra de desplazamiento a la derecha, incluyendo el encabezado y pie de página).

 

Para estas dos versiones de los Listboxes, es posible afinar la interacción del usuario. Podemos escribir código específico para un clic, simple o doble, en una línea, celda o encabezado. O podemos manejar la edición, jugar con la visibilidad de la columna, etc.

 

Este fue un rápido recordatorio histórico. No se ha cubierto todo y no fue un viaje exhaustivo. (No he mencionado la casilla de selección para modificar booleanos, ni tampoco he hablado de la ventana emergente que se muestra si un campo tiene una lista. ¡Muchas funcionalidades!) Vamos a verlas ahora.

 

Ahora tenemos 4D v12 y la tercera generación de ListBoxes. Y para esta tercera parte, ¡vamos con todo! Dos funcionalidades principales se han añadido a los listboxes. Al azar (3), vamos a empezar con ... (brrrrrrrrrrrr, se supone que es un redoble de tambor) ... ¡jerarquía! La jerarquía es la posibilidad de mostrar un ListBox con arrays utilizando, hmm, una jerarquía. Como soy consciente de que esto es un poco confuso, este es un vídeo que muestra cómo funciona. Esto será más eficiente:

 

 

Interesante, ¿no? Espero que haya notado que la jerarquía también se puede manejar con el lenguaje: contiene todos los comandos necesarios (crear/eliminar la jerarquía, contraer/desplegar, etc.) Después de este maravilloso vídeo, puedo dirigirme a la aplicación de demostración How Do I sobre los Listbox.

 

Además de la jerarquía, 4D v12 permite imprimir ListBoxes. Esto se hace utilizando el nuevo comando Print object (varios blobs, trucos técnicos, notas técnicas y sesiones de capacitación podría centrarse únicamente en este comando). En efecto, utilizando Print object y LISTBOX GET PRINT INFORMATION, no sólo puede imprimir el listBox con un control total de la impresión ("¿Cuántas líneas impresas?" "¿Cuál es la última línea impresa?"), sino también puede imprimir 2, 3, o 10 ListBoxes donde quiera en la misma página. Todas diferentes o en la misma si lo desea. ¡Y listo! - puede llenar su ListBox con columnas de texto multiestilo (sea cual sea la fuente del ListBox: arrays o selección). Con 4D v12, puedo imprimir de 1 a n ListBoxes tan profesionales y bien presentados que puedo pretender ser serio delante de los clientes.

 

No tengo ninguna duda: la próxima versión principal de 4D vendrá con una cuarta generación de ListBoxes . Tengo docenas de buenas ideas sobre este tema. ¿Y usted?

 

(1) Ver blogs anteriores
(2) Sí, lo sé. Es más gracioso en francés

(3), Lo prometo
 

RSS 0 comentario(s) a este mensaje