Como contornar o VALID

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem por JoséQuintas »

get.png
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 ?
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como contornar o VALID

Mensagem por Itamar M. Lins Jr. »

Olá!
Verificando se o foco estava no get com valid e teclou ENTER.

Código: Selecionar todos

If hwg_Getkeystate(VK_RETURN)< 0
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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
valid.png
Mesma rotina, aí não perdeu o foco.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem por JoséQuintas »

focus.png
focus2.png
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
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como contornar o VALID

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como contornar o VALID

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem por JoséQuintas »

Código: Selecionar todos

   hwg_MsgInfo( Transform( hwg_GetKeyState( VK_RETURN ), "" ) )
Recebi retornos 0, 1, -127, -128
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/
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Como contornar o VALID

Mensagem 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
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como contornar o VALID

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como contornar o VALID

Mensagem 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()
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como contornar o VALID

Mensagem por Itamar M. Lins Jr. »

Olá!
Ele "Paulo" deve usar hwgui bem antiga.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder