Página 1 de 1

Como chamar função para validar no GetBox ?

Enviado: 08 Nov 2013 18:38
por Softwhouse
Como faço para chamar uma função de validação no GetBox ?

Como chamar função para validar no GetBox ?

Enviado: 08 Nov 2013 21:58
por Toledo
Fernando, no GETBOX você pode usar o VALID.

Código: Selecionar todos

     DEFINE GETBOX oEstado
            ROW    360
            COL    680
            WIDTH  30
            HEIGHT 20
            VALUE SPACE(2)
            PICTURE "@!"
            VALID {|| ValidaUF(this.value) }
            MESSAGE "Informe a Sigla do Estado"
     END GETBOX  
Veja também a pasta \SAMPLES\BASIC\GetBox da sua versão da MiniGui, que tem outros exemplos.

Abraços,

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 15:44
por Softwhouse
Toledo, boa tarde, já havia chamado a função dessa forma, acredito que o problema então esteja no retorno (.T.) pois o foco não sai do campo a validar.

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 16:53
por Toledo
Fernando, a função no VALID tem que retornar .T. ou .F., e o foco só vai para o próximo campo quando o retorno for .T.

Só lembrando....
Toledo escreveu:Mas o GetBox tem um pequeno problema quando se usa o VALID, você não consegui ir para um outro campo do form ou clicar em algum botão se deixar o GetBox vazio, você tem que digitar um valor válido para sair do GetBox, mesmo que você esteja clicando num botão "Sair" ou "Cancela" que vai finalizar o form (release). Apesar que teclando ESC o form é finalizado sem validar o GetBox.
Abraços,

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 18:08
por Softwhouse
Toledo, o que está acontecendo é o seguinte:

Usei Picture '@R 99.999.999/9999-99' e o 'this.value' passa a máscara junto. Qual o comando para passar somente o valor sem a máscara? Obrigado!

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 19:42
por Pablo César
Se o problema é remover as máscara após o This.Value, você poderia utilizar a função CharRem removendo os caracteres pontos, traços e barra.

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 20:09
por Softwhouse
Grande Pablo! Resolveu o problema. Estava pensando em usar StrTran() dentro da função. Usei CharRem(), que eu não conhecia, e ficou assim: Valid {||CharRem('. / -', this.value)}.
Valeu, muito obrigado.

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 20:16
por Toledo
Softwhouse escreveu:Usei Picture '@R 99.999.999/9999-99' e o 'this.value' passa a máscara junto.
Fernando, fiz um teste aqui e a máscara não vai junto com o this.Value.

Código: Selecionar todos

#include "minigui.ch"

*----------------------
function main
*----------------------

define window form_1 ;
	at 0,0 width 300 height 250 ;
	title "Getbox Picture Demo" ;
	main

	@  50,40 getbox getbox_1 Value Spac(14) Picture "@R 99.999.999/9999-99" ;
                 valid {|| ValDemo(this.value)}

	@  100,40 getbox getbox_2 Value Spac(10) Picture "@!"

end window

form_1.center
form_1.activate

return Nil

*----------------------
Func ValDemo(cGet)
*----------------------
MsgInfo(cGet)
Return .T.
picture.jpg
Abraços,

Como chamar função para validar no GetBox ?

Enviado: 11 Nov 2013 20:40
por Softwhouse
Ôpa, então tem coisa errada no meu código Toledo. Vou copiar seu código e montar com minha função de validação para ver o que está acontecendo, amanhã retorno. Obrigado!

Como chamar função para validar no GetBox ?

Enviado: 12 Nov 2013 09:14
por Softwhouse
Bom dia Toledo,

Na função ValDemo(cGet) substituí MsgInfo(cGet) por MsgInfo(Len(cGet)) e retornou 18 ao invés de 14. A máscara não vai, mas altera o tamanho da string que é testada se possui o tamanho 14 na função. AllTrim() já deve resolver.

Abraços