Dúvida achoice()

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

José Luiz
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 15 Mar 2008 17:19
Localização: São Carlos - SP

Dúvida achoice()

Mensagem 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.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida achoice()

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
José Luiz
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 15 Mar 2008 17:19
Localização: São Carlos - SP

Re: Dúvida achoice()

Mensagem 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.
Responder