#include 'fivewin.ch'
#include 'ord.ch'
#include 'xbrowse.ch'
#include 'hbcompat.ch'
REQUEST DBFCDX
//----------------------------------------------------------------------------//
function Main()
local oDlg, oBrw, oFont, nWild := 2
local cList, aFlds, aHdrs
local nChoice, uDataSource
SET DATE ITALIAN
SET CENTURY ON
RDDSETDEFAULT( "DBFCDX" )
cList := "First,Last,Street,State,HireDate"
nChoice := ALERT( "Choose Data Souce", { "DBF", "ADO", "ARRAY" } )
uDataSource := OpenData( nChoice, cList )
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
DEFINE DIALOG oDlg SIZE 750,300 PIXEL FONT oFont ;
TITLE "XBrowse Incremental Filters"
aFlds := aHdrs := HB_ATokens( cList, ',' )
if nChoice == 3
aFlds := Array( Len( aFlds ) )
AEval( aFlds, { |u,i| aFlds[ i ] := i } )
endif
@ 30,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS aFlds HEADERS aHdrs ;
DATASOURCE uDataSource AUTOSORT CELL LINES NOBORDER
WITH OBJECT oBrw
:lIncrFilter := .t.
:lSeekWild := ( nWild == 2 )
:cFilterFld := "FIRST"
:nStretchCol := STRETCHCOL_WIDEST
END
oBrw:aCols[5]:bLClickHeader := { || oBrw:Seek( "" ), oBrw:cFilterFld := "Street", oBrw:Refresh() }
// oCol:bLClickHeader = { | nMRow, nMCol, nFlags, Self | If( ::nHeadBmpNo == 2, ::nHeadBmpNo := 1, ::nHeadBmpNo := 2 ), ::oBrw:Refresh() }
@ 10, 10 COMBOBOX oBrw:cFilterFld ;
ITEMS aHdrs ;
ON CHANGE ( oBrw:Seek( "" ), oBrw:SetFocus() ) ;
SIZE 50,400 PIXEL OF oDlg
@ 10, 70 COMBOBOX nWild ITEMS { "Starting With", "Containing" } ;
ON CHANGE ( oBrw:lSeekWild := ( nWild == 2 ), ;
oBrw:Seek( If( oBrw:lSeekWild, oBrw:cSeek, "" ) ), ;
oBrw:SetFocus() ) ;
SIZE 70,400 PIXEL OF oDlg
@ 11,160 SAY oBrw:oSeek PROMPT oBrw:cSeek SIZE 200,10 PIXEL ;
OF oDlg COLOR CLR_BLACK,CLR_YELLOW PICTURE '@!'
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED ON INIT ( oBrw:SetFocus(), .f. )
RELEASE FONT oFont
return nil
//----------------------------------------------------------------------------//
static function OpenData( nSource, cList )
local oCn, uSource
SWITCH nSource
CASE 1
CASE 3
USE CUSTOMER SHARED NEW ALIAS CUST
SET ORDER TO TAG FIRST
GO TOP
if nSource == 3
uSource := CUST->( FW_DbfToArray( cList ) )
CLOSE CUST
else
uSource := "CUST"
endif
EXIT
CASE 2
oCn := FW_OpenAdoConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
cFilePath( GetModuleFileName() ) + ;
"xbrtest.mdb;User Id=admin;Password=;" )
if oCn != nil
uSource := FW_OpenRecordSet( oCn, "CUSTOMER" )
endif
EXIT
DEFAULT
QUIT
END
return uSource
//----------------------------------------------------------------------------//