Imagen en Columna de Xbrowse superpone acciones

Post Reply
User avatar
VictorCasajuana
Posts: 269
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Has thanked: 1 time
Contact:

Imagen en Columna de Xbrowse superpone acciones

Post by VictorCasajuana »

Hola.

Intento incluir 2 imágenes en una columna del xBrowse para realizar acciones de disminución o aumento del valor de la columna. Funciona todo bien, pero cuando hago doble click sobre la imagen de la izquierda ( menos ) ejecuta la función de la imagen de la derecha ( más ). En la captura animada no aparece la imagen pero la acción sí que se realiza.
Hay alguna forma de interceptar ese doble click en la imagen de la izquierda ( menos ) para que no haga ninguna funcionalidad?

Lo he probado con el siguiente código:

Code: Select all | Expand


#include "fivewin.ch"

function TestMain()

   local oWnd, oBar, oBrw

   DEFINE WINDOW oWnd

   @ 0,0 XBROWSE oBrw OF oWnd;
      COLUMNS 1;
      HEADERS "numero";
      ARRAY {1,2,3,4}

   WITH OBJECT oBrw
      :CreateFromCode()

      WITH OBJECT :aCols[1]
            :nDataStrAlign := AL_CENTER
            :AddBitmap( { FW_BmpPlus(), FW_BmpMinus() } )

            :nEditType     := EDIT_BUTTON
            :bEditBlock    := { |r,c,oCol| oCol:VarPut( oCol:Value + 1 ) }
            :nBtnBmp       := 1
            :lBtnTransparent  := .t.

            :bBmpData      := { |v,lSel| If( lSel, 2, 0 ) }
            :bBmpAction    := { |oCol| oCol:VarPut( oCol:Value - 1 )  }
        END

   END

   ACTIVATE WINDOW oWnd

return nil
 


El resultado es el siguiente, las pulsaciones iniciales funcionan bien, pero las últimas pulsaciones que hago en el botón menos son con doble click
Image

gracias y salud!
--------
¿ Y porque no ?
¿ And why not ?
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Imagen en Columna de Xbrowse superpone acciones

Post by cnavarro »

Victor

Code: Select all | Expand


         WITH OBJECT :oCol( 5 )
            :nDataStrAlign  := AL_CENTER
            :nWidth         := 100
            :AddBitmap( { "PLUS1", "MIN1" } )
            // Right Button
            :nEditType       := EDIT_BUTTON
            :bEditBlock      := { | r, c, oCol | if( Valtype( oCol ) = "O", oCol:Value + 1, ) }
            :nBtnBmp         := 1
            :lBtnTransparent := .t.
            // Left Button
            :bBmpData        := { | v, lSel | 2 } //if( lSel, 2, 0 ) }
            :bBmpAction      := { | oCol | if( Valtype( oCol ) = "O", oCol:VarPut( if( oCol:Value > 1, oCol:Value - 1, oCol:Value ) ), ) }
    END
 
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
VictorCasajuana
Posts: 269
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Has thanked: 1 time
Contact:

Re: Imagen en Columna de Xbrowse superpone acciones

Post by VictorCasajuana »

Gracias por la rápida respuesta Cristobal.

He probado tu código y el comportamiento es el mismo, cuando pulsas doble click en el botón de "menos" hace las 2 acciones, primero evalúa el bEditBlock y luego el bBmpAction
--------
¿ Y porque no ?
¿ And why not ?
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Imagen en Columna de Xbrowse superpone acciones

Post by cnavarro »

Victor, parece ser que no había entendido tu pregunta, prueba añadiendo esto en la definición de la columna

Code: Select all | Expand



            :bLDClickData    := { | nR, nC, nK, oCol | .T. }
 
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
VictorCasajuana
Posts: 269
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Has thanked: 1 time
Contact:

Re: Imagen en Columna de Xbrowse superpone acciones

Post by VictorCasajuana »

Esa era la clave Cristobal!

ahora funciona perfecto, el blDClickData intercepta el dobleclick para que no haga nada.

Dejo el código que funciona por si a alguien más le sirve.

Code: Select all | Expand



#include "fivewin.ch"

function TestMain()

   local oWnd, oBar, oBrw

   DEFINE WINDOW oWnd

   @ 0,0 XBROWSE oBrw OF oWnd;
      COLUMNS 1;
      HEADERS "numero";
      ARRAY {1,2,3,4}

   WITH OBJECT oBrw
      :CreateFromCode()

      WITH OBJECT :aCols[1]
         :nDataStrAlign  := AL_CENTER
         :nWidth         := 100
         :AddBitmap( { FW_BmpPlus(), FW_BmpMinus() } )
         // Right Button
         :nEditType       := EDIT_BUTTON
         :bEditBlock      := { | r, c, oCol | if( Valtype( oCol ) = "O", oCol:Value + 1, ) }
         :nBtnBmp         := 1
         :lBtnTransparent := .t.
         // Left Button
         :bBmpData        := { | v, lSel | 2 } //if( lSel, 2, 0 ) }
         :bBmpAction      := { | oCol | if( Valtype( oCol ) = "O", oCol:VarPut( if( oCol:Value > 1, oCol:Value - 1, oCol:Value ) ), ) }
         :bLDClickData    := { | nR, nC, nK, oCol | .T. }
      END

   END

   ACTIVATE WINDOW oWnd

return nil
 


Gracias y salud!
--------
¿ Y porque no ?
¿ And why not ?
Post Reply