#PRAGMA -W3 #PRAGMA -ES2 #INCLUDE "inkey.ch" REQUEST DBFCDX STATIC cCodigo STATIC cFiltro PROCEDURE Main LOCAL oTBrowse, oKeys RddSetDefault( "DBFCDX" ) Cria_DBF() SetMode( 25, 130 ) SET COLOR TO W/B,N/W,,,W/B Cls cFiltro := "" oTBrowse := { ; { "CODIGO" , { || test->codigo } , "test01" } , ; { "ORIGINAL" , { || Transform( test->original , "@! XXXXXXXXXXXXXXXX" ) } , "test02" } , ; { "FABRICANTE" , { || test->fabricante } , "test03" } , ; { "DESCRICAO" , { || test->descricao } , "test04" } , ; { "VALOR" , { || Transform( test->valor , "@E 99,999.99" ) } , } ; } oKeys := { ; { K_ENTER , { || AlgumaCoisa() } }, ; { K_F2 , { || AlgumaCoisa() } } } FazBrowse( oTBrowse, oKeys ) Close DATABASES Alert( cCodigo ) RETURN STATIC FUNCTION AlgumaCoisa() Alert( test->codigo + " - " + test->descricao ) RETURN NIL FUNCTION FazBrowse( oTBrowse, oKeys ) LOCAL nOrdem:=4 LOCAL oBrowse, nCont, nKey, cMensagem oBrowse := TBrowseDb( 1, 1, MaxRow()-1, MaxCol() ) oBrowse:HeadSep := Chr( 196 ) oBrowse:FootSep := Chr( 196 ) oBrowse:ColSep := " " FOR nCont = 1 TO Len( oTBrowse ) oBrowse:AddColumn( tbColumnNew( oTBrowse[ nCont, 1 ], oTBrowse[ nCont, 2 ] ) ) NEXT IF .NOT. oKeys == NIL FOR nCont = 1 TO Len( oKeys ) oBrowse:SetKey( oKeys[ nCont, 1 ], oKeys[ nCont, 2 ] ) NEXT ENDIF oBrowse:SetKey( K_BS, { | oBrowse, nKey | FazBrowseBackSpace( oBrowse, nKey ) } ) oBrowse:RefreshAll() oBrowse:colpos := nOrdem cMensagem := " LOCALIZAR POR " + oTBrowse[ nOrdem , 1 ] + ": [ " DO WHILE .T. DO WHILE .NOT. oBrowse:Stable() oBrowse:Stabilize() ENDDO @ MaxRow(), 00 Say PadR( cMensagem + cFiltro + " ]" , MaxCol() , " ") nKey := Inkey(0) DO CASE CASE nKey == K_ENTER cCodigo:= test->codigo EXIT CASE nKey == K_LEFT nOrdem:=IIf( oBrowse:ColPos = 1 , oBrowse:ColPos , oBrowse:Colpos - 1 ) Ordena_Consulta( oTBrowse , nOrdem ) CASE nKey == K_RIGHT nOrdem:=IIf( oBrowse:ColCount = oBrowse:ColPos , oBrowse:ColPos , oBrowse:Colpos + 1 ) Ordena_Consulta( oTBrowse , nOrdem ) CASE nKey == K_ESC EXIT CASE nKey > 31 .AND. nKey < Asc( "z" ) FazBrowseAnyChar( oBrowse, nKey ) ENDCASE oBrowse:ApplyKey( nKey ) IF !HB_IsNil( oTBrowse[ nOrdem , 3 ] ) cMensagem:= " LOCALIZAR POR " + oTBrowse[ nOrdem , 1 ] + ": [ " ENDIF ENDDO SET SCOPE TO RETURN NIL FUNCTION FazBrowseBackSpace( oBrowse, nKey ) IF Len( cFiltro ) > 0 cFiltro := Substr( cFiltro, 1, Len( cFiltro ) - 1 ) IF Len( cFiltro ) == 0 SET SCOPE TO ELSE SET SCOPE TO ( cFiltro ) ENDIF GOTO TOP oBrowse:RefreshAll() ENDIF HB_SYMBOL_UNUSED( nKey ) RETURN NIL FUNCTION FazBrowseAnyChar( oBrowse, nKey ) cFiltro += Upper( Chr( nKey ) ) SET SCOPE TO ( cFiltro ) GOTO TOP oBrowse:RefreshAll() RETURN NIL FUNCTION Cria_DBF() IF File( "test.dbf" ) FErase( "test.dbf" ) FErase( "test.cdx" ) ENDIF DbCreate( "test" , { ; { "CODIGO" , "C" , 06 , 0 } ,; { "ORIGINAL" , "C" , 20 , 0 } ,; { "FABRICANTE" , "C" , 20 , 0 } ,; { "DESCRICAO" , "C" , 50 , 0 } ,; { "VALOR" , "N" , 08 , 2 } ; } ) USE test EXCLUSIVE new INDEX ON test->codigo TAG test01 to test INDEX ON test->original TAG test02 to test INDEX ON test->fabricante TAG test03 to test INDEX ON test->descricao TAG test04 to test Replace_Dados() RETURN NIL FUNCTION Replace_Dados() LOCAL oElement LOCAL aDados := {} AAdd( aDados , { "1BT2CA541" , "FN-0000252" , "PASTILHA FREIO VW FUSCA " , 20.50 } ) AAdd( aDados , { "2BT3CA542" , "" , "LONA FREIO VW PASSAT " , 17.50 } ) AAdd( aDados , { "" , "FN-0001234" , "LONA FREIO VW BRASILIA " , 13.50 } ) AAdd( aDados , { "22AADD544" , "D0682" , "PASTILHA FREIO AUDI A4 SR4 BMW 750 DT" , 109.62 } ) AAdd( aDados , { "126685CDD" , "T-951.00=PD/384" , "PASTILHA FREIO AUDI A4/6 94/ >" , 71.34 } ) AAdd( aDados , { "3563444D1" , "1343-0" , "BUCHA ALAVANCA CAMBIO RE CLIO/KANG/MEG " , 104.40 } ) AAdd( aDados , { "" , "D1018" , "BUCHA ALAVANCA CAMBIO VW CAMINHOES " , 89.00 } ) AAdd( aDados , { "3BT3CX542" , "" , "BUCHA CAMBIO CX CL 2205 -NYLON- " , 106.80 } ) AAdd( aDados , { "" , "D0912A" , "BUCHA CAMBIO CX FS1305/2205/2615 -KIT- " , 127.02 } ) AAdd( aDados , { "998UU54YY" , "PD/385=T-970" , "PASTILHA FREIO BMW 3.0 91/99 " , 106.13 } ) AAdd( aDados , { "5478DDA88" , "T-970.00=PD/385" , "PASTILHA FREIO BMW 316><328 91/ DT>" , 94.84 } ) AAdd( aDados , { "" , "D0912A" , "ADAPTADOR HELICE FO F1000 /96 TDS" , 47.76 } ) AAdd( aDados , { "998UU54YY" , "PD/385=T-970" , "ADAPTADOR HELICE GM S10 2.5 P/2.8 " , 95.70 } ) AAdd( aDados , { "5478DDA88" , "" , "ADAPTADOR MOTOR GM S10/SILV SUBS VISCO> " , 35.80 } ) FOR EACH oElement IN aDados DbAppend() REPLACE test->codigo WITH StrZero( oElement:__EnumIndex , 6 ) ,; test->original WITH aDados[ oElement:__EnumIndex , 01 ] ,; test->fabricante WITH aDados[ oElement:__EnumIndex , 02 ] ,; test->descricao WITH aDados[ oElement:__EnumIndex , 03 ] ,; test->valor WITH aDados[ oElement:__EnumIndex , 04 ] NEXT RETURN NIL FUNCTION Ordena_Consulta( aMatriz , nOrdena ) LOCAL nRecno:=RecNo() IF !HB_IsNil( aMatriz[ nOrdena , 3 ] ) DbSetOrder( aMatriz[ nOrdena , 3 ] ) DbGoTop() DbGoto( nRecno ) ENDIF cFiltro := "" RETURN .T.