mejora en la fuente de mis programas

Un tema que para mi ha sido un dolor de cabeza continuo es el tema de la fuente que utilizo en mis programas. El problema lo llevaba arrastrando muchos años y es el siguiente: en Windows los programas de 32bits se ven borrosos al utilizar fuentes grandes o un escalado del tamaño de fuentes en la pantalla. En mi caso utilizo escalado de fuentes tanto en un monitor de 24″ y en un portátil que utilizo habitualmente. Hasta hora en mis programas utilizaba la fuente del sistema tal como expliqué en una entrada anterior.

El caso es que hace poco estuve revisando la carpeta samples de FWH y algunos de sus programas, como FiveDBU, se veían tremendamente bien, sin fuentes borrosas. La manera de definir la fuente era algo tan sencillo como esto:

  DEFINE FONT ::oFont  NAME "Calibri" SIZE 0, -14 

y como decía un conocido programador ¡listo el pollo!. Increíble. Con la de vueltas que le he dado yo a este tema y la solución era la más sencilla posible. Esta solución tenía un pero, y es que tuve que adaptar algunos controles para que la letra elegida se mostrase correctamente. Como los formularios que utilizo en mis programas los genero desde recursos también tuve que adaptar todos los formularios a la nueva letra. Los formularios son ahora un poco más grandes que antes pero el trabajo ha merecido la pena.

En la siguiente imagen muestro mi Cuaderno de Bitácora, a la izquierda con el nuevo tipo de letra y a la derecha con el antiguo. La claridad y legibilidad del programa ha mejorado bastante.

A la izquierda el nuevo tipo de letra y a la derecha el antiguo.

generación de pdf de listados

Hace poco he descubierto una cosa bastante curiosa sobre la generación de PDF de los listados de mis programas y que es aplicable a todos ellos. Cuando se genera un listado en cualquiera de mis programas aparece la siguiente ventana de previsualización y lo que aparece en la parte derecha es una imagen con la previsualización del listado.

Para generar un PDF con el listado normalmente pulsaba en el botón de Acrobat marcado con (2) en la imagen superior, pero se me ocurrió hacerlo seleccionando la impresora ‘Microsoft print to PDF’ que aparece en el menú desplegable bajo el icono de la impresora (1). El caso es que el resultado parece similar pero es totalmente distinto.

A la izquierda está el PDF generado con ‘Microsoft print to PDF’ y a la derecha el generado con la opción de PDF de FWH. El PDF de la izquierda es texto, se puede seleccionar, copiar texto, etc., mientras que el de la derecha es una imagen y no se puede hacer nada con el texto, simplemente porque no hay texto, hay una imagen con el texto.

En resumen, si tienes que generar un PDF a partir de uno de mis programas mira a ver si tienes disponible la impresora ‘Microsoft print to PDF’ y genera el PDF a través de ella.

generando ficheros .rtf con harbour/fwh

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

Una de las opciones que trae el Puchero es la posibilidad de generar un fichero .rtf con la información almacenada de una receta. Hasta ahora el fichero .rtf que se generaba era algo como lo siguiente:

Fichero .rtf a partir de una receta… hasta ahora 😉

Para generar este fichero utilizo la clase TRtfFile de FWH que basicamente genera un fichero rtf a partir de una variable de tipo texto, pero sin permitir formateos ni muchas alegrías. Algo muy básico. La pregunta que te harás es ¿ por qué no generar un fichero docx directamente con la clase TWord o similar ? Pues porque la clase Tword para FWH requiere que el usuario tenga Word instalado, y eso es algo que evito a toda costa. La generación de ficheros XLS en mis programas la realizo utilizando la clase FileXls que Ramón Avendaño publicó en el foro de FWH hace muchos años, y que he subido a un repositorio de GitHub para evitar que desaparezca. Al generar el fichero desde cero, creando un fichero con el formato adecuado, se evita que el programa pierda funcionalidad si el usuario no tiene tal o cual programa instalado. En mi caso utilizo desde hace muchos años LibreOffice sin echar de menos ninguna funcionalidad del paquete Office de Microsoft, y los ficheros XLS los abro perfectamente con Calc.

Me puse a investigar sobre la generación de ficheros .rtf desde Harbour y FWH y encontré cosas interesantes hasta que llegué a un post en el grupo de Harbour Users en que había una clase para generar ficheros .rtf que me llamó la atención. Me puse a probarla y era lo que estaba buscando, la posibilidad de generar ficheros .rtf desde cero, creando el fichero con el formato adecuado. La clase está escrita por Thomas R. Marchione y la he publicado en Github sin tocar una coma. Espero que si el autor lee este post no haya ningún problema.

Utilizando esta clase, la exportación de receta a formato .rtf en el Puchero ahora mejora sustancialmente, puedo dar formato a los párrafos y crear tablas dentro del .rtf. Justo que lo quería.

