Página 1 de 1

Fechar uma janela modal sem passar pela Validação

Enviado: 05 Nov 2018 19:23
por asimoes
Pessoal,

Tem um campo get que tem um valid {|| ! Empty( ThisForm:oCodigo:VarGet() }

Tem como fechar a janela com ThisForm:Close() sem passar pela validação do campo ?

Isso acontece quando tem uma validação em algum campo e se o usuário quer encerrar a janela pelo X ou pelo botão sair, a validação é executada.
Para sair, o usuário teria que digitar algo no campo get para poder encerrar, tem o pulo do gato ?

Fechar uma janela modal sem passar pela Validação

Enviado: 06 Nov 2018 16:38
por Itamar M. Lins Jr.
Ola!
No ultimo registro eu coloco um PHANTOM get "size 0,0 disable"
E tem como saber do FOCO e a TECLA pressionada.
Na 2.20 o ultimo get não é validado!

Saudações,
Itamar M. Lins Jr.

Fechar uma janela modal sem passar pela Validação

Enviado: 06 Nov 2018 16:47
por asimoes
Itamar,

Boa dica é uma saída.

Fechar uma janela modal sem passar pela Validação

Enviado: 06 Nov 2018 18:52
por asimoes
Pessoal,

Contornei dessa forma, validar o GET somente com enter, assim no click no botão sair não valida o get

Código: Selecionar todos

IF Empty( ThisForm:oCodigo:VarGet() ) .AND. hwg_GetKeyState( VK_RETURN ) < 0
   hwg_MsgStop("Código inválido", "Erro")
   lOk := .F.
ENDIF   

Fechar uma janela modal sem passar pela Validação

Enviado: 06 Nov 2018 18:56
por asimoes
Validando a tecla TAB

Código: Selecionar todos

IF Empty( ThisForm:oCodigo:VarGet() ) .AND. ( hwg_GetKeyState( VK_RETURN ) < 0 .OR. hwg_GetKeyState( VK_TAB ) < 0 )
   hwg_MsgStop("Código inválido", "Erro")
   lOk := .F.
ENDIF   

Fechar uma janela modal sem passar pela Validação

Enviado: 07 Nov 2018 09:54
por janio
Bom dia,

Se vc tem uma validação num GET que so eh disparada com ENTER ou TAB, vc tera que ao SALVAR, re-validar tudo novamente.

Imagina o seguinte:
- Get 1 tem uma validação;
- Usuario digita algo não valido;
- Em vez de dar ENTER, ele clica com o mouse no proximo GET;
- a validação não foi disparada e a informação constante esta errada;
- Usuario clica no botão salvar... se vc não validar novamente o Get 1, vc irá gravar uma informação invalida no banco

Janio

Fechar uma janela modal sem passar pela Validação

Enviado: 07 Nov 2018 14:58
por asimoes
janio escreveu:Se vc tem uma validação num GET que so eh disparada com ENTER ou TAB, vc tera que ao SALVAR, re-validar tudo novamente.
Janio nesse caso eu valido no click do botão Salvar no meu caso.
Não deixo gravar se o campo estiver em branco, agora se o usuário clicar no botão Sair eu simplesmente fecho a janela, isso é problema do usuário.
Poderia até não validar nada nos campos e validar somente no click do botão Salvar, isso é gosto.

Resumindo não deixo gravar se todos os campos que são exigidos não podem estar em branco.

Esse artifício do hwg_GetKeyState é só para deixar o usuário fechar a janela sem validar

Fechar uma janela modal sem passar pela Validação

Enviado: 07 Nov 2018 15:17
por Itamar M. Lins Jr.
Ola!
Velha discussão para quem programa em HTML.
Tudo deve ser REAVALIADO na FUNÇÂO que salva os dados, não somente do GET ou IMPUT no caso do HTML.
Tem professores que não acha legal VALIDAR os GETs/IMPUTs ali na hora quando SAI DO FOCO <On lost focus>
A Clausula REQUIRED do HTML que força a pessoa digitar no FORM foi criada agora no HTML 5. Mas ela só é executada quando teclamos <SUBMIT> no FORM.
Todo o FORM com o INPUT e FLAG <required> é avaliado somente quando pressionamos <ENVIAR/GRAVAR/SUBMIT>.

Código: Selecionar todos

 <form action="/action_page.php">
  Username: <input type="text" name="usrname" required>
  <input type="submit">
</form> 
Dessa forma penso ser a melhor, até o momento.
Tem as mascaras que só aceitam Letras/Números... neste caso é uma formatação, mas o "FOCO" não fica preso.
valido no click do botão Salvar no meu caso.
Vejo que está de acordo ai com as propostas de outras linguagens.

Saudações,
Itamar M. Lins Jr.