clase TTagEver para FivewinHarbour

Una funcionalidad que quería implementar en el Puchero es la gestión de dietas y tolerancias de las recetas. Es decir que para cada receta se pueda poner si es adecuada para gente con colesterol, celíacos, o para dietas de puntos, Dunkan o lo que sea. Esto supone que cada receta podía llevar asociadas múltiples dietas y la verdad es que no tenía claro cómo hacerlo. Muchas veces lo principal no es la funcionalidad sino como se implementa esta funcionalidad lo que hace que esta sea aceptada por los usuarios o no.

El caso es que dándole vueltas a la cabeza recordé el sistema de etiquetado de documentos que usa Evernote. Algo así:

evernotetags

En FWH hay una clase llamada TTagCloud que podía servirme como base. Esta clase la hizo Francisco García Fernández, que creo que es un gran creador de controles para FWH y además un buen amigo mio. Estuve varias semanas dándole vueltas al control sin conseguir avances significativos, hasta que me puse en contacto con Paco para pedirle ayuda. Paco en un par de días hizo el control, y ahora en el Puchero tengo hecha la implementación de las dietas de esta manera.

TTagEver

La clase desarrollada por Paco está disponible en el siguiente repositorio de GitHub: https://github.com/JoseluisSanchez/TTagEver

Mil gracias Paco.

Anuncios

exportando datos a excel

Uno de los pequeños detalles que me faltaban en la actualización de Findemes en la que estoy trabajando era el tema de la exportación de datos a Excel. Es muy útil que cualquier programa permita la exportación de datos para que se puedan tratar en una hoja de cálculo, pero en el caso de un programa de contabilidad personal este aspecto toma mayor relevancia.

2013-04-23_160200

La manera más sencilla de exportar los datos de un xbrowse de FWH a Excel es usar el método toExcel() de la clase, sin embargo esta manera de realizar la exportación presenta algunos problemas. El primero es que la exportación se hace a través del propio Excel, o sea que el usuario tiene que tener Excel instalado, supuesto que no siempre se cumple. El segundo es no he conseguido que la exportación de datos numéricos se realice correctamente. Al pasar un número con formato 999.999,99 a Excel se transforma en 999999.99 con lo cual no se puede operar correctamente con él en la versión en español del programa. El porqué de este cambio escapa a mis conocimientos, pero creo que es debido a los cambios de formato que se utilizan internamente en la clase para la exportación.

2013-04-23_160142

Ante estos problemas recordé haber leído un post en el foro de FWH donde Rafa TheFull había publicado una manera diferente de realizar la exportación. En el post Rafa, que se puede leer en http://forums.fivetechsupport.com/viewtopic.php?f=6&t=19897, habla de los problemas para generar el fichero XLS a través del propio Excel y que no existe la seguridad de que esta manera de realizar la exportación funcione en todas las instalaciones. Ante esto, Rafa propone utilizar la clase XlsFile de Ramón Avendaño, un programador que en su día realizó muchas contribuciones a FWH. El método usado por esta clase consiste en crear un fichero desde cero, escribiendo todos los caracteres necesarios para crear un fichero en formato XLS puro, sin pasar por Excel. El fichero generado se puede abrir con Excel o LibreOffice.

2013-04-23_160417

Al comenzar a utilizar la función de Rafa, me encontré con el problema de la exportación de las columnas en que se muestra una imagen. La manera que he encontrado de de solucionarlo es usar la variable cargo que existe en todas las clases para asignar el valor que se va a mostrar en la exportación y luego comprobar que cuando el tipo de la columna sea de tipo definido por el usuario mostrar la variable cargo. Algo así:

elseif Valtype( cText ) == "U"
@ nFila, nCol XLS SAY oBrw:aCols[x]:Cargo OF oXls

Con esto consigo una exportación más completa que usando el método de la clase, que se realiza independientemente de los programas que tenga instalado el usuario y que se puede abrir con varios editores de hojas de cálculo.

colores en xbrowse

En la actualización de Findemes que estoy preparando he cambiado el aspecto del programa para dotarlo del look de Windows 7 y uno de los cambios introducidos es poner el pintado de las rejillas de datos con el degradado de Windows 7. Como en Findemes las lineas de apunte se pintan de distinto color en función de si son ingresos o gastos para hacer el pintado correctamente hay que modificar el método oBrw:bClrStd de la siguiente manera:


oApp():oGrid:bClrStd := {|| { iif( AP->ApTipo == "I", oApp():cClrIng, oApp():cClrGas ), CLR_WHITE } }

El resultado es el siguiente:

fdm_browse1

Sin embargo hay un problema: el pintado de los colores de ingreso y gasto es correcto en todas las lineas excepto en la linea seleccionada. En esta linea el texto sigue apareciendo en el color por defecto de browse que es el negro. Para que el efecto sea completo hay que modificar el método oBrw:bClrSelFocus de la siguiente manera:


oApp():oGrid:bClrSelFocus := { || { iif( AP->ApTipo == "I", oApp():cClrIng, oApp():cClrGas ),;
{ { 1, RGB( 220, 235, 252 ), RGB( 193, 219, 252 ) } } } }

