FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION
Posted: Mon Jul 09, 2012 07:05 AM

Saludos, en desarrollo de un sistema necesito trabajar en el modulo de facturacion con la edicion de celda en un xbrowse pero uso es un array de aProductos := {}, el xbrowse lleva como 7 campos, pero algunos no seran editables, con DBF ha sido facil, pero aca en array parece un poco complicado o no le veo el queso a la tostada, llevo mas de 2 horas dandole y nada, antes de llegar a la edicion de celdas del array lleno unos GET, para que medio funcionara despues del ultimo GET agregue un registro vacio para que pudiera hacer edicion, pero tengo que ubicarme en cada campo editable y darle doble para que entre en edicion, lo que quiero es que al terminar el ultimo GET o al darle a1 boton de agregar productos el curso quede de una ves en la edicion del array primera columna de la izquierda sin tener que darle doble click y que cuando le de enter pase al siguiente campo editable y asi sucesivamente, cuando llegue al ultimo de la derecha y de enter siga la edicion en la fila siguiente columna 1 de la izquierda, busque por todas partes en los samples pero estoy ya estan con data, mi array arrancara VACIO, espero algunas ideas, sugerencias y ejemplo si es posible, gracias y saludos... :shock:

asi tengo definido las columnas del xBrowse

oCol := oBrw:AddCol()
oCol:cHeader := "Código"
oCol:nWidth := 70
oCol:bStrData := {|| IIF( LEN( aProductos ) > 0, aProductos[oBrw:nArrayAt, 1], SPACE(10) ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_LEFT
oCol:bOnPostEdit := {|o,x| aProductos[ oBrw:nArrayAt, 1 ] := x }
oCol:nEditType := EDIT_GET
oCol:nArrayCol := 1

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY
Posted: Mon Jul 09, 2012 04:42 PM

amigo prueba asi:

oBrw:=TXBrowse():New()
oBrw:CreateFromResource( 400 )

oBrw:SetArray( aDatos )
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK // RGB(190,215,190)
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:lFastEdit := .T.
oBrw:bClrStd := {|| IIf(aDatos[oBrw:nArrayAt,10]#0,{CLR_BLACK,RGB(231,226,141)},IF( oBrw:nArrayAt%2==0,{CLR_BLACK,RGB(193,221,255)},{CLR_BLACK,RGB(221,245,255)} ) ) }
oBrw:nFreeze := 8
oBrw:nHeaderHeight := 30
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
oBrw:lHScroll := .f.
oBrw:lVScroll := .F.

oBrw:aCols[1]:cHeader := 'Codigo'
oBrw:aCols[1]:cEditPicture := '!!!!!!!!!!!!!'
oBrw:aCols[1]:bClrEdit := oBrw:bClrStd
oBrw:aCols[1]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN,"",),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nEditType := EDIT_GET_BUTTON
oBrw:aCols[1]:bEditValid := { | oGet, oCol | BuscarProd( oGet,oCol,oBrw,aDatos,oDlg1 ) }
oBrw:aCols[1]:bEditBlock := {|| LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nDataStrAlign:= AL_LEFT
oBrw:aCols[1]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[1]:bF2 := {|| LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nWidth := 100
oBrw:aCols[1]:bLClickHeader:= {|r,c,f,o|LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:oHeaderFont := oFnt
oBrw:aCols[1]:bEditWhen := { || IF(Len(aGuias)=0,.T.,.F.) }

oBrw:aCols[2]:cHeader := 'Description'
oBrw:aCols[2]:bClrEdit := oBrw:bClrStd
oBrw:aCols[2]:nWidth := 295
oBrw:aCols[2]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[2]:oHeaderFont := oFnt

oBrw:aCols[3]:cHeader := 'Cantidad'
oBrw:aCols[3]:cEditPicture := '@k 9999.99'
oBrw:aCols[3]:bClrEdit := oBrw:bClrStd
oBrw:aCols[3]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aDatos[ oBrw:nArrayAt,3] := xVal,),oBrw:GoRight() }
oBrw:aCols[3]:nEditType := EDIT_GET
oBrw:aCols[3]:bEditValid := { | oGet, oCol | Valida( oGet, oCol ) }
oBrw:aCols[3]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[3]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[3]:nWidth := 70
oBrw:aCols[3]:bEditWhen := { || IF(Len(aGuias)=0,.T.,.F.) }
oBrw:aCols[3]:oHeaderFont := oFnt

oBrw:aCols[4]:cHeader := 'Precio'
oBrw:aCols[4]:cEditPicture := '@k 99,999,999.99' //:GoDown()
oBrw:aCols[4]:bClrEdit := oBrw:bClrStd
oBrw:aCols[4]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aDatos[ oBrw:nArrayAt,4] := xVal,),oBrw:GoRight() }
oBrw:aCols[4]:nEditType := EDIT_GET
oBrw:aCols[4]:bEditValid := { | oGet, oCol | If (oGet:Value()#0,CalculaTotal(oDlg1,oBrw,aDatos,TotVal), Valida( oGet, oCol )) }
oBrw:aCols[4]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[4]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[4]:nWidth := 70
oBrw:aCols[4]:oHeaderFont := oFnt
oBrw:aCols[4]:bEditWhen := { || IF(Len(aGuias)=0,.T.,.F.) }

oBrw:aCols[5]:cHeader := 'Dsto1'
oBrw:aCols[5]:cEditPicture := '@k 99.99'
oBrw:aCols[5]:bClrEdit := oBrw:bClrStd
oBrw:aCols[5]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aDatos[ oBrw:nArrayAt,5] := xVal,),oBrw:GoRight() }
oBrw:aCols[5]:nEditType := EDIT_GET
oBrw:aCols[5]:bEditValid := { | oGet, oCol | CalculaTotal(oDlg1,oBrw,aDatos,TotVal) }
oBrw:aCols[5]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[5]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[5]:nWidth := 38
oBrw:aCols[5]:oHeaderFont := oFnt

oBrw:aCols[6]:cHeader := 'Dsto2'
oBrw:aCols[6]:cEditPicture := '@k 99.99'
oBrw:aCols[6]:bClrEdit := oBrw:bClrStd
oBrw:aCols[6]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aDatos[ oBrw:nArrayAt,6] := xVal,),oBrw:GoRight() }
oBrw:aCols[6]:nEditType := EDIT_GET
oBrw:aCols[6]:bEditValid := { | oGet, oCol | CalculaTotal(oDlg1,oBrw,aDatos,TotVal) }
oBrw:aCols[6]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[6]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[6]:nWidth := 38
oBrw:aCols[6]:oHeaderFont := oFnt

