#include "windows.ch" #include "guilib.ch" #include "inkey.ch" #Include "hwgui.ch" STATIC Thisform //------------------------------------------------------------------------------------------------------------------- FUNCTION Pesq_Nova( lTitle, lHead1, lField1, lTfil1, lCfil1, lMasc1, lIndic, lHead2, lField2, lTfil2, lCfil2, lMasc2) //lTitle -> Titulo //lHead1 -> Cabeçalho //lField1 -> Campo //lTfil1 -> Tp do Campo //lCfil1 -> Tamanho //lMasc1 -> Mascara //lIndic -> Indice //lHead2 -> Cabeçalho //lField2 -> Campo //lTfil2 -> Tp do Campo //lCfil2 -> Tamanho //lMasc2 -> Mascara //------------------------------------------------------------------------------------------------------------------- LOCAL oGroup1 Private oBrowse1,; oPesquiza,; gPes,; vPes := "" ,; keyAnt := 0 ,; oTecla ordsetfocus(lIndic) dbgobottom() dbgotop() INIT DIALOG oPesquiza TITLE "Pesquiza por "+ lTitle + " - [R e t o r n a]" ; AT 0, 0 SIZE 563,460 CLIPPER NOEXIT NOCLOSABLE ; STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER Thisform := oPesquiza @ 012,011 GROUPBOX oGroup1 CAPTION "Digite - "+lHead2 SIZE 434,64 STYLE BS_LEFT @ 023,035 GET gPes VAR vPes PICTURE '@r!' SIZE 409,24 ; STYLE WS_BORDER + ES_UPPERCASE ; COLOR 8388608 BACKCOLOR 8454143 MAXLENGTH 50 @ 023,550 say oTecla CAPTION space(40) size 200,25 @ 012,085 BROWSE oBrowse1 DATABASE SIZE 540,373 ; STYLE WS_VSCROLL + WS_HSCROLL + ES_UPPERCASE; ON CLICK {|o,key| BrowseKey() } ; ON POSCHANGE {|| SetFocus(oBrowse1:handle ) } // CREATE oBrowse1 // SCRIPT GENARATE BY DESIGNER oBrowse1:alias := Alias() oBrowse1:nColumns := 2 oBrowse1:bKeyDown := {|o,key| BrowseKey(o, key) } oBrowse1:AddColumn( HColumn():New( lHead1 , FieldBlock(lField1),lTfil1,lCfil1, 0 ,.f.,1,,lMasc1) ) oBrowse1:AddColumn( HColumn():New( lHead2 , FieldBlock(lField2),lTfil2,lCfil2, 0 ,.f.,1,,lMasc2) ) ACTIVATE DIALOG oPesquiza RETURN oPesquiza:lresult //--------------------------------------- Static Function BrowseKey( oBrowse, key ) //--------------------------------------- DO CASE CASE KEY = K_ESC EndDialog() CASE (KEY = K_ENTER) oPesquiza:close() Return .f. otherwise PesqInc( oBrowse, key ) ENDCASE Return .T. //------------------------------------- Static Function PesqInc( oBrowse, key ) //------------------------------------- if (key >=97 .and. key <= 122) key := key-32 end IF key == VK_BACK .or. key == VK_LEFT If len(vPes) > 0 vPes := substr(vpes,1,len(vPes)-1) End 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 end end vPes += chr(key) end End keyAnt := key gPes: SetText(vPes) gPes: SetFocus() dbseek(vpes) oBrowse1:Refresh() oBrowse1:SetFocus() return nil