Página 1 de 1

Busca Incremental nao funciona mais com xhb 1.2.1 + hwgui

Enviado: 30 Nov 2011 14:03
por marcos.gurupi
Eu uso essa funcao abaixo para busca incremental com sucesso usando o xhb 1.0.0 + hwgui 2.17.

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.
Agora estou usando o xhb 1.2.1 + hwgui 2.17 e quando digito por exemplo a descricao do produto o cursor do browse nao se movimenta. O q pode estah acontecendo ?

Marcos Roberto

Busca Incremental nao funciona mais com xhb 1.2.1 + hwgui

Enviado: 30 Nov 2011 18:40
por Itamar M. Lins Jr.
Ola!
A função on keydown recebe agora 3 parametros
{|oBrw,Key,nKeyEx|TestaTecla(oBrw,Key,nKeyEx)}
Verifique atravez do msginfo() o que está chegando na função browse3

Código: Selecionar todos

Static Function BrowseKey3( oBrowse, key,oButton)
Msginfo(str(Key))
...
Saudações,
Itamar M. Lins Jr.

Busca Incremental nao funciona mais com xhb 1.2.1 + hwgui

Enviado: 01 Dez 2011 14:08
por marcos.gurupi
Fiz o sugerido e estah vindo o codigo das teclas. Mas o problema nem eh esse. O problema eh q quando digito por exemplo "DISCO" ele nao corre o cadastro como fazia antes, ou seja, a pesquisa nao eh feita no momento q o usuario digita as teclas.

Marcos Roberto.

Busca Incremental nao funciona mais com xhb 1.2.1 + hwgui

Enviado: 01 Dez 2011 15:00
por marcos.gurupi
Eu solucionei assim:

Na funcao browse3 eu tive q passar mais dois parametros Numero da area de trabalho. Entaum ficou assim:

Código: Selecionar todos


Static Function BrowseKey3( oBrowse,key,nKeyEx,oButton,vBD,vInd)

...

gPes : SetText(Upper(vPes)) 
gPes : SetFocus() 

Select(vBD)
OrdSetFocus(vIND)

dbseek(Upper(vpes),.T.) 
oBrowse:Refresh() 
oBrowse:SetFocus() 
Return .T. 


Marcos Roberto.