Page 1 of 1
xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 11:22 am
by Pedro
Hola a todos
Tengo el siguiente código en un xBrowse :
- Code: Select all Expand view
oBrw:lFastEdit := .T.
oBrw:bPastEof = {|| (cAlias1)->(Dbappend()), oBrw:GoLeftMost(),oBrw:Refresh(),;
oBrw:aCols[ 1 ]:Edit() }
//agrega registro y "oprime" enter
oCol = oBrw:AddCol()
oCol:bStrData := { ||(cAlias1)->codigo }
oCol:nEditType := EDIT_GET
oCol:cHEADER := "CODIGO"
oCol:bOnPostEdit := { | oCol, xVal, nKey | If( RecCount() == 0,( DbAppend(), oBrw:Refresh() ),) ,;
If( nKey == VK_RETURN, If(BArticulo(oBrw,xVal,"CODIGO"),((cAlias1)->importe := Importe(oBrw,0),;
(cAlias1)->(dbAppend()),oBrw:Refresh(),oBrw:GoleftMost() ),),),;
If( nKey == VK_ESCAPE .and. Empty((cAlias1)->codigo),( (cAlias1)->(dbDelete()),;
(cAlias1)->(__dbPack()),(cAlias1)->(dbGoBottom()),oBrw:Refresh() ), ) }
.....más Columnas etc
Se supone que cuando ponga un código y lo valide, debería hacer un append blank y volver a esta misma columna.
Pues bien, el append blank lo hace, pero no vuelve a la columna si no que se va a la siguiente columna, es como si el goleftmost estuviera solo de adorno
porque no le hace ni puñetero caso.
Re: xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 1:02 pm
by MarioG
Pedro;
No probaste con:
oCol:nMoveType:= MOVE_LEFT //MOVE_FAST_LEFT (no se si esta va a la mas lejana, que seria la primera para tu caso no?)
Saludos
Re: xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 3:34 pm
by Pedro
Hola Mario
Se supone que GoleftMost es para irse al principio a la primera columna del xBrowse y nMoveType es para indicar al browse cual va a ser el movimiento pro defecto.
Al final lo he solucionado colocando oBrw:aCols[1]:Edit(), no es muy ortodoxo ya que cuando pongas un código y lo valides te abre un registro nuevo pero es la solución que he encontrado. De lo que se trataba es de que el usuario cuando ingrese un artículo a través de un lector, y una vez validado, abriera un registro nuevo para introducir otro artículo sin necesidad de dar enter al final o flecha abajo para abrir ése nuevo registro, y así simular nueva entrada y que el usuario no parase de usar el lector.
Re: xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 7:14 pm
by FranciscoA
Hola Pedro:
¿Ya intentaste con: oBrw:nColsel := 1, oBrw:Refresh()?
Saludos.
Re: xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 7:44 pm
by MarioG
JM;
En mi caso tengo tres columnas de edicion: Una EDIT_GET y dos EDIT_LISTBOX, en las dos primeras indico, como bien decis por defecto MOVE_RIGHT y en la última incluyo en :bOnPostEdit := {|...|... oLst:GoDown(), oLst:nColSel:= col_3 ...} para ir a la columna 3 (como bien sugiere Francisco, aunque sin :Refresh() ), que es mi primer columna de edición.
Saludos
Re: xBrowse y GoleftMost
Posted:
Mon Mar 12, 2012 7:48 pm
by MarioG
fe de erratas: donde dice JM debe decir Pedro
Re: xBrowse y GoleftMost
Posted:
Tue Mar 13, 2012 8:45 am
by Pedro
Francisco, he probado lo que me indicas, y me hace lo mismo que con el GoleftMost, es decir, ni caso, va a la segunda columna.
Mario, yo también tengo un bOnposEdit en todas las columnas, el tema es que con un lector de códigos de barra los datos entran a partir de la primera columna y el usuario, éste en concreto, sólo quiere coger la mercancía, pasarla por el lector y que el programa haga el resto. No quiere tocar el teclado. Para hacerlo directamente con el browse necesito abrir un registro al inicio y posicionar el cursor en la columna de edición, en mi caso la primera, y después de cada lectura del lector, y una vez validados los datos, volver a abrir registro nuevo y posicionar en la primera columna. Si como pasa con el GoleftMost el cursor pasa a la segunda columna, el dato del código de barras de la mercancía aparecería en la segunda columna que es la descripción de la mercancía y no lo podría buscar por el código ni por el nombre, que es lo que espero para buscar y validar.
Re: xBrowse y GoleftMost
Posted:
Tue Mar 13, 2012 11:26 pm
by FranciscoA
Pedro,
Tengo un sist de Contabilidad en el que hago algo parecido a lo que necesitas. Prueba asi:
oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
If( nKey == VK_RETURN, ((cAlias)->SSSCta := xVal,if(lCtaOK(oBrw),(oBrw:nColSel:=1,DBAPPEND()),)) ,) }
Saludos.
Re: xBrowse y GoleftMost
Posted:
Wed Mar 14, 2012 8:55 am
by Pedro
Hola Francisco
Así lo he puesto pero no funciona,
- Code: Select all Expand view
oCol = oBrw:AddCol()
oCol:bStrData := { ||(cAlias1)->codigo }
oCol:nEditType := EDIT_GET
oCol:cHEADER := "CODIGO"
oCol:bOnPostEdit := { | oCol, xVal, nKey | If( RecCount() == 0,( DbAppend(), oBrw:Refresh() ),) ,;
If( nKey == VK_RETURN, If(BArticulo(oBrw,xVal,"CODIGO"),((cAlias1)->importe := Importe(oBrw,0),;
oBrw:nColSel:=1,(cAlias1)->(dbAppend()),oBrw:Refresh() ),),),;
If( nKey == VK_ESCAPE .and. Empty((cAlias1)->codigo),( (cAlias1)->(dbDelete()),;
(cAlias1)->(__dbPack()),(cAlias1)->(dbGoBottom()),oBrw:Refresh() ), ) }
Se va a la segunda columna, en cambio si lo pongo de esta manera
If( nKey == VK_RETURN, If(BArticulo(oBrw,xVal,"CODIGO"),((cAlias1)->importe := Importe(oBrw,0),;
(cAlias1)->(dbAppend()),oBrw:Refresh(),oBrw:aCols[1]:Edit() ),),),;siempre va a la primera columna