Página 1 de 2
Como contornar o VALID
Enviado: 14 Ago 2023 10:09
por JoséQuintas
Tem lá o GET com VALID.
Tem lá o botão cancelar.
Ao clicar no cancelar, não deixa sair do VALID.
Também fica ruim que o destaque de foco desaparece.
Olhando a tela não há destaque para o que está sendo validado (hwg_SetColorInFocus() perdeu o efeito porque perdeu o foco)
Tem alternativa pra isso ?
Como contornar o VALID
Enviado: 14 Ago 2023 10:36
por Itamar M. Lins Jr.
Olá!
Verificando se o foco estava no get com valid e teclou ENTER.
Saudações,
Itamar M. Lins Jr.
Como contornar o VALID
Enviado: 14 Ago 2023 11:19
por JoséQuintas
E como usa isso ?
Num primeiro momento testei todas as possibilidades: menor, maior e igual e nenhuma teve efeito.
Código: Selecionar todos
IF aItem[ CFG_ISKEY ] .AND. hwg_GetKeyState( VK_RETURN ) == 0
Como contornar o VALID
Enviado: 14 Ago 2023 11:25
por JoséQuintas
engraçado...
Código: Selecionar todos
STATIC FUNCTION OkCurrent( aItem, Self )
LOCAL nSelect, lEof, xStatus
xStatus := hwg_GetKeyState( VK_RETURN )
hwg_MsgInfo( xStatus )
IF aItem[ CFG_ISKEY ] .AND. hwg_GetKeyState( VK_RETURN ) == 0
Mesma rotina, aí não perdeu o foco.
Como contornar o VALID
Enviado: 14 Ago 2023 11:30
por JoséQuintas
Única explicação: ter atualizado o label antes da mensagem.
Código: Selecionar todos
lEof := Eof()
SetLabelValue( ::oDlg, aItem[ CFG_VCONTROL ], FieldGet( FieldNum( aItem[ CFG_VSHOW ] ) ) )
SELECT ( nSelect )
IF lEof
#ifdef HBMK_HAS_HWGUI
hwg_MsgInfo( "Código não cadastrado" )
#endif
RETURN .F.
ENDIF
ENDIF
RETURN .T.
Alterar essa ordem pode resolver sobre o foco, mas ainda resta o VALID.
Como contornar o VALID
Enviado: 14 Ago 2023 12:23
por JoséQuintas
Aproveitei pra deixar o fonte mais genérico.
Colocando outra mensagem no VALID, o destaque de foco não desaparece nunca.
Mas deixando só a que interessa, o foco some.
Notas:
1) Os #ifdef são porque as outras LIBs não tem hwg_MsgInfo()
2) A outra mensagem é só em determinada condição, mas é a mesma hwg_MsgInfo()
3) Depois que postei, vi que o outro SEEK também pode ser simplificado pra SEEK xValue, o que não deixa nenhum comando de GUI entre as mensagens
Como contornar o VALID
Enviado: 14 Ago 2023 12:52
por JoséQuintas
Não dá pra usar o gravador de imagem do Windows pra mostrar isso.
O gravador do Windows é meio lixo: se perde com ampliação ativada, além disso, ele só grava a janela principal, mesmo com o foco na janela secundária.
Com a hwg_MsgInfo() dentro do IF: o amarelo do foco desaparece
Com a hwg_MsgInfo() FORA do IF, em todos os VALIDs, o foco vai ficando em todos os GETs.
Tirando isso, que não é o mais importante sobre o VALID, ainda tem o problema de não cancelar o VALID.
ESC até faz isso, mas além de abandonar o GET também abandona o módulo.
Como contornar o VALID
Enviado: 14 Ago 2023 12:57
por Itamar M. Lins Jr.
Olá!
E como usa isso ?
Eu uso com um FLAG lBtn := .F.
If teclou enter no valid ...
If Pressionou botão cancelar ...
Em qualquer controle eu uso {|| lBtn:=.t. ou lOk := .T....} para saber o que aconteceu.
GUI é foco o tempo todo.
E ainda tem o ON KEYDOWN {]|} do get...
Saudações,
Itamar M. Lins Jr.
Como contornar o VALID
Enviado: 14 Ago 2023 13:12
por Itamar M. Lins Jr.
Olá!
hwg_msginfo() //só mostra caracteres não mostra variaveis tipo logical, numeric, date... tem que transformar em charectere.
Saudações,
Itamar M. Lins Jr.
Como contornar o VALID
Enviado: 14 Ago 2023 15:28
por JoséQuintas
Código: Selecionar todos
hwg_MsgInfo( Transform( hwg_GetKeyState( VK_RETURN ), "" ) )
Recebi retornos 0, 1, -127, -128
Como contornar o VALID
Enviado: 14 Ago 2023 15:45
por pauloa1
No começo da função da valid coloca
if selffocus(objeto:handle)
return(.t.)
endif
Obs> Objeto: nome do botão cancelar
Paulo
Como contornar o VALID
Enviado: 14 Ago 2023 16:06
por Itamar M. Lins Jr.
Olá!
Não sei se com OwnnerButton vai funcionar. selffocus()
Será o evento ON CLICK neste caso.
Saudações,
Itamar M. Lins Jr.
Como contornar o VALID
Enviado: 14 Ago 2023 16:59
por JoséQuintas
Itamar M. Lins Jr. escreveu:Não sei se com OwnnerButton vai funcionar. selffocus()
Será o evento ON CLICK neste caso.
Não pode, se executar o click antes do valid, também executaria de um SAVE mesmo com conteúdo inválido.
Acaba dependendo de algo meio equivalente a NextKey(), que seria testar pra onde vai.
Se o SelfFocus() estiver testando se o foco está indo para o button poderá ser a melhor saída.
Só que ele terá que ser conhecido no momento do VALID - alguma variável visível ou equivalente
Como contornar o VALID
Enviado: 14 Ago 2023 17:09
por JoséQuintas
Função não existe.
Mas ok:
addons\hwgui.hbc (not installed):
HWG_DRAWFOCUSRECT()
HWG_GETFOCUS()
HWG_SELFFOCUS()
HWG_SETCOLORINFOCUS()
HWG_SETFOCUS()
Como contornar o VALID
Enviado: 14 Ago 2023 17:12
por Itamar M. Lins Jr.
Olá!
Ele "Paulo" deve usar hwgui bem antiga.
Saudações,
Itamar M. Lins Jr.