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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

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

Mensagem 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+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

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

Mensagem por Toledo »

Veja este exemplo do link abaixo:

Menu utilizando Achoice

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

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

Mensagem 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+
Anexos
duvida.txt
imagem contendo o que foi citado no codigo acima, esta como txt, renomear para jpg
(48.17 KiB) Baixado 126 vezes
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
Responder