26 de julio de 2015

Cambiar el aspecto de un formulario en Visual FoxPro

Artículo original: Skinning a Form in Visual FoxPro
http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,9a91dea3-6413-42e9-aeff-f0097937474d.aspx
Autor: Craig Boyd
Traducido por: Ana María Bisbé York


Hace un tiempo incorporé elementos VFPSkin en un proyecto en el que estaba trabajando. Fue entonces cuando apareció la primera versión de VFPSkin (versión 1.0?) y era gratis y con código abierto. Quedé muy impresionado con VFPSkin, nunca antes había visto aplicar estilos en VFP de esa forma. Tenía algunos problemas y le hice muchas modificaciones; pero la idea general era buena e ingeniosa. (Sólo para el registro, este escrito no apunta al código inicial de VFPSkin al escribir el ejemplo para esta entrada de blog. Admito haber estado expuesto al VFPSkin, y estar bajo su influencia; pero el código y las partes creadas para este ejemplo se crearon desde cero.)

Entonces, esto me motivó para aumentar mi trabajo sobre texturas en Visual FoxPro... hasta el día de hoy. Decidí buscar una forma creativa y simplificada de aplicar skins en las ventanas de Visual FoxPro. ¿Por qué? Bueno, como con todas mis ideas y proyectos, a veces por el cambio, y otras porque tuve una idea que puede ser útil en algo a la Comunidad de Visual FoxPro y la quiero explorar un poco. En este caso, es un poco de ambos. Llamo a este proyecto "Pantalla verde".

La idea fue tomar un bitmap único común que tiene un color único de fondo (la clave es transparente si desea), utilizarlo en la propiedad Picture del formulario, y luego, trabajar todo en tiempo de ejecución basado en ese único color. En este caso escogí verde para el color -como en las películas (allí fue donde tomé la idea, aunque en aquellos días pensaba que Hollywood usaba mayormente azul- y creé un ejemplo sencillo de piel que puedo utilizar en el desarrollo.


Green Screen Skin Bmp

Utilizando algunas llamadas a las funciones API (CreateRectRgn y CombineRgn, en GDI32 y SetWindowRgn en USER32) el proyecto progresó rápidamente y obtuve enseguida un formulario que mostraba justamente la porción necesaria de bitmap diseñado. Luego, llegó la hora de un código que permitiera a los desarrolladores Visual FoxPro utilizar sus propios bitmaps y crear "archivos de definición de diseños" basados en ellos. Decidí incorporar esta porción en mi formulario ejemplo también.

Esto es solamente un ataque inicial al tema ... lo considero una forma decente de probar el concepto. Mi objetivo final en esta etapa fue mostrar a los desarrolladores Visual FoxPro como los diseños pueden lograse de forma muy sencilla. Tomó mucho menos de un día llegar al resultado, así que imagine lo que puede hacerse teniendo tiempo. Luego, entró en mi lista de cosas por hacer la posibilidad de redimensionar el formulario (maximizar y minimizar) y la posibilidad de colocar o descolocar el diseño en dependencia de la capacidad de cambios de diseños al vuelo. Seguiré dando un vistazo a estas ideas, con esto quiero tener una herramienta que sea de muy sencilla aplicación para los desarrolladores Visual FoxPro.

Un par de notas finales: Los dos métodos en el formulario ejemplo que debe mirar son: createskindefinition y readskindefinition. Piense que emplee verde; pero puede ser cualquiera. El método readskindefinition va a mirar a un único pixel en la esquina superior izquierda de su bitmap para determinar el color que debe ser pintado en el formulario. Es todo, pienso que se puede sorprender de la cantidad mínima de código que hay para lograrlo. He aquí una imagen de la pantalla del ejemplo que está en el archivo de descarga.

Descargue el ejemplo Green Screen (10 KB aprox.)


No hay comentarios. :

Publicar un comentario