Página 1 de 1

Recursos do Object Get

Enviado: 07 Jan 2016 15:17
por asimoes
Pessoal,

Um recurso interessante do objeto Get são os métodos que podemos utilizar em uma validação (valid)

Duas formas de restaurar o valor do GET se for necessário exibir o valor original/desfazer alteração em caso de digitação errada

Código: Selecionar todos

cCidade := "RIO DE JANEIRO"
@ 10,00 SAY "Cidade: " GET cCidade VALID Valida(@cCidade)
READ

FUNCTION Valida(cVar)
LOCAL cGet := GetActive(), cBuf := cGet:VarGet()
IF Empty(cBuf)
   cVar:= GetList[1]:Original
   //Ou  
   GetList[1]:Undo()
ENDIF
RETURN .T.

Recursos do Object Get

Enviado: 07 Jan 2016 17:33
por asimoes
Uma variação da função:

Código: Selecionar todos

FUNCTION Valida(cVar)
LOCAL cGet := GetActive(), cBuffer := cGet:VarGet()
STATIC cVarOri
   IF cVarOri = Nil
      cVarOri := GetList[1]:Original 
   ENDIF
   IF cBuffer <> cVarOri
      GetList[1]:VarPut(cVarOri)
      GetList[1]:UpdateBuffer()
   ENDIF
RETURN .T.

Recursos do Object Get

Enviado: 07 Jan 2016 18:58
por alxsts
Olá!

Se não se importa, fiz uns ajustes no teu código. Da forma como estava, poderia dar problema. Você faz uma referência fixa a GetList[1] quando o correto é tratar o Get atual (GetActive() ), que pode ser diferente de um, quando o GetList tem múltiplos Gets.
cCidade := "RIO DE JANEIRO"

Código: Selecionar todos

@ 10,00 SAY "Cidade: " GET cCidade VALID Valida(@cCidade)
READ

FUNCTION Valida(cVar)
LOCAL cGet := GetActive(), cBuf := cGet:VarGet()

IF Empty(cBuf)
   cVar:= cGet:Original
   //Ou  
   cGet:Undo()
ENDIF
RETURN .T.

Código: Selecionar todos

FUNCTION Valida()
LOCAL cGet := GetActive(), cBuffer := cGet:VarGet()
STATIC cVarOri
   IF cVarOri = Nil
      cVarOri := cGet:Original 
   ENDIF
   IF cBuffer <> cVarOri
      cGet:VarPut(cVarOri)
      cGet:UpdateBuffer()
   ENDIF
RETURN .T.
Não testei...

Recursos do Object Get

Enviado: 07 Jan 2016 19:50
por asimoes
Alexandre,

Bem lembrado!

Fica a dica para as duas formas.

Recursos do Object Get

Enviado: 30 Out 2018 12:14
por JoséQuintas
É que trata-se apenas de um exemplo.
Uso isso no copiar/colar - não o control-u, mas o get atual.