Código: Selecionar todos
#define x_BLUE 16711680
#define x_DARKBLUE 10027008
#define x_WHITE 16777215
#define x_CYAN 16776960
#define x_BLACK 0
#define x_RED 255
#define x_GREEN 32768
#define x_GRAY 8421504
#define x_YELLOW 65535
#define HB_EXT_INKEY
#include "windows.ch"
#include "guilib.ch"
#include "hwgui.ch"
Function MAIN()
cria_bd()
USE CLIENTES
INDEX ON NOME_CLI TO NOME
frm_pesquisa()
return nil
function frm_pesquisa()
Private oBrw
PRIVATE oDlgHabla:=NIL
Private gPes,vPes:="",keyAnt:=0
PREPARE FONT oFontBtn NAME "Arial" WIDTH 0 HEIGHT -12 charset 255
Private xBtn2
INIT DIALOG oFrm TITLE [Titulo] CLIPPER FONT oFontBtn;
SIZE 800,600 ;
STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER NOEXIT
@ 5,0 say "Pesquisa:" size 70,20
@ 5,15 SAY gPes CAPTION vPes size 200,20 ;
STYLE WS_BORDER COLOR 10485760;
BACKCOLOR 12507070
@ 10,550 say oTecla CAPTION space(30) size 200,25
@ 500,0 say [F7 - Sobre - F11 Calculadora] size 250,30
@ 10 ,140 BROWSE oBrw DATABASE OF oFrm SIZE 780, 380 ;
STYLE WS_VSCROLL + WS_HSCROLL;
ON CLICK {|o,key| BrowseKey()} ;
ON POSCHANGE {|| SetFocus(oBrw:handle ) }
oBrw:alias := aLIAS()
oBrw:bKeyDown := {|o,key| BrowseKey(o, key) }
oBrw:AddColumn( HColumn():New( "Field1" , FieldBlock(Fieldname(1)),"C", 10,0) )
oBrw:AddColumn( HColumn():New( "Field1" , FieldBlock(Fieldname(2)),"C", 30,0) )
aAmarelo := VColor("00ECF3F4")
aVerde:= VColor("00DCE6DC")
FOR nI := 1 TO 2
oBrw:aColumns[ni]:bColorBlock := {|| IF(MOD(recno(), 2) = 0,;
{x_BLACK, aVerde, x_CYAN, x_DARKBLUE} , ;
{x_BLACK, aAmarelo , x_WHITE, x_DARKBLUE })}
NEXT
//oBrw:lesc:= .t.
//setfocus(obrw:handle)
//oFrm:bActivate:={||setfocus(oBrw:handle)}
oFrm:Activate()
IF oDlgHabla#NIL
oDlgHabla:CLOSE()
ENDIF
RETURN .t.
Static Function BrowseKey( oBrowse, key )
Local vTxt :=[Tecla Pressionada:]+strzero(key,3)
SetWindowText( oTecla:handle, vTxt)
DO CASE
CASE KEY= 27
msginfo([oi])
EndDialog()
CASE KEY =46
MSGINFO([DEL])
DBDELETE()
OBROWSE:REFRESH()
// CASE (KEY = 13)
// Tela2()
otherwise
PesqInc( oBrowse, key )
ENDCASE
Return .T.
Static Function PesqInc( oBrowse, key )
if (key >=96 .and. key<=105)
key:= key-48
ENDIF
IF key == VK_BACK .or. key == VK_LEFT
If len(vPes) > 0
vPes := substr(vpes,1,len(vPes)-1)
EndIf
ElseIf key == VK_UP .or. key == VK_DOWN
return .t.
ElseIf key =16
keyAnt:=Key
return .t.
ElseIf (key <48) .and. key#32 // PGDWN PGUP #32 = space
return .t.
Else
if key =190
vPes += [.]
elseif key=194
vPes += [.]
elseif key=188
vPes += [,]
elseif key=110
vPes += [,]
elseif key=97 //.
vPes += [.]
elseif key>=96 .and. key<=105
key := key -48
else
IF IsCapsLockActive() .or. KeyAnt=16
ELSE
if key>=65 .and. key <=90
key := key+32
endif
ENDIF
vPes += chr(key)
endif
EndIf
keyAnt:=key
gPes : SetText(vPes)
//gPes : Refresh()
gPes : SetFocus()
//(aDb) -> (DbSeek(vPes)) //Nao esta indexado
dbseek(vpes)
//locate for vPes in Nome
oBrowse:Refresh()
oBrowse:SetFocus()
return nil
function cria_bd()
ESTRU5:={}
AADD(ESTRU5,{[CODIGO_CLI],[C],05,0})
AADD(ESTRU5,{[NOME_CLI ],[C],30,0})
AADD(ESTRU5,{[NOME_CLI ],[C],30,0})
DBCREATE([CLIENTES],ESTRU5)
use clientes new
DBAPPEND()
REPLACE CODIGO_CLI WITH [00001]
REPLACE NOME_CLI WITH [Jose da Silva]
DBAPPEND()
REPLACE CODIGO_CLI WITH [00002]
REPLACE NOME_CLI WITH [Antonio Silva]
DBAPPEND()
REPLACE CODIGO_CLI WITH [00003]
REPLACE NOME_CLI WITH [Carlos Silva]
DBAPPEND()
REPLACE CODIGO_CLI WITH [00004]
REPLACE NOME_CLI WITH [Pedro Silva]
//INDEX ON CODIGO_CLI to codcli
FOR I:=4 TO 1000
DBApPEND()
REPLACE CODIGO_CLI with STRZERO(I,5)
REPLACE NOME_CLI WITH [Clientews lkjslkfajlk]+codigo_cli
NEXT
close all
return nil