Página 1 de 1

ongotfocus dúvida

Enviado: 14 Mai 2019 13:01
por Paulao
Bao tarde amigos, tenho uma duvida do ONGOTFOCUS.

Tenho o seguinte TEXTBOX

Código: Selecionar todos


      DEFINE TEXTBOX oGet_cnfj_cai
         ROW	170
	 COL	720
	 WIDTH	147
         FONTNAME "Tahoma"
         FONTSIZE 10
         TOOLTIP "Digite o CNPJ/CPF DO PARCEIRO"
         UPPERCASE  .T.
         MAXLENGTH 14
         VALUE x_cnfj_cai
         ON GOTFOCUS poe_cnpj(form_cai.oGet_parc_cai.value)     
      END TEXTBOX
Minha intenção era quando o textbox entrasse em foco ele chamava uma funcão para buscar o CPF/CNPJ do cliente

Código: Selecionar todos

Func poe_cnpj(par1)
cPesq := par1
dbselectarea('parnomad')
ordsetfocus('nome_par')
dbseek(cPesq)
if eof()
    Msgbox("Cliente não encontrado")
else
    msgbox("Cliente encontrado")
endi
form_cai.oGet_hist_cai.setfocus
return(nil)
O problema é que quando a função é chamada ela volta o foco para o textbox novamente que chama a funcão novamente formando m loop infinito, tentei mudar o foco para outro textbox após o textbox que chama a função mas não funciona assim, o foco volta para o textbox que chama a função. o que da pra fazer neste caso

ongotfocus dúvida

Enviado: 14 Mai 2019 17:30
por rubens
Só um chute
Coloque a função no On init do Form ou então depois do end do define window..

Rubens

ongotfocus dúvida

Enviado: 17 Mai 2019 10:05
por Adalberto
paulao, buenos dias

Al final de la función de búsqueda en RETURN(NIL) debe ser RETURN .T.

Que te vaya bien.

Saludos, Adalberto.

ongotfocus dúvida

Enviado: 20 Jun 2022 16:20
por carlaoonline
Boa tarde!

ON GOTFOCUS

MUITO CUIDADO COM ESSE PARÂMETRO...

Se usar:

Código: Selecionar todos

ON GOTFOCUS  dbSelectArea("CLIENTES") 
e lá pela tantas, com outro arquivo aberto e selecionado em outra área qualquer... tudo pode mudar após um simples MsgBox.

A qualquer comando de MsgBox, wapi_MessageBoxTimeout, etc... ele dá um SELECT no CLIENTES e esquece o arquivo que vc estava até antes da sua mensagem ser mostrada. (No caso de estar no mesmo Form)

Ai voce ACHA que esta navegando em um arquivo e dê-lhe a bagunçar outro sem saber, pois após o MsgBox o foco foi para o arquivo CLIENTES.


No meu caso, depois de apanhar um pouco e xingar o Harbour, entendi o que estava acontecendo aqui...

daí resolvi assim...




nAreaAtual:=Select()
MSGBOX("Arquivo em uso. bla bla bla...") // Aqui, ele automaticamente um Select no CLIENTES...
Select(nAreaAtual)


Depois criei uma Funcao chamada Alerta, que faz esse Re-select ao sair da função.