Validar Textbox

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

Validar Textbox

Mensagem por jcsprog »

Utilizo Harbour x Minigui

Estou validando se o cliente existe ou nao funciona mas se utilizar as setas ou tab ele passa sem validar veja abaixo :

Código: Selecionar todos

                    @ 70,410 TEXTBOX cod_merc;
                              WIDTH 60			;
                              MAXLENGTH 10   ;
                              on enter (F_cod_merc(Prodt_1.cod_merc.value))

******************************************************
PROCEDURE F_cod_merc() // validação de codigo de produto
******************************************************
local _Pode:=.T.
IF Prodt->(DBSEEK(Prodt_1.cod_merc.value))
   MSGINFO("Codigo Já Cadastrado!","Verifique")
   CancelarProdt()
   _Pode:=.F.
Endif   
RETURN _Pode
Editado pela última vez por Pablo César em 14 Nov 2012 12:13, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
jcsprog
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Validar Textbox

Mensagem por Pablo César »

Para o TEXTBOX, você tem os seguintes eventos:

On Change
On Enter
On GotFocus
On LostFocus

Nesse seu caso, ao invés de usar "On Enter" utilize "On LostFocus". Mas também terá que validar quando este for vazio. Uma outra sugestão: você deveria utilizar o Upper() para o Seek. Assim tanto faz se o usuário digitar maiúsculas ou minúsculas ou mixto.

A sua função F_cod_merc, não precisa retornar valor algum, a não ser que seja necessário em algum outro lugar que precise atribuir a uma variável (por exemplo) ou até mesmo fazer uma condição. Mas nesses casos, tais Eventos, apenas irão chamar a função. Não funciona como no Clipper. Se você quer que o cursor retorne ao TEXTBOX quando este for inválido, é só adicionar o SetFocus, mas antes você poderia zerar o valor do TEXTBOX para que o usuário digite novamente ou não zerar para que possa corrigir. Vai de você a forma que quiser fazer. Qualquer dificuldade, poste a suas tentativas que faremos correções no caso que não consiga.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

Validar Textbox

Mensagem por jcsprog »

Ola agradeço a dica
ficou assim funciona legal

Código: Selecionar todos

            @ 70,410 TEXTBOX cod_merc;
                           WIDTH 60			;
                           MAXLENGTH 10   ;
                           on lostfocus(F_cod_merc(Prodt_1.cod_merc.value))

******************************************************
PROCEDURE F_cod_merc() // validação de codigo de produto
******************************************************
IF Prodt->(DBSEEK(Prodt_1.cod_merc.value)) .or. empty(Prodt_1.cod_merc.value) 
   MSGINFO("Codigo Já Cadastrado!","Verifique")
   CancelarProdt()
Endif   
RETURN 
Obrigado
Editado pela última vez por Pablo César em 14 Nov 2012 20:47, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Validar Textbox

Mensagem por microvolution »

boa noite professores!
pelo que percebo. Se a gente usar o LOSTFOCUS funciona, mas, gera loop do sistema por várias vezes. Não existe nada que realmente a gente possa tratar o TAB/TEXTBOX agora na hmg 3.4.4?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Responder