Página 1 de 1

Modificação na função Achoice, preciso do fonte.

Enviado: 05 Ago 2010 17:12
por ANDRIL
Amigos, percebi que quando se constroi um menu com achoice e ao escolher uma opção deste menu, abrindo uma nova escolha (sem apagar o menu anterior), a opção escolhida anteriormente não fica selecionada, fazendo com que nao saibamos qual caminho percorrido ate o menu atual.

Eu não tenho o Achoice.prg que vem com o Clpper52e, precisava do fonte para tentar alterar este procedimento, quando teclar ENTER a opcao escolhida fique destacada, pois desconfio que tem um restore screen ai no meio.

Se alguem tiver alguma dica ou o arquivo, agradeço desde já.

Ate+

Re: Modificação na função Achoice, preciso do fonte.

Enviado: 05 Ago 2010 17:45
por alxsts
Olá!

A AChoice() aceita um parâmetro que especifica o item inicial. Coloque a função dentro de um loop e a cada iteração ajuste o item inicial para o último selecionado. No NG tem exemplo fazendo isso.

Re: Modificação na função Achoice, preciso do fonte.

Enviado: 05 Ago 2010 18:02
por Toledo
Veja este exemplo do link abaixo:

Menu utilizando Achoice

Abraços,

Re: Modificação na função Achoice, preciso do fonte.

Enviado: 05 Ago 2010 18:30
por ANDRIL
Alxsts, ja utilizo este tecnica da posicao inicial no Achoice. O meu problema não esta ao iniciar o Achoice, o problema mesmo acontece é dentro da função de controle. Quando se tecla ENTER o qual retorna RETURN 1 (selecionado) o Achoice é encerrado, pois dai em diante, o nosso sistema já tem a opção que o usuário escolheu.

Veja esse exemplo:

Código: Selecionar todos

tela1:=savescreen(10,20,15,40)
priv ar1:={"Primeira opcao","Segunda opcao"},a2:={.t.,.t.}
sub1:=0;sub2:=0

sub1=achoice(10,20,15,40,ar1,ar2,"minhafuncao",sub1,"")

if sub1=1
       *--quando teclo enter no achoice acima na primeira opcao 
       *--o achoice é terminado e vem para este novo achoice,
       *--porem, o achoice anterior, nao fica com a 1a opcao 
       *--selecionada, para saber que este novo achoice se originou da
       *--1a opcao, fica apenas as opcoes na tela, sem nenhuma tarja
       *--É como se ao teclar ENTER para selecionar, a funcao achoice
       *--restaurasse a tela no quadrado do proprio achoice usando as
       *--coordenadas que passamos na propria funcao.
       sub2=achoice(16,20,18,40,ar3,ar4,"minhafuncao2",sub2,"")
     
elseif  sub1=2
endif
Toledo Já baixei o arquivo, vou verificar, obrigado.

Anexei o arquivo de imagem contendo o problema, esta como TXT pq nao aceita a extensão JPG, tem que renomea-lo.

Ate+

Re: Modificação na função Achoice, preciso do fonte.

Enviado: 06 Ago 2010 00:31
por alxsts
Olá!

Caro Andril:
não sei se entendi a tua necessidade mas, a intenção é ajudar, sempre.

Nunca soube que o fonte da função AChoice() veio junto com o Clipper 5.2e, como você escreveu. Creio que você tenha se enganado.

Para construir menus, prefiro utilizar outros recursos da linguagem ou mesmo de terceiros. Pelo que entendi, o teu menu tem vários níveis de hierarquia. É difícil fazer isto com AChoice() pois a função trabalha apenas com arrays unidimensionais. Teria que fazer um aninhamento de arrays e tratar tudo isso...