Page 1 of 1

COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE

PostPosted: Fri Jan 31, 2020 4:10 pm
by rterraz
Hola a todos
Alguien me puede orientar con esto:
tengo un xbrowse de un ARRAY con una columna agregada para usar checkbox

WITH OBJECT oBrw:InsCol( 1 )
:bEditValue := { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }

en determinadas circunstancias necesito hacer un aEval(oBrw:aArrayData) e identificar que registros son los que estan marcados
para poder sacar informacion de esas lineas
he probado de varias maneras usando oBrw:aSelected y oBrw:BookMark y no logro hacerlo funcionar.
Ademas hay alguna manera de poder hacer algo similar al Goto(nReg) para poder posicionar el cursor en una linea especifica del browse ?
muchas gracias a todos

Re: COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE

PostPosted: Sat Feb 01, 2020 12:46 am
by horacio
Hola, para ir a un registro especifico en xBrowse prueba

Code: Select all  Expand view

oBrw : nArrayAt := nReg
oBrw : Refresh()
 


Saludos

Re: COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE

PostPosted: Sat Feb 01, 2020 10:45 am
by Ariel
Hola,

probaste :

FOR EACH nRec IN oBrw:aSelected

? oBrw:aArrayData[ nRec,1 ], oBrw:aArrayData[ nRec,2 ], ....

NEXT

Saludos

Re: COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE

PostPosted: Sun Feb 02, 2020 3:51 pm
by rterraz
Hola Ariel
Con el ejemplo que me das solo logro que se muestre el contenido de la columna 1,2,3 etc del oBrw:aArraydata
El problema es asi:
supongamos que el array a browsear es: aArticulos:= { {'papas',150},{'peras',2345},{''manzanas',345}}
y el browse:
REDEFINE XBROWSE oBrw ID 4001 OF oDlg ;
COLUMNS { 1,2 } ;
COLSIZES { 100,100 };
HEADERS {'Producto','Cantidad } ;
ARRAY aArticulos

agrego una columna inicial para el checkbox

WITH OBJECT oBrw:InsCol( 1 )
:bEditValue := { || AScan( oBrwPed:aSelected, oBrwPed:Bookmark() ) > 0 }
:SetCheck( ,.F.,{'','',''})
:cHeader := 'Sel'
END

genero el browse y hago un xbrowse(oBrw:aArraydata)
aparecen los 3 registros con los valores de las 2 columnas
La columna generada con oBrw:insCol(1) esta en el browse pero no forma parte del oBrw:aArraydata
si hago
aEval( oBrw:aArrayData,{|x,y| alert(x[1]) })
me muestra: 'papas','peras','manzanas' y no el valor .T. o .F. de la columna 1 del browse
y lo que yo necesito es que a medida que recorre el oBrw:aArraydata me vaya diciendo si el registro esta marcado o no !!!!
Me explico
Como accedo al valor del checkbox de cada registro ? :(

abrazo

Re: COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE RESUELTO

PostPosted: Tue Feb 04, 2020 2:51 pm
by rterraz
Hola Amigos, la solucion al problema es esta:
Hay que usar SetPos() para ubicar el cursor del browse de acuerdo al resultado del aEval
aEval(oBrw:aArrayData,{|x,y| oBrw:SetPos(y), alert( oBrwPed:aCols[1]:Value)} )
me devuelve .T. o .F. de acuerdo al estado del Checkbox de la primera columna
Espero que le sirva a alguien!
Muchas gracias

Re: COMO IDENTIFICAR REGISTROS MARCADOS EN XBROWSE

PostPosted: Tue Feb 04, 2020 10:56 pm
by Ariel
Hola,

no te funciono xq accedes a arraydata y tenes q acceder a oBrw:aSelected ej:

if LEN(oBrw:aSelected) > 0
FOR EACH nPos IN oBrw:aSelected
? oBrw:aArrayData[ nPos, 01 ], oBrw:aArrayData[ nPos, 02 ]
NEXT
endif

Saludos.