Página 1 de 1

Dúvida achoice()

Enviado: 06 Jun 2008 22:03
por José Luiz
Caros colegas, existe a possibilidade de tornar indisponível alguns itens de um menu criado por vetores e a função achoice para preencher um campo ? Tenho um sistema em clipper 5.2 e nos gets uso uma rotina de ajuda para preenchimento dos campos, formada pela função achoice(). Gostaria que dependendo do que foi escolhido no get anterior, apenas alguns itens do menu no achoice() ficasse disponível para escolha e preenchimento do próximo get.

Ilustrando:

@ 5,55 say "Tipo:" get voutros pict "@!" valid .not. empty(voutros) WHEN AVISO("TECLE <<<F1>>> PARA O TIPO DE PROCESSO")
@ 5,60 say chr(25) color 'r/n'
@ 6,2 say "Fase:" get vfase pict "@!" valid .not. empty(vfase) WHEN AVISO("TECLE <<<F1>>> PARA A FASE EM QUE SE ENCONTRA O PROCESSO")
@ 6,7 say chr(25) color 'r/n'

PROCEDURE AJUDA(PROG,LINHA,VAR)

LOCAL OUTRO[4]
LOCAL FASES[12]

OUTRO[1]:="C.P. "
OUTRO[2]:="INFRATOR "
OUTRO[3]:="OUTROS "
OUTRO[4]:="NÇO INFR."

FASES[1]:= "PRECATàRIA"
FASES[2]:= "OUTROS "
FASES[3]:= "SEM SENT. "
FASES[4]:= "COM SENT. "
FASES[5]:= "TRIBUNAL "
FASES[6]:= "EXECUۂO "
FASES[7]:= "REVISÇO "
FASES[8]:= "P/ARQUIVAR"
FASES[9]:= "DEVOLVIDA "
FASES[10]:="REDISTRIB."
FASES[11]:="ARQUIVADO "
FASES[12]:="APENSADO "

DO CASE

CASE VAR = "VOUTROS"
SAVE SCREEN
@ 4,60 TO 9,70
sombra2(4,60,9,70)
RESP:=ACHOICE(5,61,8,69,OUTRO)
if resp = 0
resp = resp + 1
endif
VOUTROS:=OUTRO[RESP]
RESTORE SCREEN

CASE VAR = "VFASE"
SAVE SCREEN
@ 5,7 TO 18,18
sombra2(5,7,18,18)
RESP:=ACHOICE(6,8,17,17,FASES)
if resp = 0
resp = resp + 1
endif
VFASE:=FASES[RESP]
RESTORE SCREEN

ENDCASE
RETURN

Dependendo do que foi escolhido no primeiro get, gostaria que apenas alguns itens do segundo menu ficassem disponíveis. Obrigado.

Dúvida achoice()

Enviado: 08 Jun 2008 09:53
por Pablo César
José Luiz, se a sua dúvida é cómo fazer para que sejam exibidos os possíveis itens do ACHOICE para cada GET, você pode contar com a possibilidade de usar o sexto parâmetro, que sendo um vetor paralelo com o que é apresentado, e que cada elemento deverá ter o valor lógico conforme você queira que seja selecionável ou não.

Outra forma, mais simples, e na minha opinião mais adequada, seria você re-atribuir o vetor FASES do seu exemplo conforme prévia seleção do que foi escolhido do vetor OUTROS. Assim você teria um vetor diferenciado para cada item do vetor OUTROS.

Re: Dúvida achoice()

Enviado: 11 Jun 2008 23:14
por José Luiz
Oi Pablo, usei a sua segunda opção. Como eu não preciso listar os itens que não vou usar, não usei a primeira dica. Para cada opção do vetor OUTROS defini o vetor FASES. Não havia pensado nisso. Obrigado.