A la hora de utilizar la clase con FWH hay que tener en cuenta lo siguiente:

  • En el fichero richtext.prg hay una instrucción #Command SET DEFAULT <x> TO <y> => <x> := IIF( HB_ISNIL( <x> ), <x> := <y>, <x> ) que genera un error debido a que FWH tiene una definición similar. Lo que he hecho ha sido cambiar esta instrucción por #Command SET RTFDEFAULT <x> TO <y> => <x> := IIF( HB_ISNIL( <x> ), <x> := <y>, <x> ) y modificar el fichero en consecuencia.
  • También hay una función FUNCTION cValToChar( xVal ) que hace reescribe otra de FWH y da problemas, en mi caso el los bitmaps de los browses aparecía NIL encima del bitmap en cuestión. En mi caso la comenté y listo.

A ver si alguien se anima a incluir posibilidad de añadir imágenes en el fichero .rtf

😉

el Puchero 6.62.a

Ya puedes descargar la versión 6.62 de el Puchero, mi programa de gestión de recetas de cocina. Esta actualización trae como novedad principal el añadido de los alérgenos a los alimentos que se utilizan para realizar el escandallo de las recetas, de manera que las recetas heredan los alergenos de sus alimentos. Además he añadido otras nuevas funcionalidades y he corregido todos los errores reportados por los usuarios. Te explico todas las novedades de la versión.

En la tabla de ingredientes he introducido campos para marcar los siguientes alérgenos alimentarios: gluten, crustáceos, huevo, pescado, cacahuetes, soja, lactosa, frutos secos, apio, mostaza, sésamo, sulfitos, moluscos y altramuces. También he añadido un campo para indicar que el ingrediente es picante y un nuevo campo para introducir los azúcares del ingrediente.

el Puchero: nuevos campos de alérgenos en la edición de ingredientes

En la edición de recetas dentro de la pestaña de escandallo el programa calcula los hidratos de carbono y azúcares tanto de la receta como del comensal.

He añadido una pestaña donde se recogen los alérgenos provenientes de los ingredientes introducidos en el escandallo. Estos alérgenos no se pueden modificar, salvo que se modifiquen en el ingrediente correspondiente, en cuyo caso se recoge automáticamente en la receta.

La actualización es gratuita para todos los usuarios registrados del programa y está disponible en la página de descargas.

cómo gestionar alérgenos en las recetas – I

Una de las consultas que recibo habitualmente por email consiste en si es posible introducir los alérgenos en las recetas que se gestionan con el Puchero. La respuesta es que sí, y en este post voy a explicar la manera de hacerlo.

En la versión 5.50 de el Puchero introduje la gestión de dietas y tolerancias. En la gestión de dietas y tolerancias podemos incluir los alérgenos, y para diferenciarlo de otros valores podemos añadirles un prefijo de la siguiente manera: A01 Gluten, A02 Crustáceos, A03 Huevo,… A14 Altramuces. Como se puede ver en la siguiente pantalla, quedan claramente diferenciados los alérgenos de las dietas.

Alérgenos introducidos en la gestión de dietas y tolerancias

En este formulario podemos consultar las recetas que incorporan una determinada dieta o tolerancia, o en nuestro caso un alérgeno, haciendo click en la opción ‘Ver recetas

Una vez estemos editando la receta correspondiente utilizaremos el campo ‘Dietas y tolerancias‘ para introducir el alérgeno o alérgenos correspondientes a la receta. Haremos click en el botón de selección a la derecha del campo (1), seleccionaremos el alérgeno deseado (2) y pulsamos Aceptar (3). Para cada alérgeno hay que repetir este proceso.

Selección de un alérgeno en una receta

En la gestión de recetas podemos mostrar la columna de Dietas/Tolerancias donde aparecerán los alérgenos, y además podemos filtrar recetas por el alérgeno que deseemos.

Esto es en cuanto a la gestión de alérgenos cuando no se hace escandallo de la receta. Actualmente estoy trabajando en una actualización del programa que permitirá llevar el control de los alérgenos de una receta a partir de su escandallo, incorporando los alimentos los alérgenos de manera que al hacer el escandallo se acumulen en la receta.

código de alanit en GitHub

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

He publicado en Github el codigo fuente de algunos de los programas disponibles en mi sitio web https://alanit.com. Estos programas están hechos con Harbour y FiveWinHarbour y creo que constituyen un buen punto de partida para cualquier programador que quiera iniciarse o profundizar en el conocimiento de estos lenguajes.

En el blog de mi web personal hay cientos de artículos sobre programación https://alanit.com/category/programacion y de aspectos relacionados con mis programas https://alanit.com/category/alanit/ que he ido publicando desde el año 2003.

Cuaderno de Bitácora

Imagen de Cuaderno de Bitácora

el Puchero

Findemes

Imagen de Findemes

El código fuente de Colossus, mi programa de gestión de contraseñas, también se encuentra publicado desde hace tiempo en https://github.com/JoseluisSanchez/colossus

nuevas funcionalidades en las ediciones gratuitas

Autocompletado de valores desde tablas auxiliares.

Hasta ahora las diferencias entre las ediciones gratuitas y registradas de los programas eran las detalladas en la siguiente entrada: diferencias entre las ediciones de los programas.

A partir de septiembre de 2018 he eliminado las restricciones de las ediciones gratuitas, que unicamente traen un mensaje de recordatorio de registro que se muestra periódicamente. De esta manera, las diferencias entre las ediciones registrada y gratuita son el nombre del ususario registrado en los distintos listados del programa y el mensaje recordatorio. Nada más.

