Prologo: Quitando comboboxes – hace seis años.
En el caso de campos que son claves ajenas sobre otras tablas, pienso que se debe combinar la facilidad de la introducción de los datos correctos con la capacidad para dar de alta valores nuevos en la tabla auxiliar de una manera directa, y esto último no se puede hacer con comboboxes. Para ello utilizo una combinación de cuadro de texto donde el usuario escribe el valor del campo, y un botón que muestra un formulario de selección de valores. Si el usuario quiere escribir el valor de la clave ajena lo puede hacer directamente y el programa lo valida sobre la tabla auxiliar. Si el valor no está dado de alta en la tabla auxiliar el programa pregunta si se quiere dar de alta, y en caso afirmativo presenta el formulario de alta de la tabla auxiliar. Si el usuario no quiere escribir el valor, puede usar el botón que muestra el formulario de selección y elegir un valor o darlo de alta.Esta manera de hacer las cosas está bien, pero no es perfecta. Como me han comentado varios usuarios de mis programas, lo correcto sería que funcionase un autocompletado del campo de texto sobre el campo que es clave ajena en el mismo. Teclear los valores cada vez es pesado y lleva a errores si no recuerdas como has dado de alta cada valor. Por otra parte el soltar el teclado para hacer click en el botón y seleccionar el valor es un engorro que te hace perder tiempo, sobre todo si tienes que dar de alta muchos registros.
Fisgoneando por los foros de Fivetech encontré una clase TAutoGet que hace precisamente esto, un autocompletado sobre un array donde previamente se han introducido los valores. Incorporar esta clase a un programa es muy sencillo, basta con cargar los valores de los arrays de autocompletado antes de editar el campo correspondiente. Los resultados son espectaculares. Conforme tecleas las primeras letras del valor, te van apareciendo los valores que coinciden coon ellas. Una vez tienes el valor que quieres, con un tab validas el nombre y saltas al siguiente campo. Es mucho más cómodo que soltar el teclado, hacer click en el botón de al lado y ponerte a buscar el valor que quieres introducir. Pocas veces una clase tan pequeña me ha dado unos resultados tan espectaculares. Pura dinamita.
Para los perezosos de visitar el foro de Fivetech dejo un fichero con la clase TAutoGet completa: código fuente, fichero de preprocesado y un pequeño ejemplo, todo sacado del foro. Tengo ya el autocompletado implementado en Findemes, y estará disponible en la próxima versión que vamos a publicar el breve. Ahora estoy pensando en si el autocompletado irá en la edición gratuita o unicamente en la registrada, pero eso es otra historia.
Por fín solucionada una de las carencias históricas de tus programas. Enhorabuena José Luis, un grandísimo avance, y además con poco esfuerzo 😉
He estado probando la clase y me da el siguiente error: Message not found: TAUTOGET:_BPOSTKEY. Me imagino que se refiere a la variable de instancia ::bPostKey que no se necuentra en la clase declarada en la clase. Compilo con fwh 2.7 y xharbour 0.99.60. Muchas gracias por este aporte
Jaime: La verdad es que el autocompletado lo he tenido en la cabaza mucho tiempo. Luego te mando la beta de FDM y lo ves, es impresionante el tiempo que quita de teclear. También lo estoy implementando en Cuaderno de Bitácora, pero ahi hay muchas tablas auxiliares y me lleva más tiempo. Me alegro de verte por aqui.
Horacio: yo cogí la clase tal cual estaba en el foro y la usé. Dirigete al foro con el error a ver si Maurilo o James te lo solcionan. Intentalo porque la clase vale la pena.
Saludos,
OT:
Como indicas en el comentario que estar realizando la nueva version de Findemes, te comento que hemos visto la version gratuita para algunos clientes que nos pedian un programa con esas caracteristicas, pero nos topamos con el inconveniente que solo implemetas un iva por factura, y nosotros estamos en Canarias y podemos tener hasta 4 IGIC por factura, aunque habitualmente se usan 2.
No se pretende tener informes fiscales, es simplemente no tener que estar cojiendo la calculadora con cada factura que mecanizas y sumando los importes de IGIC para incluirlos en el programas. Y ya que estamos, ¿se podria poner que se use el literal «IVA» o «IGIC»?
Un saludo Jose Luis desde Canarias
Gracias José Luis. veré si en el foro me orientan