Tenho um DIALOG com os GETS para cadastrar o cliente. Coloquei um BUTTONEX [...] para que possa ao clicar chamar um novo DIALOG com um BROWSE retirado aqui do forum, onde digito e faço uma busca pelo nome do cliente.
Ao localizar o cliente, teclo ENTER e o DIALOG se fecha rapidamente e abre novamente, como se ficasse no keyboard o CHR(13) tentei usar o CLEA TYPE mais nao resolveu, gostaria de teclar ENTER e voltar ao dialog anterior. Ja uso o EndDialog() mais como disse, fecha e abre novamente.
Código: Selecionar todos
local arq1,areantes:=alias(),idxantes:=indexord()
IF abrearea("CLIENTE")=.F.
return nil
ENDIF
PRIVATE gPes, vPes:="",keyAnt:=0,oBrw,oButFechar,recebedados:=1,oFrm
INDEXORD(1)
INIT DIALOG oFrm TITLE [Pesquisando Cliente] CLIPPER FONT oFont;
SIZE larjanmain-100,altjanmain-200 ;
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
*@ 550,altjanmain-250 BUTTON oButFechar CAPTION "Fechar" size 80,32;
*STYLE WS_TABSTOP ACTION { || EndDialog() }
@ 700,altjanmain-270 BUTTON oButton3 CAPTION "Fechar" OF oFrm SIZE 80,32 ;
STYLE WS_TABSTOP ON CLICK { || EndDialog() }
@ 10,550 say oTecla CAPTION space(30) size 200,25
*@ 500,0 say [F7 - Sobre - F11 Calculadora] size 250,30
@ 10 ,50 BROWSE oBrw DATABASE OF oFrm SIZE 850, 380 ;
STYLE WS_VSCROLL + WS_HSCROLL;
ON POSCHANGE {|| SetFocus(oBrw:handle ) };
ON CLICK {|| BrowseKey(oBrw,13)}
*oBrw:alias := aLIAS()
oBrw:bKeyDown := {|o,key| BrowseKey(o, key) }
oBrw:AddColumn( HColumn():New( "Nome" , FieldBlock("CLIENTE"),"C", 40,0) )
oBrw:AddColumn( HColumn():New( "Endereco" , FieldBlock("ENDERECO"),"C", 50,0) )
oBrw:AddColumn( HColumn():New( "Telefone1" , FieldBlock("TELEFONE"),"C", 09,0) )
oBrw:AddColumn( HColumn():New( "Telefone2" , FieldBlock("TELEFONE1"),"C", 09,0) )
ACTIVATE DIALOG oFrm
FECHAAREA("CLIENTE")
ABREAREA(areantes)
RETURN oForm:lresult
*****************************************************************************
Static Function BrowseKey( oBrowse, key )
*****************************************************************************
*Local vTxt :=[Tecla Pressionada:]+strzero(key,3)
*SetWindowText( oTecla:handle, vTxt)
DO CASE
CASE KEY= 27
EndDialog()
CASE KEY =46
//MSGINFO([DEL])
//DBDELETE()
oBrw:REFRESH()
CASE KEY = 13
RECEBEDADOS()
**************************aqui fecho o dialog*************************
[b]EndDialog()[/b]
[b]aqui faz encerrar e reabre novamente logo apos, já com o clique do mouse nao ocorre a reabertura[/b]
*************************************************************************
RETURN .F.
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(UPPER(vpes))
//locate for vPes in Nome
oBrw:Refresh()
oBrw:SetFocus()
return nil
Como consigo resolve isto?
Ate+,