oBrw:aCols[7]:cHeader := 'Dsto3'
oBrw:aCols[7]:cEditPicture := '@k 99.99'
oBrw:aCols[7]:bClrEdit := oBrw:bClrStd
oBrw:aCols[7]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aDatos[ oBrw:nArrayAt,7] := xVal,),oBrw:GoDown(),oBrw:GoLeftMost() }
oBrw:aCols[7]:nEditType := EDIT_GET
oBrw:aCols[7]:bEditValid := { | oGet, oCol | CalTotal(oDlg1,oBrw,aDatos,TotVal,oGet) }
oBrw:aCols[7]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[7]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[7]:nWidth := 38
oBrw:aCols[7]:oHeaderFont := oFnt

oBrw:aCols[8]:cHeader := 'Total'
oBrw:aCols[8]:cEditPicture := '@k 999,999,999' //:GoDown()
oBrw:aCols[8]:nDataStrAlign:= AL_RIGHT
oBrw:aCols[8]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[8]:nWidth := 70
oBrw:aCols[8]:oHeaderFont := oFnt

oDlg1:oClient := oBrw

Saludos

Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY
Posted: Tue Jul 10, 2012 01:08 PM

Jose Luis,
mira el xbrabln.prg de samples.
Salu2, Ariel

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION
Posted: Mon Jul 16, 2012 04:16 AM
Esta linea era mi dolor de cabeza

:nMarqueeStyle := MARQSTYLE_HIGHLROW

agregada no permite la edicion de celda automatica sino dandole ENTER o doble click, la reemplace por

:nMarqueeStyle := MARQSTYLE_HIGHLCELL

y listo, gracias a jbrita, Ariel y a Julio por su ayuda en la revision y sus samples, gracias y saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion