Hola amigos:
Queria hacer algo nuevo, con el fabuloso wbrowse de Hernan, pero no se si sera posible.
He creado un browse de ARRAY, y quiero a traves de codigo, buscar una linea en concreto dentro del browse, pense que podria ser algo asi como oBrw:Goto(nLinea), pero esta funcion no existe.
Despues pense en usar oBrw:Skip(1), para ir recorriendo el browse hasta que la linea coincidiera con la deseada, y me funciona siempre que la linea deseada este en pantalla en el momento de la busqueda, es decir que sea visible, si no lo es, aunque me la encuentra, no la muestra, ya que no hace ningun scroll automatico.
Lo que realmente busco es poder simular el oBrw:BSeek, que funciona para tablas DBFs, pero por lo que se no con ARRAYs.
Asi pues mi pregunta, es:
1) Existe una funcion que haga algo parecido a oBrw:Goto(nLinea) y se posicione automaticamente en esa linea.
2) En el caso de que lo pueda hacer con oBrw:Skip(1), como hago para visualizar la linea, si esta no se encuentra visible en el momento de la busqueda.
Gracias de antemano por vuestra ayuda.
WBrowse de Hernan
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Hola TXon
En tu Browse agregas esto :
lbPrds2Fab:bKeyDown := { | nKey | PRD2FABKEY( nKey, @aPrdsX, @pMX, lbPrds2Fab ) }
y la Funcion hace algo como esto :
Function PRD2FABKEY( nKey, aPrdsX, pMX, lbPrds2Fab )
LOCAL nLenStr, nEle
IF nKey == VK_SPACE
...
ELSE
cStr2Seek := Upper( Chr( nKey ) )
nLenStr := Len( cStr2Seek )
nEle := Ascan( aPrdsX, { |aEle| SubStr( aEle[1], 1, nLenStr ) == cStr2Seek } )
IF nEle > 0
pMX := nEle
lbPrds2Fab:REFRESH()
ENDIF
ENDIF
Return NIL
*-----*
Asi lo he usado y me funciona OK
Espero te sirva
SALUDOS
En tu Browse agregas esto :
lbPrds2Fab:bKeyDown := { | nKey | PRD2FABKEY( nKey, @aPrdsX, @pMX, lbPrds2Fab ) }
y la Funcion hace algo como esto :
Function PRD2FABKEY( nKey, aPrdsX, pMX, lbPrds2Fab )
LOCAL nLenStr, nEle
IF nKey == VK_SPACE
...
ELSE
cStr2Seek := Upper( Chr( nKey ) )
nLenStr := Len( cStr2Seek )
nEle := Ascan( aPrdsX, { |aEle| SubStr( aEle[1], 1, nLenStr ) == cStr2Seek } )
IF nEle > 0
pMX := nEle
lbPrds2Fab:REFRESH()
ENDIF
ENDIF
Return NIL
*-----*
Asi lo he usado y me funciona OK
Espero te sirva
SALUDOS
FWH 10.6 + xHarbour + Borland 582
WBROSE de HERNAN
Perfecto, he hecho unos retoques y me funciona perfectamente.
Muchas gracias
Muchas gracias