EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION

EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION

Postby joseluisysturiz » Mon Jul 09, 2012 7: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
Last edited by joseluisysturiz on Mon Jul 16, 2012 4:12 am, edited 1 time in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY

Postby jbrita » Mon Jul 09, 2012 4: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
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm

Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY

Postby Ariel » Tue Jul 10, 2012 1:08 pm

Jose Luis,
mira el xbrabln.prg de samples.
Salu2, Ariel
Ariel
 
Posts: 376
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: EDICION DE CELDA TIPO FACTURA EN XBROWSE CON ARRAY-SOLUCION

Postby joseluisysturiz » Mon Jul 16, 2012 4: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... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 39 guests