19 de noviembre de 2020

Iconos Unicode en botones de Visual FoxPro

Articulo original: Unicode button icons in Visual FoxPro
http://vfpimaging.blogspot.com/2020/11/unicode-button-icons-in-visual-foxpro.html
Autor: Cesar Ch.
Traducido por: Luis María Guayán


Una gran dificultad que tienen los foxeros es actualizar sus interfaces de usuario. Dado que perdimos el soporte de MS, necesitamos hacer casi todos los cambios en la interfaz de usuario (UI) por nuestra cuenta. La interfaz de usuario de Windows 10 actual se basa en iconos monocromáticos, los de la familia SEGOE UI, SEGOE UI SYMBOL y SEGOE MDL2 ASSETS. Estas son fuentes de True Type, que traen toneladas de íconos, los que vemos por todas partes en Windows 10.

Desafortunadamente, no podemos acceder a esos iconos directamente en VFP, porque usan un rango mayor al CHR(255) admitido por VFP. Aún tenemos algunas opciones:

  1. Utilizar un ActiveX que admita Unicodes
  2. Utilizar "Real Window buttons", que admiten Unicodes - https://github.com/VFPX/Win32API/blob/master/samples/sample_274.md
  3. Obtener ayuda de GDI+ - gdiplus.dll y dibujarlos nosotros.

La tercera opción es muy buena, pero exige mucho, mucho trabajo. Afortunadamente, hice casi todo el trabajo pesado anteriormente en 2005, en la clase GradObjects, que originalmente se creó para hacer fondos y botones degradados en nuestros formularios. Recreó cada botón del formulario y lo redibujó en un archivo de imagen, lo que permite efectos de degradado, de paso del mouse y de deshabilitado.

Teniendo esto, solo necesito adaptarlo, dejando atrás los degradados ya casi abandonados, agregando soporte a unicodes y algunas adaptaciones para los efectos del mouse.

Aquí hay una versión actualizada de la muy buena y antigua clase GRADOBJECTS, que estaba destinada a generar botones y fondos degradados para nuestros formularios en 2005, en los tiempos de WinXP. Sigue siendo el mismo GradObjects, pero con algunas propiedades y características nuevas.

El uso es realmente muy simple:

  • Abra el proyecto GradObjects
  • Cree un formulario, agregue algunos botones
  • Lance una instancia de Gradobjects en el formulario
  • Establezca la propiedad FontName del botón en "SEGOE MDL2 ASSETS" o cualquier otra que desee.
  • Establezca la propiedad Caption del botón para aceptar unicodes, introduciendo los unicodes entre las etiquetas <UC> </UC>, por ejemplo:
    • Griego <UC> 03b5 03b9 03c1 03ae 03bd 03b7 </UC> - Esto muestra la palabra "Paz" en caracteres griegos, en cualquier fuente regular, como Arial, Tahoma, Segoe UI, etc.
    • Para obtener el icono de la impresora de SEGOE MDL2 ASSETS, establezca la fuente del botón y agregue lo siguiente a la propiedad Caption: "<UC> E749 </UC> "

Las propiedades predeterminadas de "GradObjects" le brindarán un aspecto degradado, pero todo lo que necesita es cambiar solo 5:

  • BackColor1: Numérico, el RGB del color de fondo
  • BackColor2: Configúrelo en .F. (Falso), porque no necesitamos gradientes aquí, ¿verdad?
  • CaptionForeColor: Numérico, el RGB del color de fondo
  • GradientMode: 0 - ¡No necesitamos degradados!
  • SelBackColor: Numérico, el RGB del color de fondo cuando se enfoca el botón o se pasa el mouse sobre él
  • SelForeColor: Numérico, el RGB del color de primer plano cuando se enfoca el botón o se pasa el mouse sobre él

¡Eso es todo!

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

Para obtener información más detallada, consulte la publicación original de GradObjects:

El objeto "GradObjects" transformará todos los CommandButtons, Graphical OptionButtons del mismo objeto principal. Utilice contenedores, si necesita efectos diferentes (o ninguno) para algunos controles individuales en sus formularios.

Empiece a jugar con el formulario de muestra "TESTUNICODEBTNS.SCX"

Descarga Botones Unicode


No hay comentarios. :

Publicar un comentario

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