Hola Francis...
Una ventaja que tenemos con FW es que podemos ver las clases internamentes, revisa la xbrowse y te conseguiras con esta data:
oSeek,; // Optional TSay control to display the value of current ::cSeek value
te dejo un ejemplo bastanta basico epero te sirva, usa la misma dbf que viene con los ejemplos de FW
#include "FiveWin.ch"
#include "InKey.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
function Main()
local oWnd, oBmp, oBar
CheckCustCdx()
USE CUSTOMER NEW SHARED VIA "DBFCDX"
SET ORDER TO TAG FIRST
GO TOP
DEFINE WINDOW oWnd TITLE "New TXBrowse class (only for FWH)"
define buttonbar oBar of oWnd size 32,32
define button prompt "Test" of oBar action( Incremental( oWnd ) )
SET MESSAGE OF oWnd TO FWVERSION + ", " + FWCOPYRIGHT CENTERED TIME DATE
ACTIVATE WINDOW oWnd
return nil
//----------------------------------------------------------------------------//
STATIC FUNCTION Incremental( oWnd )
local oChild, oBrw, oSay, cTexto := "", cAlias
cAlias := select()
DEFINE dialog oChild TITLE "Incremental seek & Inset style browse" OF oWnd size 600,400 pixel
@ 10,10 say "Busqueda Incremental:" of oChild size 60,12 pixel
@ 10,65 say oSay prompt cTexto of oChild size 50,12 pixel
@ 25,5 xbrowse oBrw alias cAlias autocols size 290,170 pixel
oBrw:bSeek := {|c| DbSeek( Upper( c ) ) }
oBrw:oSeek := oSay
oBrw:CreateFromCode()
ACTIVATE dialog oChild ON INIT ( oBrw:SetFocus(), oChild:Resize() )
RETURN NIL
//----------------------------------------------------------------------------//
static function CheckCustCdx()
local n
if File( "customer.cdx" )
// if MsgYesNo( "Re-index Customer.dbf ?" )
FErase( "customer.cdx" )
// endif
endif
if !File( "customer.cdx" )
USE CUSTOMER EXCLUSIVE VIA "DBFCDX"
for n := 1 to FCount()
CreateTag( FieldName( n ) )
next
USE
endif
return nil
//----------------------------------------------------------------------------//
static function CreateTag( ctag )
INDEX ON &ctag TAG &ctag
return nil