Imagen en Columna de Xbrowse superpone acciones

Imagen en Columna de Xbrowse superpone acciones

Postby VictorCasajuana » Wed Jan 12, 2022 4:13 pm

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 view

#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
VictorCasajuana
 
Posts: 194
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs

Re: Imagen en Columna de Xbrowse superpone acciones

Postby cnavarro » Wed Jan 12, 2022 4:38 pm

Victor

Code: Select all  Expand view

         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
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Imagen en Columna de Xbrowse superpone acciones

Postby VictorCasajuana » Thu Jan 13, 2022 8:48 am

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
VictorCasajuana
 
Posts: 194
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs

Re: Imagen en Columna de Xbrowse superpone acciones

Postby cnavarro » Thu Jan 13, 2022 12:36 pm

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 view


            :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
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Imagen en Columna de Xbrowse superpone acciones

Postby VictorCasajuana » Thu Jan 13, 2022 1:37 pm

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 view


#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 ?
User avatar
VictorCasajuana
 
Posts: 194
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 93 guests