25 de diciembre de 2020

La "Guía del hacker para Visual FoxPro" y el "Archivo de Ayuda de Visual FoxPro 9 SP2" ahora en línea

Guía del hacker para Visual FoxPro

Los autores del libro "Hacker's Guide to Visual FoxPro", Tamar Granor, Ted Roche, Della Martin y Doug Hennig, anunciaron que ahora el libro es de código abierto y se encuentra en línea al alcance de todos en el sitio: https://hackfox.github.io

La mayoría de los desarrolladores de Visual FoxPro considera que HackFox es la "biblia", porque va más allá de la ayuda de VFP, y describe cómo funciona realmente VFP. Aconseja que comandos y funciones usar, cuáles evitar y la mejor manera de trabajar.

HackFox se ha demorado un poco, ya que no tuvo actualizaciones después de VFP 7. Hacerlo de código abierto permitirá que prospere a medida que la comunidad actualizan los temas existentes y agregan nuevos temas para VFP 8 y VFP 9.


Archivo de Ayuda de Visual FoxPro 9 SP2

También otro archivo que se encuentra ahora en línea, es el Archivo de ayuda de Microsoft Visual FoxPro 9 SP2, VFPX Edition v.1.08 en el sitio: https://www.vfphelp.com/help/index.htm

Es el mismo archivo actualizado y mejorado por la comunidad a través del Proyecto VFPx que se encuentra para descarga en formato .CHM en el sitio: https://github.com/VFPX/HelpFile


17 de diciembre de 2020

AddProperty() no necesita comprobar la existencia de la propiedad

Puede no ser obvio, pero el método AddProperty() (y la función ADDPROPERTY() agregada en VFP 8.0) es bastante "lista" para no colisionar o para no generar un error cuando usted añade con .AddProperty() una propiedad que ya exista.

En vez de un código semejante a esto:

IF NOT PEMSTATUS(THIS,"AlgunaPropiedad",5)
  THIS.AddProperty("AlgunaPropiedad", AlgunValor)
ENDIF

usted puede escribir esta sola línea de código:

THIS.AddProperty("AlgunaPropiedad", AlgunValor)

Con lo cual VFP agrega la propiedad "AlgunaPropiedad" si no existe ya, y le asigna "AlgunValor" a ésta.

VFP Tips & Tricks - Drew Speedie

1 de diciembre de 2020

Controles Unicode en Visual FoxPro: Un nuevo enfoque más rápido y eficiente

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