Código: Selecionar todos
Function BuscaIncrementaL(vBD,vIN,vVar,vTit,vCol,vMas,vHEA,oGet,VARI,oTipo,MasRet,fFiltro)
// vBD = BANCO DE DADOS
// vIn = INDICE
// vVar= VARIAVEL DE PESQUISA
// vTIT= TITULO DO DIALOG
// vCol= COLUNA DO BANCO DE DADOS A USAR NO BROWSE
// vMas= MASCARA DA COLUNA
// vHEA= O HEADER DO BROWSE
// oGET= Objeto a ser atualizado
// VARI= VARIAVEL A SER ATUALIZADA
// oTipo=1 Motrar settext e 2 n mostrar
// MasRet=Mascara q deverah ser usada no retorno
//Filtro=O FILTRO Q SERAH USADO.
Local oBusca, oFont
Local oButton
LOCAL AREANT:=SELECT()
Private gPes,vPes:=""
PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -11
INIT DIALOG oBusca CLIPPER NOEXIT TITLE vTit;
FONT oFont ;
AT 0, 0 SIZE W(700),H(425) ;
STYLE DS_CENTER + WS_POPUP + WS_VISIBLE +WS_CAPTION //+ WS_SYSMENU
select(vBD)
ordsetfocus(vIN)
OrdScope( 0,fFiltro)
OrdScope( 1,fFiltro)
DBGOTOP()
@ W(15),H( 5) BROWSE oBrowse DATABASE OF oBusca SIZE W(660),H(300) STYLE WS_VSCROLL + WS_HSCROLL ;
AUTOEDIT ;
ON KEYDOWN {|o,key| BrowseKey3(o, key,oButton) }
ADD COLUMN FieldBlock(Fieldname(vCOL) ) TO oBrowse ;
HEADER vHEA ;
PICTURE vMAS ;
JUSTIFY HEAD DT_CENTER ;
JUSTIFY LINE DT_LEFT
@ W(10),H(360) say "Pesquisa:" size W(70),H(20)
@ W(80),H(360) SAY gPes CAPTION vPes size W(200),H(20) STYLE WS_BORDER COLOR 10485760 BACKCOLOR 12507070 //SS_CENTER
@ W(350),H(360) BUTTON oButton CAPTION "Ok" SIZE W(100),H( 26) ON CLICK {||iif(oTipo=1,oGet:SetText(Transform(VARI,MasRet)),.T.),EndDialog()} STYLE WS_TABSTOP + BS_DEFPUSHBUTTON
ACTIVATE DIALOG oBusca
OrdScope( 0,Nil)
OrdScope( 1,Nil)
Select(Areant)
Return .T.
Static Function BrowseKey3( oBrowse, key,oButton)
IF key == VK_BACK .or. key == VK_LEFT
If len(vPes) > 0
//vPes := UPPER(CHR(vPes - 48))
vPes := substr(vpes,1,len(vPes)-1)
EndIf
ElseIf key == VK_UP .or. key == VK_DOWN
return .t.
Else
if key =190.or.key=194.or.key=255
vPes += [.]
elseif key=188.or.key=110
vPes += [,]
elseif key=96
vPes += [0]
elseif key=33
dbskip(-10)
return .t.
elseif key=34
dbskip(+10)
return .t.
elseif key=97
vPes += [1]
elseif key=98
vPes += [2]
elseif key=99
vPes += [3]
elseif key=100
vPes += [4]
elseif key=101
vPes += [5]
elseif key=102
vPes += [6]
elseif key=103
vPes += [7]
elseif key=104
vPes += [8]
elseif key=105
vPes += [9]
elseif key=106
vPes += [*]
elseif key=107
vPes += [+]
elseif key=109
vPes += [-]
elseif key=193.or.key=191.OR.Key=111
vPes += [/]
elseif key=105
vPes += [9]
elseif key=189
vPes += [-]
elseif key=187
vPes += [=]
// elseif key>=96 .and. key<=105
// key := key -48
else
IF KEY=13
oButton:SetFocus()
eval(oButton:bclick())
Return .F.
Endif
//MsgInfo(str(key))
IF IsCapsLockActive() .or. Key=16
ELSE
if key>=65 .and. key <=90
key := key+32
endif
ENDIF
vPes += chr(key)
endif
EndIf
gPes : SetText(Upper(vPes))
gPes : SetFocus()
dbseek(Upper(vpes))
oBrowse:Refresh()
oBrowse:SetFocus()
Return .T.
Marcos Roberto

