Hola foro.
Refloto el hilo porque yo tengo el mismo problema… pero aumentado…
El problema esta en el formulario mas importante de mi aplicacion. Es un pedazo formulario con docenas de campos, varias pestañas, un monton de condiciones de visibilidad (sencillas) y usa bastantes controles con contenido formulas.
En los campos edicion normales (no multilineas) se nota cierta lentitud al teclear, que se hace mucho mas evidente si borras una frase usando Retroceso. Es lento pero se puede usar si no eres un fiera tecleando muy rapido (menos mal que mis usuarios no lo son). Pero extrañamente, si pulso en el campo edicion objeto texto (multilina) se ralentiza muuuucho más.
NO HAY VARIABLES GLOBALES. NO HAY CAMPOS PUNTEROS EXOTICOS. Solo campos normales (eso si, a punta pala), 6 pestañas, muchas expresiones basadas en campos (sencillas, sin cosas raras), y muchas condiciones de visibilidad (todas sencillas, las hago con variables locales booleanas precalculadas o con expresiones sencillas contra campos de la propia tabla).
Bueno el problema es (probado en V 7.16 si slguien lo prueba en v 7.17 se lo agradeceria)…
-
Si tecleas una simple letra en un campo de edicion alfabetica. SE REFRESCA TODO EL FORMULARIO, PESTAÑAS, FORMULAS. SE REFRESCA TODO DEL TODO. Si te va lento apañatelas para optimizar. Funciona como bien dicen el resto de compañeros. Esto en principio se puede suponer correcto.
-
En caso del control edicion de objeto TEXTO: el puto formulario SE REFRESCA DOS VECES. NO UNA. SINO DOS. A JODERSE.
¿Sabeis como lo adivine? Os lo cuento por si alguien quiere hacer pruebas… Me encantaria estar equivocado.
Cuando mis usuario me informaron del problema, pues estuve unas cuantas horas haciendo pruebas, por prueba y test, claro. Despues de un buen rato quitando y poniendo cosas, a ver si detectaba que ralentiza mas la edicion del objeto texto, pues llegue a la conclusion de que lo que mas ralentizaba la aplicacion era la llamada a una funcion, que utilizaba en 7 sitios.
La funcion simplemente recibe una fecha, y devuelve la palabra “HOY”, “AYER” o “MAÑANA” comparando con currentDate() si la fecha es uno de esos dias, y sino devuelve fecha formateada como texto. Esta funcion la utilizaba en el Contenido de controles de edicion alfabetico de solo lectura, y como he dicho la llamaba en siete sitios.
Cuando empece a sospechar de ella, ni sabia cuantas veces la llamaba, asi que le puse un mensaje “Me han llamado” dentro de la funcion, para ir contando los mensajes (cutre, eh). Muy bien, asi supe que la utilizaba en 7 puntos…
Bien, ahora el comportamiento extraño de Velneo (otro más, y van…):
- Si pulso una tecla en un campo edicion alfabetica, se hacen 7 llamadas. Supongo correcto.
- Si pulso una tecla en un campo edicion objeto texto, se hacen 14 llamadas. ¿Alguien me lo explica?.
Y mas importante aun, ¿alguien confirma/desmiente este “doble refresco” en los controles edicion objeto texto de la v 7.17?
Y no. No lo he reportado a soporte. Deberian saberlo de puta sobra… Que lean el foro si quieren, y que lo arreglen tambien si quieren. Hace mucho que deje de creer en la utilidad de reportar estas cosas a soporte. Me cuesta creer que Velneo no sepa esto.
Un dia de estos me tocara optimizar ese formulario, y tengo unas cuantas ideas al respecto. Cuendo llegue el momento de hacerlo os contare como fue (y seguramente os pida ayuda, je, je). Pero la funcion de fechas me temo que tendre que “eliminarla”.
Si alguien se anima a hacer pruebas, tambien me gustaria confirmar/desmentir que la llamada a funciones en el Contenido de controles ralentizan el refresco de los formularios. Mis pruebas apuntan por ahi.
Repito, todo esto lo probado en v 7.16. La 7.17 no la uso todavia.
Saludos.