Página 1 de 1

GETs aninhados

Enviado: 23 Mar 2008 14:17
por Romeuk
Amigos:
Primeiro post, pois não encontrei algum ítem relacionado(a pesquisa que fiz no fórum foi muito rápida).
Alguém pode me ajudar indicando um link ou exemplo de programa que contenha gets aninhados (ou reads aninhados)?
Exemplo: dentro de um get, uma clausula de validação deste get deve conter outro get para receber nova informação.
Grato por qualquer ajuda

Enviado: 23 Mar 2008 16:50
por Pablo César
Seja bem vindo ao nosso fórum !

Com este termo "aninhar GETs", realmente não existe. Mas neste tópico onde menciona:
seria possivel dentro de minha função de pesquisa haver outro Get?
tem uma indicação minha falando da função GETINPUT da CT.LIB. é a forma menos trabalhosa de fazer um get aninhado, pois da forma convencional acho que deverias utilizar um CLEAR GETS para liberar o GET vigente.

Enviado: 23 Mar 2008 18:37
por Toledo
Romeuk, veja um exemplo:

Código: Selecionar todos

LOCAL getlist:={}
cVar1:= SPAC(20)
cVar2:= SPAC(20)
@ 10,10 SAY "Campo 1..:" GET cVar1 Valid (outroget())
@ 12,10 SAY "Campo 2..:" GET cVar2
READ


Func outroget()
LOCAL getlist:={}, cVar3
cVar3:= SPAC(20)
@ 16,10 SAY "Campo 3..:" GET cVar3
READ
Retu (.T.)
Observe que coloquei no exemplo acima uma variável local chamada getlist, uma na rotina origem e outra na função outroget(), com isto posso aninhar quandos GETs forem necessários.

Abraços,

GETs aninhados

Enviado: 23 Mar 2008 19:25
por Romeuk
Grato aos dois. Testei a solução da variável local Getlist e funcionou perfeito. Para aprender com os erros, aqui vai (resumido) o que eu estava fazendo:

Func Principal()
@ . . say . . get var1
@ . . say . . get var2 valid Checa()
@ . . say . . get var3
read


Func Checa()
local oGet, var4
oGet := Getactive()
if oGet:varGet() = "9"
@ 13,32 say "Especifique: " get var4
Read
endif
return .T.

Com isso, ao validar, o Getactive() passava a ser var1, no Read principal (e não na variável var4 da função Checa()).

PS: Estou migrando um zilhão de linhas de programação para o xHarbour depois de muito tempo sem mexer com Clipper.

Grato de novo

RomeuK