Extraño comportamiento de TBUTTON en tactil

Extraño comportamiento de TBUTTON en tactil

Postby groiss » Tue Oct 20, 2015 2:25 pm

Buenas tardes:
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
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
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby Antonio Linares » Tue Oct 20, 2015 2:45 pm

En vez de darle el foco directamente a oBt7, inténtalo así:

{oBt1:oJump := obt7,cget:=muevetime(cget,.t.),oget:settext(cget),inkey(.5)}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Tue Oct 20, 2015 5:03 pm

Antonio, gracias.
El quitarle el foco, así qomo hacer una pausa de medio segundo, era por sila lectura de la pulsación era tan rápida que el tactil me leyera nos pulsaciones, pero no. Tu sugerencia tampoco es efectiva, viéndolo da la sensación como que la acción se ejecuta dos veces, una al pulsar el boton y la otra al soltarsepor que con el inkey puesto veo como el contador se incrementa hay una pausa y se incrementa otra vez, lo cual indica que el say se ha refrescado dos veces, en conclusión que la acción del boton se ha ejecutado por duplicado, ¿es posible?
Seguiré dandole vueltas, o para reparar ese comportamiento extraños o para darle un rodeo.
Saludos
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby karinha » Tue Oct 20, 2015 5:12 pm

Code: Select all  Expand view

#include "FiveWin.ch"

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 ;
          COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

   @ 1,1 SAY "Hora:" of odlg

   @ 1,7 SAY oget PROMPT cget of odlg UPDATE

   /*
   @ 1, 18   BUTTON oBt1 PROMPT "+" OF oDlg ;
      ACTION { cget:=muevetime(cget,.t.),oget:settext(cget), ;
               inkey(.5, obt7:setfocus() ) }  FONT oFont
   */


   @ 1, 18   BUTTON oBt1 PROMPT "+" OF oDlg ;
      ACTION ( cget:=muevetime(cget,.t.), ;
               oget:settext(cget), SysWait(.5), oBt1:oJump := obt7, ;
                                                obt7:setfocus() )

   /*
   @ 1, 24.5 BUTTON oBt2 PROMPT "-" OF oDlg ;
      ACTION {obt7:setfocus(),cget:=muevetime(cget,.f.),oget:settext(cget), ;
              inkey(.5)}  FONT oFont
   */


   @ 1, 24.5   BUTTON oBt2 PROMPT "-" OF oDlg ;
      ACTION ( cget:=muevetime(cget,.f.), ;
               oget:settext(cget), SysWait(.5), oBt1:oJump := obt7, ;
                                                obt7:setfocus() )

   @ 6, 12   BUTTON oBt7 PROMPT "Cerrar" OF oDlg ;
      ACTION ( oDlg:End() ) FONT oFont SIZE 46,13 CANCEL UPDATE

   ACTIVATE DIALOG oDlg CENTERED

   oFont:End()

   CLEAR MEMORY

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
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7824
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 6:00 am

Joao:
Muchas gracias, pero aún así se mantiene el mismo comportamiento, se pulsa el boton se produce el incremento del contador como muesta el say, pasa un tiempo de 0.5 segundos como indica el sysrefresh(.5), y se produce un nuevo incremento en el contador.
Resumiento trabajando con el ratón pulso una vez el tbutton y se ejecuta una vez la acción, pero si pulso una vez la pantalla táctil se ejecuta dos veces la acción, probado en winduws 8.1 y windows 10, ya que no tengo ningún windows 7 en tablet.
Un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby Antonio Linares » Wed Oct 21, 2015 7:55 am

Puedes probar con este ejemplo ?

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg
   
   DEFINE DIALOG oDlg
   
   @ 2, 2 BUTTON oBtn PROMPT "Test" ACTION MsgInfo( "ok" )
   
   ACTIVATE DIALOG oDlg CENTERED   

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 8:10 am

Antonio:
En ese ejemplo todo funciona a la perfección, pero es que el foco se pierde del dialogo principal, por lo que sea el problema solo se produce cuando tenemos el foco en algún elemento del dialogo y usando el tactil si en lugar del tactil se hace con el raton, no hay comportamiento anómalo.
He probado usando la calse Tbtnbmp, y en ella todo se desarrolla sin problemas, sólo ocurre con la tbutton.
Un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby Antonio Linares » Wed Oct 21, 2015 8:18 am

Puedes proporcionar un ejemplo pequeño, como el que yo he proporcionado, para poder probarlo ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 8:53 am

Antonio:
El problema no es de la clase, por fin he dado con el quiz de la cuestión. Si a tu ejemplo le añadimos la línea:
Code: Select all  Expand view

SkinButtons()
 

El msginfo se nos presenta dos veces, por eso no me pasaba con los btnbmp
Un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby cnavarro » Wed Oct 21, 2015 9:58 am

Que version de Fw estas usando?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6548
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 10:13 am

Cristobal:
Estoy usando la de Abril de este año, la 1504 con borland c 5.82
Un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby cnavarro » Wed Oct 21, 2015 10:37 am

groiss wrote:Cristobal:
Estoy usando la de Abril de este año, la 1504 con borland c 5.82
Un saludo


Dame un correo y te comento para que pruebes un par de posibilidades
Saludos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6548
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 11:21 am

cnavarro wrote:Dame un correo y te comento para que pruebes un par de posibilidades
Saludos


Cristobal me correo jlgroiss @rroba gmail.com

Un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Postby karinha » Wed Oct 21, 2015 11:51 am

Que tal?

Code: Select all  Expand view

// Testing FiveWin own meter controls

#include "FiveWin.ch"

static oDlg

//----------------------------------------------------------------------------//

function Main()

   local nActual := 0, oMeter

   SKINBUTTONS()

   DEFINE WINDOW oDlg FROM 1, 1 TO 12, 44 ;
      TITLE "Testing the Meter controls"

   @ 2, 2 METER oMeter VAR nActual TOTAL 50 OF oDlg SIZE 135, 12

   @ 5, 5 BUTTON "&Decrease" OF oDlg SIZE 60, 16 ;
      ACTION oMeter:Set( nActual - 1 )

   @ 5, 15 BUTTON "&Increase"   OF oDlg SIZE 60, 16 ;
      ACTION oMeter:Set( nActual + 1 )

   ACTIVATE WINDOW oDlg

return nil

//----------------------------------------------------------------------------//

procedure AppSys   // XBase++ requirement

return

//----------------------------------------------------------------------------//
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7824
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Extraño comportamiento de TBUTTON en tactil

Postby groiss » Wed Oct 21, 2015 2:49 pm

Joao:
El problema sólo aparece cuando el "buttom" está con el "skinbuttoms()" y trabajando en un dispositivo tactil, en el ejemplo que ha puesto Antonio, si al comienzo añadimos la función skinbuttoms(), pasa a comportarse de forma anómala, siempre que la pulsación del buttom se haga directamente con el dedo, no ocurre si lo hacemos con un ratón conectado a la tablet.
Por el momento y sabiendo que el causante parece ser el uso de "skinbuttoms()" he cambiado los "button" por "btnbmp"

Gracias y un saludo
groiss
 
Posts: 224
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 31 guests