Francisco,
Como puedes ver en la documentación de forma bastante extensa toda la magia
se hace con la propiedad oColumn:FilterEval que puede ser bien una cadena de
texto o un codeblock. Te remito a ella para más información.
El browse por defecto siempre hace la búsqueda de la cadena introducida
dentro de la columna EN BASE A COMO SE MUESTRA, es decir, si tu columna
muestra valores .T. y .F. entonces para buscar filas con valor verdadero el
usuario deberá poner una 'T' por ejemplo.
Lo más normal es que muestres los campos lógicos de otra forma más amigable,
por ejemplo, con el clásico: 'Si' - 'No'. y para ello no tienes más que o
bien crear un campo calculado, que me parece excesivo, o cambiar el evento
OnGetData para que cuando sea verdadero devuelva "Si" y "No" en caso de que
no lo sea. Algo así:
METHOD DBBrowse1Column10GetData( oSender, cText, nImage ) CLASS TForm1
if oSender:oDataField:FieldGet()
cText := "Si"
else
cText := "No"
endif
RETURN Nil
Y en dicho caso la operación de filtro FUNCIONARA CON EL TEXTO 'Si' y 'No'
Ahora bien, supongamos que queremos mantener la visualización con '.T.' y
'.F.' pero que sin embargo reconozca el filtrado con 'Si' y 'No', algo poco
útil a mi modo de ver. En dicho caso no modificariamos el evento OnGetData
de la columna sino que modificariamos la propiedad FilterEval de la
siguiente forma:
oCol:FilterEval := "'%' = iif( NombreCampo, 'Si', 'No' )"
% es el texto que introduce el usuario en el filtrado
Un saludo,
"Francisco Sanchez" <
francisco@softwaretotal.biz> escribió en el mensaje
news:436cb69f$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
> Como hacer que si activo la filterbar y por ejemplo tengo un campo logico,
> el usuario escriba SI y el browse interprete .T.?
>
> Un saludo
>