Page 1 of 1
Busqueda incremental en wbrowse de arreglo
Posted: Tue Mar 18, 2008 4:28 am
by jllinas
Pues eso....
A ver si alguien me tira la toalla...
Para hacer esto en dbf esta bien, pero en arreglos, no se. Sobre todo, una vez encontrado el elemento, para refrescar el browse hago:
oBrw:UpStable()
oBrw:Refresh()
Pero en este caso, es diferente la cosa, pues ::Upstable() arroja un error si es un arreglo.
AYUDA !
Posted: Tue Mar 18, 2008 8:43 am
by Antonio Linares
Julio,
A que te refieres con un browse de arreglo ?
A usar un array en vez de una DBF ?
Posted: Tue Mar 18, 2008 1:13 pm
by Raymundo Islas M.
Julio :
nLenStr := Len( cXStr )
nEle := Ascan( TuArreglo,{ | aEle | SubStr( aEle[2], 1, nLenStr ) == cXStr } )
If nEle > 0
pSM := nEle
tulistbox:REFRESH()
ENDIF
// aEle[2] lo ajustas dependiendo en que dimension quieras buscar
En si, lo que hay que hacer, es ya encontrado el "registro", asignar al puntero de tu arreglo, el indice donde fue encontrado y refrescar.
Saludos
Posted: Wed Mar 19, 2008 12:44 am
by jllinas
Eso, eso Antonio.... un browse de array, no de DBF
Raymundo, ¿Pudieras orientarme con un poco mas de código de como "mover" el puntero del browse a ese valor encontrado?
Supondo que la variable "cXStr" es la que contiene el valor a buscar.... no?
Gracias anticipadas !
Posted: Wed Mar 19, 2008 1:20 am
by Raymundo Islas M.
Julio :
Aqui tienes un ejemplo :
Code: Select all
// Estas las manejo como Static
aSrcMar := { {"","",""} }
pSM := 1
REDEFINE LISTBOX lbSrcMar ;
FIELDS aSrcMar[pSM,1] ;
HEAD "NOMBRE" ;
ID 103 ;
FONT oBrwFnt ;
OF oFldSrc:aDialogs[1]
lbSrcMar:SetArray( aSrcMar )
lbSrcMar:nLineStyle := 2
lbSrcMar:lDrawFocusRect := .F.
lbSrcMar:nClrLine := CLR_WHITE
lbSrcMar:BGOTOP := { || pSM :=1}
lbSrcMar:BGOBOTTOM := { || pSM := eval( lbSrcMar:bLogicLen ) }
lbSrcMar:BSKIP := { | nwant, nold | nold := pSM , pSM += nwant,;
pSM := max( 1, min( pSM, eval( lbSrcMar:bLogicLen ) ) ), pSM - nOld }
lbSrcMar:BLOGICLEN := { || Len( aSrcMar ) }
lbSrcMar:nClrPane := { || IIF( pSM%2 == 0, CLR_A, CLR_B ) }
lbSrcMar:bKeyDown := { | nKey | SRCMARKEY( nKey ) }
Static Function SRCMARKEY( nKey )
cStr2Seek += Upper( Chr( nKey ) )
nLenStr := Len( cStr2Seek )
nEle := Ascan( aSrcMar, { |aEle| SubStr( aEle[1], 1, nLenStr ) == cStr2Seek } )
IF nEle > 0
pSM := nEle
lbSrcMar:REFRESH()
ENDIF
Return NIL
Este codigo esta trabajando OK, solo ponle los ajustes que requieras.
Saludos
Posted: Wed Mar 19, 2008 2:09 am
by jllinas
Gracias amigo,
Lo pruebo y cualquier cosa te "grito" popr aqui !
Abrazos,