Extraño comportamiento de TBUTTON en tactil

groiss
Posts: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

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 | Expand

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: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
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: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

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: 7942
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by karinha »

Code: Select all | Expand


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

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: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by Antonio Linares »

Puedes probar con este ejemplo ?

Code: Select all | Expand

#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: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

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: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
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: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

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 | Expand


SkinButtons()
 

El msginfo se nos presenta dos veces, por eso no me pasaba con los btnbmp
Un saludo
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Extraño comportamiento de TBUTTON en tactil

Post by cnavarro »

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

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: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

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

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: 7942
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Extraño comportamiento de TBUTTON en tactil

Post by karinha »

Que tal?

Code: Select all | Expand


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

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