Ahora el pintado ya es el deseado.

fdm_browse2

dos regalos

En las últimas semanas he recibido dos grandes regalos.

Primero fue Jaime, que me regalo el libro ‘Seductive interaction design‘. Según palabras de Jaime es ‘el mejor libro de diseño de interacción que he leido nunca’. Este verano voy a aplicarme leyéndolo, con lo que intento conseguir dos cosas: aprender sobre diseño de interacción y mejorar mi nivel de inglés. Uno de los primeros capítulos hablar del poder del diseño de interacción para hacer cosas divertidas que cambien la percepción de la gente sobre algo. De muestra este video:

Piano Stairs

El segundo regalo ha sido una actualización de FivewinHarbour a raiz de este post en los foros de Fivetech. Esta actualicación me ha permitido probar la cinta de opciones y he decidido incorporarla a Cuaderno de Bitácora. En la nueva versión del programa habrá una pestaña de la cinta para cada una de las colecciones, lo que permitirá hacer visibles funcionalidades del programa que hasta ahora quedaban un tanto ocultas, como todos los ficheros de tablas auxiliares. En la nueva versión estos ficheros serán accesibles desde la pestaña de la cinta de la colección y el programa permitirá hacer consultas maestro-detalle desde cada uno de estos ficheros. Con esto y algunas nuevas funcionalidades creo que el programa da un paso al frente en cuanto a potencia y facilidad de uso.

resedit

Con el cambio de versión de Windows a Seven, decidí evaluar alternativas a PellesC como editor de recursos. El principal motivo era que PellesC llevaba tiempo dando errores, al final de manera bastante habitual, y también a mi intención de eliminar de mi PC todo aquello que no usase. ¿ Para que quería un compilador de C completo si sólo usaba el editor de recursos ? Ya tengo instalado BCC que es el que uso para compilar cl código C generado con xharbour, así que un compilador de C es suficiente.

Así que decidí probar seriamente un editor de recursos llamado ResEdit que llevaba tiempo siguiendo. Este editor de recursos tenía una característica que llevaba tiempo deseando usar, y que PellesC no tenia, y es un asistente interactivo de alineación de los controles. Esta característica está presente en muchos editores de formularios avanzados, y va mostrando la alineación de un control cuando se coloca o se mueve en el formulario respecto al resto de controles. Realmente es muy útil y permite ajustar los controles de un formulario rapidamente. Otra característica que me gusta mucho de ResEdit es la ordenación automática de los controles para tabulación, que también ahorra mucho tiempo.

El archivo RC que genera ResEdit lo puede convertir a formato RES con el comando BRC del compilador C de Borland que uso habitualmente y luego lo enlazo con mi código objeto para generar los ejecutables sn problemas.

my tools of the trade – windows edition

Vía Joel on Software llegué al blog de UCOSP donde me llamó la atención el post My tools of the trade. Es una lista de aplicaciones preferidas a la hora de programar, y hay varios enlaces a otros blogs de programadores donde dan cuenta de sus preferencias, entre ellos Mike Gunderloy que es un antiguo evangelista de .Net que se ha pasado al bando de Ruby on Rails, haciendo una pirueta realmente espectacular. Estas listas de aplicaciones favoritas me gustan porque siempre aparece alguna aplicación cuya existencia desconoces y que te puede resultar interesante utilizar.

Como la lista de aplicaciones se hace en un entorno de desarrollo profesional, voy a hacer la mia para entorno Windows. Realmente en Mac todavía no he hecho nada serio, y reconozco que la programación en entorno Mac es mi asignatura pendiente. Aqui va mi lista de herramientas.

En cuanto a hardware, utilizo un iMac de 17″, el modelo de principios de 2007, con 2GB de RAM y disco de 250GB. El teclado que venía con el iMac no me gustaba y tuve la suerte de que me regalaron un teclado de aluminio, y puedo decir que es el teclado más cómodo que he usado en mi vida. El ratón es el Mighty Mouse de cable que venía de serie. Además uso un disco duro externo Lacie para hacer copias de seguridad y un lapiz USB de 4GB. Tengo Windows XP instalado en una partición del disco mediante BootCamp y me va de cine. Intento no instalar aplicaciones para probar en este Windows, sino que uso una máquina virtual con VirtualBox con otro XP donde hago todas los experimentos que no me atrevo con el de trabajar.

Software de desarrollo xBase:

  • xharbour, fivewin harbour y las clases de CanalFive.
  • PellesC como editor de recursos.
  • HippoEdit mi editor preferido, ya no uso otro.
  • Free UPX para comprimir los ejecutables.
  • OZS WinDbu para editar ficheros DBF
  • Inno setup para montar los paquetes de instalación.

Otro software:

Cada vez uso menos programas. Antes me pasaba el día probando aplicaciones, pero cada vez hago esto menos. Hace mucho tiempo que no instalo nuevo software en Windows, simplemente no lo necesito y me apaño con lo que tengo. Cosas del decluttering.

Hasta aquí el software que uso en Windows. A ver si los lectores del blog os animais a hacer un post similar y publicais el enlace en los comentarios.