Por esto, todas las versiones gratuitas añaden desde ahora las siguientes funcionalidades:

  • Selección de claves desde tablas auxiliares. Cuando tienes que introducir una clave desde una tabla auxiliar simplemente haz click en el botón marcado con […] que aparece al lado del campo, selecciona el valor que quieras y se introducirá en el campo.
  • Selección de claves desde tablas auxiliares.

  • Autocompletado de claves auxiliares. Otra manera de completar las claves desdes una tabla auxiliar es simplemente escribiendo en el campo el valor a introducir. Al hacerlo, el programa te mostrará una lista con los posibles valores de las claves que contienen la cadena tecleada y podrás seleccionar el valor que quieras con las flechas de cursor y pulando INTRO.
  • Autocompletado de valores desde tablas auxiliares.
    Autocompletado de valores desde tablas auxiliares.

  • Consulta de ejemplares desde tablas auxiliares. Desde cualquier tabla auxiliar podrás ves los ejemplares de la tabla principal que contienen esa clave, por ejemplo los libros de una materia o las recetas de un cocinero.

Todas las descargas de ediciones gratuitas de los programas se han actualizado con estas nuevas funcionalidades.

Quizá te preguntes ¿ para que quiero registrar el programa si la edición registrada no ofrece más funcionalidades que la edición gatuita del programa ? Pues una respuesta es que te quitas el mensaje recordatorio que aparece cada cierto tiempo, y la segunda es que con tu contribución estás apoyando la existencia de programas que se adaptan a tus necesidades o a tus gustos.

Cocina Recetas de tus Chefs Favoritos a Diario

Un usuario de el Puchero ha escrito el libro Cocina Recetas de tus Chefs Favoritos a Diario: Organiza y Cocina con menor esfuerzo donde explica la manera de organizarse para cocinar recetas de famosos chefs. Para ello utiliza mi programa el Puchero, al que dedica un capítulo del libro.

El libro está en formato Kindle y se puede comprar en Amazón por 2,99€, pero estará los días 17, 18 y 19 de Febrero de 2018 en promoción por 0 €. Lo podeis comprar en el siguiente enlace:

Cocina Recetas de tus Chefs Favoritos a Diario: Organiza y Cocina con menor esfuerzo

Diseño plano

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

El diseño plano o flat design ha sido una tendencia en diseño web en los últimos años, pero con la llegada de Windows 10 se ha impuesto también en cuanto a interfaces de sistemas Windows. El diseño plano se caracteriza basicamente por:

  • Ausencia de texturas, sombras, gradientes, biseles o cualquier otro elemento que provoque sensación de profundidad.
  • Diseño minimalista, donde los elementos respiran y no se amontonan uno encima del otro.
  • Uso de formas geométricas simples (cuadrados, rectángulos, círculos, etc.) para estructurar la información o diseñar elementos de la interfaz (botones, iconos, etc.).
  • Uso de colores uniformes, vibrantes.

Como programadores de aplicaciones en un entorno gráfico como Windows, debemos preocuparnos de que nuestras aplicaciones sigan las reglas de interfaz del entorno, de otra manera su aspecto quedará totalmente desfasado. En función del tipo de software que realicemos esto tendrá todavía más importancia, no es lo mismo desarrollar sistemas por encargo que los usuarios tienen que usar de manera obligatoria que desarrollar aplicaciones a la venta por internet donde la primera impresión al usuario será determinante en el proceso de compra. Si quieres que tu aplicación se vea bonita debes siempre seguir las reglas del interfaz del sistema operativo en que se ejecuta. Un diseño simple y funcional es la clave para tener éxito.

En mi caso, como programador de aplicaciones Windows, he modificado mis aplicaciones para dotarlas de un diseño plano. A continuación muestro los cambios que he realizado:

  • Eliminación de gradientes en el registro seleccionado de las rejillas de datos.
  • Eliminación de efecto de sombra en las pestañas de ordenación de las rejillas de datos.
  • Eliminación de gradientes en los títulos de las listas de acciones.

Además, he dejado de utilizar una clase calendario – lo siento Paco – desarrollada a medida por el control estándar de Windows. El cambio de aspecto se muestra en las siguientes imágenes de mi programa el Puchero, que es el primero que he adaptado al estilo plano.

Y tú, ¿ has adaptado tus programas al diseño plano ?

el Puchero 6.50.c

He publicado una nueva actualización de el Puchero, la 6.50.c, que corrige un error que hacía que al reindexar se añadieran registros en blanco en el fichero de ingredientes principales. Esto hacía que el autocompletado en el campo ingrediente principal de la receta algunas veces generara un error.

En la versión 6.50.c esto se corrige, pero si tienes registros en blanco en el fichero de ingredientes principales debido a este error, descargate estos dos ficheros:

  • ingredp.dbf
  • ingredp.cdx

y copialos en la carpeta c:\puchero\datos o en la que tengas indicada como carpeta de recetas en la configuración del programa. Luego arranca el programa, reindexa y listo.