20 de noviembre de 2006

Visual FoxPro es muy bueno

Artículo original: VFP is very very cool
http://weblogs.foxite.com/bernardbout/2006/08/16/vfp-is-very-very-cool/
Autor: Bernard Bout
Traducido por: Ana María Bisbé York

Son sólo artimañas

Se han ido los días de los controles grises. Ahora las pantallas necesitan tener tanta apariencia visual como su funcionalidad. Microsoft comenzó la evolución al diseñar la interfaz de Outlook 2000 y mejoró luego la interfaz de Outlook 2003, que emplea temas. En todas partes de la red vemos el efecto del color en las páginas Web.

Bueno, tenemos la capacidad de utilizar temas en VFP y en la interfaz del Outlook se presta con facilidad a copiar y agregar una apariencia similar y sentirlo como interfaz VFP.

Debo recalcar en el hecho que estas imágenes tienen el copywrite y pertenecen a la empresa para la que trabajo y no pueden ser utilizadas sin permiso.

Las dos pantallas siguientes pertenecen a una aplicación que he diseñado y que se emplea en mi compañía. Hay algunos puntos a resaltar aquí.

Como he mencionado en mi post anterior, mi filosofía de programación es programar una interfaz. Por tanto, no me preocupo en añadir funcionalidad que no será empleada, por tanto los botones que están a la izquierda están fijos y no les he agregado ninguna funcionalidad para añadirlos o eliminarlos.

Vamos a revisar la interfaz.

El formulario principal es un formulario de nivel superior SDI. No hay nada especial aquí.

Arriba a la izquierda, hay un control ActiveX calendar cuyo propósito en este caso es rellenar el espacio. Es completamente funcional así que se puede hacer búsqueda de fecha. Pero para la aplicación, tengo mi propio control para capturar la fecha.

Más abajo, en la mitad izquierda, es un área para la selección de pantallas que van a aparecer a la derecha. Es una clase de usuario que yo desarrollé empleando el control Treeview. Los elementos  que aparecen aquí se leen de una BDF local,  son completamente configurables incluyendo las imágenes.

Debajo a la izquierda están los famosos botones degradados de Outlook. A diferencia de la clase de usuario que yo desarrollé, estos botones serán configurables en tiempo de diseño; pero no se podrán cambiar en tiempo de ejecución.

Al final hay otro botón control de barra de estado de usuario que yo desarrollé. Es sencillo, muestra la hora, algunos mensajes y tiene un remolcador para el redimensionamiento del formulario. En esta aplicación el redimensionamiento no está permitido ya que esto rompería el efecto de las pantallas así como la colocación de los objetos. Está simplemente ahí y se ve bien.

En su lugar habitual, encima del todo, hay un menú que es un menú estándar VFP y añade Copy/Paste (Copiar/Pegar), además de alguna otra funcionalidad no disponible en el Treeview de la vista del Outlook.

A la derecha está la ventana principal que muestra una imagen - en este caso es un entrenador personal que ayuda a una persona que se entrena.

La interfaz trabaja según lo esperado. El usuario selecciona un botón  desde la banda de la izquierda que llena el árbol desde una dbf dando al usuario acceso a la pantalla que está debajo de ese grupo.

Todo esto trabaja de forma similar a un menú donde selecciona un elemento de menú y otro formulario que aparece ...




Ahora viene la mejor parte.

Hemos ejecutado los ejemplos que vienen con VFP y visto los "Formularios transparentes" donde los formularios y todo su contenido se vuelven transparentes utilizando API SetLayeredWindowAttributes. Aunque está bonito, utilizarlo requiere un formulario de nivel superior y provoca que TODO el contenido se vuelva transparente, incluyendo los controles y todo en el formulario. No tiene un aspecto muy agradable, ¡incluso el texto que se escribe también es transparente!

El formulario es, después de todo, una representación bidimensional y muestra qué es lo que quiere mostrar. El efecto transparente tiene lugar; pero ¿en un formulario donde incluso los controles se vuelvan transparentes? Esto es un No rotundo. Pero, ¿qué tal si pudiéramos hacer que el formulario fuera medio transparente mientras mantenemos los controles y todo lo que está dentro en opaco?

Para el usuario, el efecto que estoy tratando de lograr, es un formulario medio transparente, donde el fondo es parcialmente visible; pero todos los controles son opacos y las entradas de texto son claramente visibles. Cómo lo hago no importa en realidad dado el efecto final que se ve.

Obviamente SetLayeredWindowAttributes no es lo que se emplea aquí, porque esta función hace que todo se vea transparente, incluyendo los controles. Este no es el efecto que deseo, así es que la descarto. ¿Cómo puedo lograr este efecto? La clave aquí es saber lo que se quiere lograr.

Después de experimentar un poco llegué a la solución que se muestra debajo. El usuario selecciona una acción desde el árbol y se abre el formulario a la derecha. Este formulario tiene todos los controles opacos; pero aun así se puede ver la imagen al fondo. El formulario es medio transparente mientras que los controles son opacos, como cualquier formulario normal. Esto es lo que ve el usuario. Este es el efecto que yo quiero.




Para enfatizar la traslucidez he dejado una pequeña abertura de unos 3 pixels a la izquierda del formulario. Esto muestra la imagen de fondo y crea la ilusión de que el formulario es transparente.



Pero, ¿Cómo se hizo esto?

Ahora le dejo saber mi pequeño secreto. Todo esto es una ilusión. Si los dibujos del pavimento pueden aparentar 3D, lo cual no es nada, sino una ilusión óptica, entonces el formulario puede aparentar que es traslúcido. La pequeña abertura dejada a la izquierda añade la impresión de que el usuario está viendo una imagen a través del formulario que está por encima de ella.

Los magos emplean artimañas para lograr sus efectos. Yo utilizo VFP y un poco de imaginación. El formulario no tiene que ser transparente para aparentar que lo es. Sólo el efecto final da esa impresión.

Se completó la ilusión.

Ahora, ¿quien dice que el VFP no es genial? VFP puede ser tan bueno como usted quiere que sea. En mi caso ...

Ahora dejo a su imaginación flotar y diseñar algunas pantallas deslumbrantes. Envíenme algunas imágenes cuando lo tengan hecho.

¿Está interesado en seguir el tema? Escriba un comentario en mi Blog y su correo.

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.