Primeiro exemplo:
inválido, usa variável que não tem no fonte.
Segundo exemplo:
inválido, lembrando que WHEN é executado antes que o GET seja posicionado, portanto não se sabe qual o get que corresponde à posição atual dentro do WHEN.
Em todo caso:
LOCAL GetList := {}, cVar1 :=Space(2), cVar2:=Space(2)
@10,00 GET cVar1 When NavegaGet()
@11,00 GET cVar2 When NavegaGet()
READ
FUNCTION NavegaGet()
IF Lower( ReadVar() ) $ "cvar1,cvar2"
Alert( ReadVar() )
ENDIF
RETURN .T.
Como percebeu, seus dois exemplos foram inválidos.
Precisaria de algum exemplo válido pra mostrar alguma coisa.
Em todo caso, um exemplo antigo, usando classe por causa das 45 variáveis envolvidas:
http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=16835Note que mencionei getsys alterada.
A Getsys original falha na atualização da TELA, pode mostrar conteúdo errado em certas situações.
Nem dá pra dizer que é bug do Harbour, e nem vai ter alteração, já que é exatamente igual no Clipper.
Muito melhor corrigir isso na getsys, e evitar gambiarras em fontes.
A mudança que fiz está com "by JPA", uma variável e dois FOR/NEXT, na função ReadModal()
DO WHILE ! nPos == 0
aVarGet := Array( Len( GetList ) )
FOR EACH oElement IN GetList // by JPA to otimize screen update
aVarGet[ oElement:__EnumIndex ] := oElement:VarGet()
NEXT
PostActiveGet( oGet := GetList[ nPos ] )
IF ( VALTYPE( oGet:reader ) == "B" )
EVAL( oGet:reader, oGet ) // Use custom reader block
ELSE
GetReader( oGet, lIsMouse ) // Use standard reader
ENDIF
FOR EACH oElement IN GetList // by JPA to otimize screen update
IF aVarGet[ oElement:__EnumIndex ] != oElement:VarGet()
oElement:Display()
ENDIF
NEXT
nPos := Settle( GetList, nPos )
ENDDO
Uma vez com a getsys corrigida, basta que o conteúdo da variável seja atualizado.
Se o objetivo for apenas atualizar tela, não precisa nada mais além disto.
Pegue o exemplo do post mencionado e faça os testes com e sem alteração na getsys.
Com a getsys alterada, vai ver os valores se alterando durante a digitação.
Com a getsys original, vai ver os valores se alterarem somente quando o GET passar pelos valores, isso se passar pelos valores.
Nos dois casos, os valores vão estar corretos, a diferença vai ser somente em tela.