Página 1 de 1

Validar Textbox

Enviado: 14 Nov 2012 12:07
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

Validar Textbox

Enviado: 14 Nov 2012 12:23
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.

Validar Textbox

Enviado: 14 Nov 2012 17:44
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

Validar Textbox

Enviado: 06 Abr 2019 00:47
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?