He aquí algo a lo que no encuentro explicación, y es el comportamiento tan curioso de los botones de este diálogo:
- Code: Select all Expand view RUN
- FUNCTION salidas()
LOCAL oDlg, oFont, oCursor, oRes, cRes := " 1"
LOCAL oGet, cGet := substr(time(),1,5)
LOCAL oBt1,oBt2,oBt3,oBt4,oBt5,oBt6,oBt7,oBt8,oBt9,oBt0,oBtC
DEFINE FONT oFont NAME "Seaoge" SIZE 0, -25
DEFINE DIALOG oDlg FROM 60,60 TO 320, 450 TITLE "Salida" FONT oFont PIXEL
@ 1,1 SAY "Hora:" of odlg
@ 1,7 SAY oget PROMPT cget of odlg
@ 1 , 18 BUTTON oBt1 PROMPT "+" OF oDlg ACTION {obt7:setfocus(),cget:=muevetime(cget,.t.),oget:settext(cget),inkey(.5)} FONT oFont
@ 1 , 24.5 BUTTON oBt2 PROMPT "-" OF oDlg ACTION {obt7:setfocus(),cget:=muevetime(cget,.f.),oget:settext(cget),inkey(.5)} FONT oFont
@ 6 , 12 BUTTON oBt7 PROMPT "Cerrar" OF oDlg ACTION (oDlg:End()) FONT oFont SIZE 46,13 CANCEL
ACTIVATE DIALOG oDlg VALID (oFont:End(),.T.)
RETU nil
function muevetime(tiempo,suma)
Local ntime:=0,ctime:="",nhoras
nhoras:=val(substr(tiempo,1,2))
ntime:=val(substr(tiempo,4,2))
if suma
ntime++
else
ntime--
endif
if ntime=60
nhoras++
ntime:=0
endif
if ntime<0
nhoras--
ntime:=59
endif
if nhoras<0
nhoras:=23
endif
if nhoras>23
nhoras:=0
endif
ctime:=padl(alltrim(str(nhoras,2,0)),2,"0")+":"+padl(alltrim(str(ntime,2,0)),2,"0")
return ctime
Ejecutando la aplicación en un pc de sobremesa, o en un portatil, todo va como la seda, pero si lo hago en una tablet basada en windows y usando la pantalla tactil, cada vez que pulso alguno de los botones me hace dos incrementos o dos decrementos, es decir como si los hubiera pulsado dos veces. Por ese motivo les he quitado el foco nada mas dispararse la acción, y les he provocado un retardo, y sigue exactamente igual, hace un incremento al pulsarse el boton y otro al soltarse.
¿Hay alguna forma de evitar que esto suceda?
Muchas gracias