Articulo original: Unicode Controls in Visual FoxPro - A new faster and efficient aproach
https://vfpimaging.blogspot.com/2020/11/unicode-controls-in-visual-foxpro-new.html
Autor: Cesar Ch.
Traducido por: Luis María Guayán
Como continuación de mi último artículo publicado: Iconos Unicode en botones de Visual FoxPro, decidí seguir probando diferentes soluciones para llevar Unicodes a nuestros controles, especialmente como iconos en botones.
La opción más natural sería usar botones de Windows reales como el ejemplo que tenemos en dicho artículo: https://comunidadvfp.blogspot.com/2020/11/iconos-unicode-en-botones-de-visual.html
Pero esto trae la desventaja de que tendríamos que hacer varios cambios en nuestros formularios heredados para adaptar todos los códigos relacionados con el evento Click y otros.
Entonces, decidí probar una solución híbrida - "Dibujar" un control Win32 "Estático", similar a nuestro control Label de VFP sobre CommandButtons y Labels comunes. Estos controles "estáticos" de Win32 permiten Unicodes, y nos permitirían mantener todos nuestros códigos heredados como están.
Así que aquí está FoxyObjects, una clase de VFP personalizada que se puede incluir en nuestros formularios y que "convertirá" todos los botones y etiquetas que tienen contenido entre las etiquetas <UC> </UC> a Unicodes, al igual que el artículo anterior. Esta vez unas 4 ó 5 veces más rápido que GradObjects, con el mismo resultado.
Si no leíste el artículo anterior, mi objetivo es traer algunos íconos atractivos, los mismos que vemos en la interfaz de usuario de Windows 10, especialmente los de "SEGOE MDL2 ASSETS", como se muestra en el siguiente CharMap:
El uso de esta nueva clase es realmente muy simple:
- Abra el proyecto FoxyObjects
- Lance una instancia de FoxyObjects a tu formulario
- Establezca la propiedad FontName del botón de comando en "SEGOE MDL2 ASSETS" o cualquier otra fuente que desee.
Configure la propiedad Caption del botón para aceptar unicodes, introduciendo los unicodes entre las etiquetas , por ejemplo:
- griego <UC> 03b5 03b9 03c1 03ae 03bd 03b7 </UC> - Esto mostrará la palabra "Paz" en caracteres griegos, en cualquier fuente regular, como Arial, Tahoma, Segoe UI, etc.
- Para obtener el icono de la impresora de la fuente SEGOE MDL2 ASSETS, establezca la propiedad FontName del botón de comando y agregue lo siguiente a la propiedad Caption: "<UC> E749 </UC>"
FoxyObjects trae algunas propiedades, que se aplicarán a todos los controles CommandButton y Label que están en el mismo nivel de objeto que el nivel de FoxyObjects. Por ejemplo, si desea que FoxyObjects aplique cambios a algunos objetos seleccionados, puede insertarlos en un contenedor y agregarle una instancia de la clase. De esta forma, el resto de objetos no se verán afectados.
De forma predeterminada, se aplicará cambios solo a los objetos que tengan la etiqueta <UC> en sus propiedades Caption.
- BackColor: Numérico, especifica el color de fondo utilizado para mostrar texto y gráficos en un objeto.
- DisabledForeColor: Numérico, especifica el color utilizado para mostrar el texto cuando el objeto está desactivado.
- ForeColor: Numérico, especifica el color utilizado para mostrar el texto.
- MouseOverForeColor: Numérico, especifica el color en el que se convertirá el texto del objeto (y el icono) cuando el mouse esté sobre el objeto especificado. Si no desea este efecto, especifique el valor -1
- lBindAll: Logical, determina que todos los objetos se verán afectados, incluso si no tienen el en el Caption. Esto significa que puede cambiar el Caption en tiempo de ejecución, y se respetarán los Unicodes
- lBindLabels: Lógico, determina que tanto los CommandButtons como los Labels se verán afectados
- lBindResize: Lógico, determina que siempre que se cambie el tamaño o se mueva cualquier control, la máscara de etiqueta también se actualizará.
- lBindVisible: Lógico, determina que siempre que cualquier control esté oculto o visible, la máscara de etiqueta también se actualizará..
Los Unicodes se pueden obtener directamente a través de CharMap.EXE o en toda la web. Aquí hay un excelente punto de partida: https://docs.microsoft.com/en-us/windows/uwp/design/style/segoe-ui-symbol-font
La fuente "SEGOE MDL2 ASSETS" viene con Windows 10, pero no se permite su distribución a otros sistemas operativos. Esto no es gran cosa, porque Tahoma también nos trae varias opciones, y siempre podemos trabajar con algunas de las fuentes gratuitas disponibles en la web, como "Material.io". Traen toneladas de iconos modernos y hermosos de forma gratuita. Realmente vale la pena una visita: https://material.io/resources/icons/?style=outline
AGRADECIMIENTOS ESPECIALES a Mustapha Bihmuten de Marruecos y Leandro Walfrans de Brasil por probar la versión Pre-Alpha de la clase y por brindar valiosas sugerencias
Descargar de FoxyObjects v.0.4