Carlos:
Me es un poco difícil postear todo el código porque está bastante imbricado en el programa, pero no tiene ningún misterio. En resumen es así:
- Code: Select all Expand view
.... etc
oBrw := TcBrowse():New(...) // El browse de clientes. Tiene seis columnas.
Redefine Get cBuscar Of Self Valid ::Filtrar(cBuscar, oBrw) // Un campo get para buscar el cliente. Lo busca al pulsar intro
.... etc
//--------------------------------------------------------------------
Method Filtrar(cBuscar, oBrw) // Presentar todos los clientes que CONTENGAN el string cBuscar y refrescar el Browse oBrw
Select CLIENTES
cFiltro := "'"+Alltrim(Upper(cBuscar)) + "' $ Upper(NOMBRE)"
bFiltro := cToBlock(cFiltro)
DbSetFilter(bFiltro, cFiltro)
CLIENTES->(dbGoTop())
oBrw:GoTop()
oBrw:Refresh()
Return .T.
No utilizo Data Dictionary ni ninguna otra característica avanzada de ADS. Tan solo lo he instalado en el PC que tiene los datos y he copiado las tres DLLs a las carpetas de programa en todos los ordenadores.
Efectivamente, al pulsar Intro el primer registro filtrado aparece inmediatamente en la primera línea del Browse. El resto de líneas se mantienen como antes, o sea, sin filtrar. Al cabo de los 15 segundos, se refresca el Browse: Desaparecen de golpe las lineas no relevantes y aparecen de golpe los -por ejemplo- cuatro o cinco registros restantes que sí cumplen la condición de filtro.
Antes de comprar la versión comercial de ADS sólo quiero saber si este comportamiento es normal para la versión de prueba y la de pago es más rápida o si es que estoy haciendo algo mal.
Gracias por vuestro tiempo
Rafael