Usuarios ansiosos !!

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 134
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 1 time
Been thanked: 4 times

Usuarios ansiosos !!

Post by edufloriv » Wed May 16, 2018 10:58 pm

Saludos amigos,

¡¡ Me han tocado unos usuarios ansiosos !! - Tengo asignada la tecla F3 para grabar una operación, pero estos usuarios cuando la pulsan para grabar (en esta caso la proforma) la pulsan repetidas veces de forma muy rápida (no usan mouse) y me estuvieron generando doble grabado. Como puedo limpiar el buffer del teclado para que ignore las pulsaciones extras al final del proceso.

A continuación el fragmento de código que graba la operación:

Code: Select all

*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*

PROC VentasGrabar

LOCAL cNewProforma

FOR nLap = 1 TO 1000000
NEXT
IF FILE(PRF_GRABA)
   RETURN
ENDIF
Win_Ventas.VentasBarra.Enabled := .F.
DO EVENTS
MEMOWRIT( PRF_GRABA , 'Grabando' )

IF CheckLiceOk()
   IF VentasHayItems()
      IF VentasControl()
         IF LENNOSPC(Win_Ventas.TxtClieDes.Value) = 0
            VentaFijaCliente()
         ENDIF
         cNewProforma := GrabaProforma()
         IF VAL(cNewProforma) > 0
            IF LEN(VH_DATCON) > 0
               RegControlProf( cNewProforma ) // VentControl.prg
            ENDIF
            VentProforma( VAL(cNewProforma) )
            VentasIniciar()
         ENDIF
      ENDIF
   ELSE
      MsgExclamation('No hay artículos para grabar')
   ENDIF
ENDIF

Win_Ventas.VentasBarra.Enabled := .T.
DO EVENTS
DELETE FILE (PRF_GRABA)
CLEAR TYPEAHEAD  // <-- Aqui trato de limpiar pero no resulta, igual almacena las pulsaciones.

RETURN
Agradeceré su ayuda.


Saludos cordiales,

Eduardo Flores Rivas


LIMA - PERU

User avatar
BeGeS
Posts: 119
Joined: Fri Jul 14, 2017 10:45 am
DBs Used: DBF
Location: La Mancha, Spain
Has thanked: 31 times
Been thanked: 21 times

Post by BeGeS » Thu May 17, 2018 8:22 am

Intenta probar con esto (yo no lo he probado :roll: ).

Code: Select all

WHILE ! IGNORAF1()==0 ; END

// --- Mientras se pulse F1 devuelve 1, y con otra tecla devuelve 0 ---
FUNCTION IGNORAF1()
LOCAL VKPULSA:=HMG_GETLASTVIRTUALKEYDOWN()

   IF VKPULSA<>VK_F1
	 RETURN 0
   ENDIF

RETURN 1
I get by with a little help from my friends

martingz
Posts: 232
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 12 times
Been thanked: 9 times

Post by martingz » Fri May 18, 2018 2:06 am

edufloriv
prueba deshabilitando la tecla , terminas de grabar y la vuelves a habilitar, me funciono para esos usuarios desesperados, no muy elegante pero efectiva
estoy buscando lo del borrado del buffer por alguna parte vi algo

Post Reply