Page 1 of 1

Una mas de TXBrowse

Posted: Fri Mar 31, 2023 3:12 am
by Armando
Amigos y colegas:

Sigo liado con mi primer TXBrowse con FASTEDIT, me explico, ojala me puedan ayudar
Tengo el TXBrowse con tres columnas, Cantidad, Unitario e Importe

Code: Select all | Expand

            WITH OBJECT :Cantidad
               :cEditPicture  := "@ZK 99,999"
            END

            WITH OBJECT :Unitario
               :cEditPicture  := "@Z 999,999.99"
            END

            WITH OBJECT :Importe
               :nFooterType   := AGGR_SUM
            END

            :MakeTotals()
 
La columna importe no es editable, debe ser calculada multiplicando la columna Cantidad por la columna Unitario
y necesito obtener la suma de la columna importe, solo las columnas Cantidad y Unitario son editables

Seguramente para ustedes la solución es sencilla pero yo llevo varias horas y no doy pie con bola.

Saludos

Re: Una mas de TXBrowse

Posted: Fri Mar 31, 2023 11:40 am
by MarioG
Hola Armando
Esta es una forma de resolverlo:

Code: Select all | Expand

WITH OBJECT :Importe
   :cDataType    := "N"
   :cEditPicture := PIC_NUEVECIFED     // picture "@E 999,999.99"
   :nHeadStrAlign:= :nFootStrAlign:= AL_RIGHT
   :nFooterType  := AGGR_SUM
   :nEditType    := EDIT_GET

   :bOnPostEdit  := {|o, nVal, nK| if( nK != VK_ESCAPE, ( o:Value:= nVal, Eval( bCalculaIVA ), ;
                                                        if( ::aMateriales[aO[_oBrwDeta]:nArrayAt][_IDMat] == 0, ;
                                                            ( aO[_oBrwDeta]:nColSel:= _Detalle ), nil ) ), ) }   
END

/* Referencia
   nVal es el valor introducido
   Importe esta contenido en un multiarray
   bCalculaIVA es un bloque de codigo donde hago _ que afectan a resultado final de Importe
   Alli incluyo :MakeTotals(), :RefreshFooters() y :Refresh del browse para luego posicionar en la 2da
   columna, de las siguiente linea, para agregar buscar otro registro 
*/
Saludos!

Re: Una mas de TXBrowse

Posted: Fri Mar 31, 2023 12:02 pm
by Armando
Hola Mario:

Te agradezco el código, voy a intentar adaptarlo a mis necesidades aunque de entrada
veo una diferencia, mi columna IMPORTE no es editable, es el resultado de multiplicar
la columna CANTIDAD por la columna UNITARIO, pero lo voy a intentar.

Saludos

Re: Una mas de TXBrowse

Posted: Fri Mar 31, 2023 2:25 pm
by FranciscoA
Armando, este trozo de codigo puede servirte:

Code: Select all | Expand

  WITH OBJECT oBrw:Codigo 
      :bEditValid     := { |oGet| oGet:VarGet() > 0 }
      :bOnChange      := { |oCol| oBrw:Descrip:Value := "Codigo " + Str(oBrw:Codigo:Value,4) }
   END

WITH OBJECT oBrw:Cantidad
      :bEditWhen      := { || ! Empty( oBrw:Codigo:Value ) }
      :bOnChange      := { || oBrw:MakeTotals(), oBrw:RefreshFooters() }
      :bEditValid     := { |oGet| oGet:VarGet() > 0 }
   END

   WITH OBJECT oBrw:Unitario 
      :bEditWhen      := { || ! Empty( oBrw:Codigo:Value ) .and. ! Empty( oBrw:Cantidad:Value ) }
      :bOnChange      := { || oBrw:MakeTotals(), oBrw:RefreshFooters() } 
      :bEditValid     := { |oGet| oGet:VarGet() > 0 }
   END

   WITH OBJECT oBrw:Importe
      :bEditValue     := { || oBrw:Cantidad:Value * oBrw:Unitario:Value }
      :cEditPicture   := "999,999,999.99"
      :nFooterType    := AGGR_SUM
   END
 
Saludos

Re: Una mas de TXBrowse

Posted: Sat Apr 01, 2023 1:19 am
by Armando
Francisco:

Muchas gracias, lo probaré.

Saludos

Re: Una mas de TXBrowse

Posted: Sat Apr 01, 2023 4:59 pm
by Armando
Hola Francisco:

Tu solución me funcionó al 100%, abusando de tu amabilidad te cuento...
tengo dos necesidades más, todo con un Browse FASTEDIT

1.- En el siguiente código no logro que aparezca el BMP Bus16, es un EDIT_GET_BUTTON
Leandro me dio una solución pero no logré hacerla funcionar, Saludos Leandro.

Code: Select all | Expand

WITH OBJECT :Material
     :cOrder          := "A"
     :cEditPicture  := "@!K"
     :AddResource("Bus16")
     :bEditBlock    := { | | BrwMat(oDlg)  }
     :bEditValid    := { | oGet | ValMat(oGet:VarGet()) }
END
 
2.- Después de agregar un registro en blanco (:bPastEof) si el usuario ya no lo quiere
cómo puedo eliminarlo, varios editores utilizan la tecla flecha arriba para eliminarlo
si es que no hay campos con valor. Tal vez si pudiera interceptar el movimiento del
cursor en el Browse?

Debo aclarar que estoy actualizando la tabla directamente a través de su recordset, es decir, no utilizo arreglos.

Code: Select all | Expand

        REDEFINE XBROWSE oBry ID 401 OF oDlg;
            DATASOURCE oRsWMat;
            COLUMNS "MDE_MAT","MDE_DES","MDE_CTD","MDE_PUN","MDE_IMP";
            HEADERS "Material","Descripción del material","Cantidad","Unitario","Importe";
            COLSIZES 90,250,50,70,80;
            PICTURES Nil,Nil,"@Z 99999","@Z 9,999.99","@Z 999,999.99";
            JUSTIFY {AL_LEFT,AL_LEFT,AL_RIGHT,AL_RIGHT};
            FOOTERS AUTOSORT BACKGROUND oApp:cBrush FASTEDIT
 
Muy agradecido con tu apoyo

Re: Una mas de TXBrowse

Posted: Wed Apr 05, 2023 2:56 am
by nageswaragunupudi
En el siguiente código no logro que aparezca el BMP Bus16, es un EDIT_GET_BUTTON
Recommendation:

Code: Select all | Expand

WITH OBJECT :Material
//     :cOrder          := "A" // XBROWSE uses this internally
     :cEditPicture  := "@!"   // "@!K" "K" is not required in FWH
//     :AddResource("Bus16")
     :nBtnBmp     := "Bus16"  // Insert here
     :bEditBlock    := { | | BrwMat(oDlg)  }
     :bEditValid    := { | oGet | ValMat(oGet:VarGet()) }
END
 
You can also set the button width by

Code: Select all | Expand

oCol:nBtnWidth := n
 

Re: Una mas de TXBrowse

Posted: Wed Apr 05, 2023 3:47 am
by Armando
Master Mr. Rao:

Thank you so much.

Best regards