Una mas de TXBrowse

Post Reply
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Una mas de TXBrowse

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
MarioG
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Una mas de TXBrowse

Post 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!
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Una mas de TXBrowse

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
FranciscoA
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Una mas de TXBrowse

Post 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
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Una mas de TXBrowse

Post by Armando »

Francisco:

Muchas gracias, lo probaré.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Una mas de TXBrowse

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Una mas de TXBrowse

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

G. N. Rao.
Hyderabad, India
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Una mas de TXBrowse

Post by Armando »

Master Mr. Rao:

Thank you so much.

Best regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply