Problema com Lostfocus no Textbox
Moderador: Moderadores
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
Problema com Lostfocus no Textbox
Pessoal, estou tentando validar um campo que tem digitação obrigatória, mas dá bug quando tento sair da janela, ele fica chamando function que uso no on lostfocus umas 6 vezes até sair, isso quando não trava, como resolver
-
ivanil
- Usuário Nível 3

- Mensagens: 166
- Registrado em: 11 Set 2004 15:13
- Localização: Florianópolis/SC
Problema com Lostfocus no Textbox
Bom dia,
Acredito que só será possível te ajudar com mais precisão se você puder compartilhar o código. A forma como o evento está sendo tratado influencia diretamente no comportamento que você está descrevendo.
Lembrando que o evento onLostFocus é disparado toda vez que o campo perde o foco. Se dentro dessa função você está forçando o foco de volta, isso pode entrar em loop — especialmente se a janela ou outro componente tenta ganhar o foco nesse momento.
Em aplicações gráficas, é comum evitar validação no lostFocus, justamente porque algumas ações podem gerar esse tipo de comportamento inesperado, além de que o usuário pode facilmente saltar o campo com o mouse;
At;
Ivanil
Acredito que só será possível te ajudar com mais precisão se você puder compartilhar o código. A forma como o evento está sendo tratado influencia diretamente no comportamento que você está descrevendo.
Lembrando que o evento onLostFocus é disparado toda vez que o campo perde o foco. Se dentro dessa função você está forçando o foco de volta, isso pode entrar em loop — especialmente se a janela ou outro componente tenta ganhar o foco nesse momento.
Em aplicações gráficas, é comum evitar validação no lostFocus, justamente porque algumas ações podem gerar esse tipo de comportamento inesperado, além de que o usuário pode facilmente saltar o campo com o mouse;
At;
Ivanil
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problema com Lostfocus no Textbox
Lembro que esse ponto foi problema no DLAUTO, aquele automático.
Se não me engano, dá pra fazer testes no VALID.
Precisa testar
parte do fonte genérico de validação:
fonte de testar aonde está o foco
Simplificando:
Se o foco está no button CANCEL, significa que foi solicitado cancelamento.
Nesse caso o VALID é anulado, retorna verdadeiro sem fazer qualquer teste adicional.
Como eu já disse: faça o teste.
E confirme se já não existe algo relacionado a isso.
Na OOHG existe a cláusula CANCEL ou algo assim, que indica controles que podem anular as validações, como CANCEL e outros.
OOHG é uma das variações de HMG/minigui.
Talvez pedir um recurso igual na HMG Extended, afinal, é só olhar o fonte pra saber como foi feito.
Se não me engano, dá pra fazer testes no VALID.
Precisa testar
parte do fonte genérico de validação:
Código: Selecionar todos
nPos := hb_AScan( ::aControlList, { | e | e[ CFG_CTLTYPE ] == TYPE_BUTTON .AND. ;
e[ CFG_CAPTION ] == "Cancel" } )
IF nPos != 0
IF GUI():IsCurrentFocus( ::xDlg, ::aControlList[ nPos, CFG_FCONTROL ] )
RETURN .T.
ENDIF
ENDIF
Código: Selecionar todos
STATIC FUNCTION gui_IsCurrentFocus( xDlg, xControl )
LOCAL lOk
IF PCount() == 1
lOk := ( GetActiveWindow() == GetProperty( XDlg, "HANDLE" ) )
ELSE
lOk := ( GetProperty( xDlg, "FOCUSEDCONTROL" ) == xControl )
ENDIF
RETURN lOk
Se o foco está no button CANCEL, significa que foi solicitado cancelamento.
Nesse caso o VALID é anulado, retorna verdadeiro sem fazer qualquer teste adicional.
Como eu já disse: faça o teste.
E confirme se já não existe algo relacionado a isso.
Na OOHG existe a cláusula CANCEL ou algo assim, que indica controles que podem anular as validações, como CANCEL e outros.
OOHG é uma das variações de HMG/minigui.
Talvez pedir um recurso igual na HMG Extended, afinal, é só olhar o fonte pra saber como foi feito.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
mmarcondes
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 02 Jul 2021 15:06
- Localização: witmarsum
Problema com Lostfocus no Textbox
Pessoal, obrigado pelas ajudas, mudei de textbox para getbox, e mais parecido com o Clipper.