Extraño comportamiento de TBUTTON en tactil

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

Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by Antonio Linares »

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

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Extraño comportamiento de TBUTTON en tactil

Post by karinha »

Code: Select all

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

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by Antonio Linares »

Puedes probar con este ejemplo ?

Code: Select all

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

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by Antonio Linares »

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

Antonio Linares
www.fivetechsoft.com
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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

SkinButtons()
 
El msginfo se nos presenta dos veces, por eso no me pasaba con los btnbmp
Un saludo
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Extraño comportamiento de TBUTTON en tactil

Post by cnavarro »

Que version de Fw estas usando?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

Cristobal:
Estoy usando la de Abril de este año, la 1504 con borland c 5.82
Un saludo
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Extraño comportamiento de TBUTTON en tactil

Post by cnavarro »

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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Extraño comportamiento de TBUTTON en tactil

Post by karinha »

Que tal?

Code: Select all

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

Re: Extraño comportamiento de TBUTTON en tactil

Post by groiss »

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
Post Reply