Como validar uma entrada no componente TEXTBOX

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Como validar uma entrada no componente TEXTBOX

Mensagem por billy1943 »

Peço aos colegas, que dentro do exemplo simples abaixo, usando o componente TEXTBOX, e a IDE do HMG (Roberto Lopez), suponham a seguinte situação:

- eu quero limitar o Estado digitado somente aos seguintes: "SP", "MG", "MT" e "MS"
- como eu incluiria tal condição no momento de digitação, semelhante à cláusula VALID do Clipper (get/read) ?
- pode ser na forma de uma função externa, que quando acionada ela retorne um valor Verdadeiro ou Falso e enquanto não der Verdadeiro não passa de jeito nenhum ao campo seguinte.

O próximo campo a ser editado é o Fone1 que passa o foco quando teclo <ENTER>.

Pergunto também: e se eu terminar a entrada do campo com <TAB> ?

Código: Selecionar todos

@130,370 TEXTBOX  Agenda_Estado     ;
		WIDTH 40	 ;
		FONT "Arial" Size 9      ;
		TOOLTIP "Digite o Estado do Contato";
                MAXLENGTH 02 UPPERCASE;
                ON ENTER Novo_Agenda.Agenda_Fone1.SetFocus 
Editado pela última vez por Toledo em 28 Nov 2014 18:25, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Outras Bibliotecas Visuais e IDEs, uma vez que seu conteúdo não tem relação com os objetivos daquela seção.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como validar uma entrada no componente TEXTBOX

Mensagem por Toledo »

Amigo, coloque uma validação no ON ENTER:

Código: Selecionar todos

                ON ENTER ValidaUF()

Código: Selecionar todos

Function ValidaUF()
Local vUF := Novo_Agenda.Agenda_Estado.Value
IF !(vUF $ [SP-MG-MT-MS])
  MsgInfo("Sigla do Estado Inválida")
  Novo_Agenda.Agenda_Estado.SetFocus
ELSE
  Novo_Agenda.Agenda_Fone1.SetFocus
ENDIF
Return Nil
billy1943 escreveu:Pergunto também: e se eu terminar a entrada do campo com <TAB> ?
Neste caso a validação no ON ENTER não vai funcionar.

O que você pode fazer é tentar anular a função TAB, por exemplo:

Código: Selecionar todos

On Key TAB Of Novo_Agenda Action NadaFaz()
Este comando coloque antes de ativar a janela (Novo_Agenda.Activate ou ACTIVATE WINDOW Novo_Agenda)

Código: Selecionar todos

PROC NadaFaz()
RETU
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Como validar uma entrada no componente TEXTBOX

Mensagem por billy1943 »

Olá Toledo

Seguindo suas orientações inclui as funções VALIDAUF() e NADAFAZ() para o teste abaixo:

Código: Selecionar todos

       @130,370 TEXTBOX  Agenda_Estado     ;
				WIDTH 40	 ;
				FONT "Arial" Size 9      ;
				TOOLTIP "Digite o Estado do Contato";
                               MAXLENGTH 02 UPPERCASE;
				ON ENTER ValidaUF() ;
				On Key TAB Of Novo_Agenda_Estado Action NadaFaz()


A primeira funcionou perfeitamente dando mensagem de alerta e passando o foco para o próximo campo.

Já a linha onde testa o acionamento da tecla TAB está dando erro de compilação abaixo, conforme conteúdo do Error.Log:

Código: Selecionar todos

Harbour 3.2.0dev (r1407111333)
Copyright (c) 1999-2014, http://harbour-project.org/

C:\hmg.3.3.1\SAMPLES\Applications\AgendaNova\Agenda2.PRG(246) Error E0030  Syntax error "syntax error at '@'"

1 error

No code generated.
hbmk2[agenda]: Erro: Executando o compilador Harbour (interno): 1
(C:\hmg.3.3.1\harbour\bin\harbour.exe) -n2 C:\hmg.3.3.1\SAMPLES\Applications\AgendaNova\agenda.prg -DHBMK_HAS_HMG=1 -q -DHBMK_HAS_AGENDA=1 -oC:\Users\Willian\AppData\Local\Temp\hbmk_7g2gvb.dir\ -iC:\hmg.3.3.1\harbour\include -i. -iC:\hmg.3.3.1\include
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como validar uma entrada no componente TEXTBOX

Mensagem por Toledo »

billy1943 escreveu:Já a linha onde testa o acionamento da tecla TAB está dando erro de compilação
Amigo, como observei na minha mensagem anterior, o comando On Key TAB Of Novo_Agenda Action NadaFaz() tem que ser colocado antes de ativar a janela (Novo_Agenda.Activate ou ACTIVATE WINDOW Novo_Agenda). Então no seu código onde está o TEXTBOX procure por Novo_Agenda.Activate ou ACTIVATE WINDOW Novo_Agenda e incluir na linha anterior o comando: On Key TAB Of Novo_Agenda Action NadaFaz()

Atenção: o comando On Key TAB Of Novo_Agenda Action NadaFaz() não faz parte do TEXTBOX, é um comando a parte.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Como validar uma entrada no componente TEXTBOX

Mensagem por billy1943 »

Nosso amigo Toledo novamente esclareceu a minha dúvida, o que facilitou tudo.

Entendi agora que o TAB fica totalmente desativado em todos os TEXTBOX daquela janela (Window), e que aceitará apenas a tecla <ENTER> para terminar cada edição.

Obrigado.

RESOLVIDO.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder