Principal Descripción Descargar Accesorios Actualizaciones Preguntas Novedades Precios Claves y Pagos Información Tutoriales Horarios Vídeos Consultas Facebook

Para los loquitos de la tecla INTRO:


En Magisfor, pulsando INTRO se ejecutan muchas automatizaciones. Puse la tecla INTRO por defecto para que el usuario no tuviera que usar el ratón y pudiera ir más rápido, el problema es que hay usuarios ansiosos que pulsan la tecla INTRO enloquecidamente y no la sueltan. Esto es FATAL ya que la secuencia de teclas pulsadas se acumula y puede haber muchos INTROS seguidos acumulados, con lo cual Magisfor puede fallar ya que cuando está en un bucle, sin salir de él, recibe otro INTRO y otro y otro y se vuelve a ejecutar la misma secuencia de código varias veces.

Podía suceder por ejemplo:
-Que se guardara dos veces la misma fórmula valorada, una bien y otra con número de registro cero. (O que se guardaran más de 2, todas mal)
-Que se insertasen muchos registros basura en blanco en el recetario
Y cosas peores...

Para TRATAR de evitar eso, en cada subrutina (Procedimiento) de código que se lee, he tenido que poner una variable boleana estática de manera que al entrar está = False y eso permite leer todo el procedimiento, pero en siguiente línea la variable se pone = True de manera que si se entra otra vez sin haber terminado el procedimiento, Magisfor te saca y no permite leerlo.
Al salir despues de haber leído el código se pone = False para que la próxima vez puedas entrar y leer todo el código

Ejemplo:

La variable la denomino 'noEntres'
Y un procedimiento de ejemplo puede ser cuando se están valorando los productos de una fórmula:

Private sub ValorarProductos()

Static noEntres as Boolean (declaro la variable que inicialmente tiene el valor = False)

If noEntres = True then exit sub (si es = True, te saca del Sub)
noEntres = True (la activo para que no se pueda entrar hasta que no se acabe de leer todo el código de este Sub)

Aquí se lee el código para valorar los productos....
...............
...............

noEntres = False (al terminar y antes de salir la pongo = False para que la próxima vez que entre pueda leer todo el código de este Sub

End Sub

Esto he tenido que hacerlo en todos los Procedimientos (Sub...) de un recorrido (ejemplo cuando seleccionas la fórmula, la valoras y la guardas en el recetario, se leen muchísimos Procedimientos y casi todo se hace con un INTRO).

Funciona bien pero si pulsas la tecla INTRO muy enloquecidamente, algunas cosas he tenido que arreglarlas de otra manera:
Por ejemplo cuando se termina de valorar se muestra una ventana con los envases para que el usuario elija uno. En el modo para elegir un solo envase (no múltiples), para mayor velocidad, en la ventana de envases el botón Aceptar está seleccionado de forma predeterminada con lo cual el usuario selecciona un envase, pulsa INTRO y se elige el envase y se sale de esa ventana. Si hay muchos INTRO en cola, Magisfor abre la ventana de envases, pero inmediatamente recibe un INTRO de esa cola con lo cual es como si pulsara el botón Aceptar y sales enseguida, ni siquiera se llega a ver la ventana de envases.
La única solución posible aquí ha sido que al abrir la ventana de envases, quede seleccionado un envase de la lista (y no el botón Aceptar), de esta forma los INTRO en cola no interfieren. Ahora el usuario puede elegir su envase pero para seleccionarlo y salir debe pulsar primero la barra de ESPACIO que coloca el cursor en el botón Aceptar y luego basta un INTRO para seleccionar el envase y salir.

La solución ideal, sería PROHIBIR pulsar la tecla INTRO y usar el ratón y los botones, pero como sé que vais a protestar sin parar porque queréis ir muy rápido, dejo el INTRO como tecla por defecto para avanzar, pero es necesario que comprendáis que no se puede pulsar enloquecidamente porque los INTRO SE ACUMULAN.
Todo eso se acentúa si además el usuario trabaja no en el servidor, sino desde un puesto de trabajo que lógicamente va más lento. El usuario trata de avanzar más rápido pulsando repetidamente la tecla INTRO.