Navegação de gets usando gets comuns e com listbox

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Bom dia amigos !

Alguem já usou entrada de dados com gets "normais" e com listbox. Quando o foco é passado para o @... get listbox, não consigo voltar ao get anterior. Normalmente, quando as entradas tem somente gets "normais", utilizo a seta para cima para voltar ao get anterior. O problema é que isso não funciona com listbox.

Antecipadamente agradeço a atenção de todos.

Abraços
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Listbox no Clipper? Isso eu até tenho, mas implementei no meu GETSYS. Não está confundindo com outro recurso?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Bom dia Maligno !

Acho que não. No Clipper 5.3 existe esse argumento:

@ li,ci,lf,cf get var listbox{´SP´,´RJ´,´ES´} caption... message... etc...
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ah, sim. Agora tá explicado. Esqueci que o 5.3 tem alguns recursos a mais. Eu uso a versão 5.2. M desculpe, mas vou ficar devendo essa. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Este listbox tem um argumento chamado State que executa determinada função após a confirmação do get com Enter. Só que aceita somente Code Blocks tipo:

@... get listbox{´sp´,´rj´} State { || ReadExit( .F. ) }

Em vez de desativar o ReadExit como no exemplo acima, eu queria uma função que retornasse ao get anterior.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Tentou ler algum fonte dos exemplos que acompanham o Clipper?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Eu até dei uma olhada no getsys.prg mas não clareou nada. Na verdade, no meu programa, até consigo voltar nos gets usando Page UP e Page Down. Mas queria que voltasse tbm com a seta pra cima. O problema é que a navegação do listbox é feita justamente com ela. Atraves do Page Up e Page Down eu consigo voltar, mas não para o get anterior e sim para o primeiro da lista. O que eu preciso é de uma função que retorne a edição para o get situado na posição anterior a atual.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ademir escreveu:Mas queria que voltasse tbm com a seta pra cima. O problema é que a navegação do listbox é feita justamente com ela.
Quando fiz o meu listBox no Clipper, resolvi isso usando a barra de espaço para abrir o listBox. Nesta condição as setas servem para navegar pela lista. Ao escolher um ítem com Enter, a lista se retrai e as setas passam a servir para navegar pela lista de GETs. Esse listBox não tem um comportamento parecido com o que eu descrevi?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Exatamente isso. Vc tecla espaço, abre a lista de opções, escolhe uma com enter e pronto. O problema é que quando a lista se retrai, teclando as setas as opções do listbox ficam "rolando", sendo monstradas uma a uma.

E isso pelo visto é padrão dele. Alem disso, precisava se possivel, alterar o box da lista. Em vez de double line, queria usar single line.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por ANDRIL »

Ademir, as vezes é melhor agente criar nosso próprio listbox do que conseguir alterar um existente para implementar nossas necessidades. Acho até mais fácil vc criar uma função simples com o uso de ACHOICE que exiba uma lista de opções e usar esta função através da cláusula VALID do comando GET. Assim vc configura o uso das teclas de acordo com o que quer fazer. Eu particularmente uso o clipper 5.2e não conheço os recursos extras da versão 5.3 por isso sempre que precisei bolei algo parecido.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ademir escreveu:O problema é que quando a lista se retrai, teclando as setas as opções do listbox ficam "rolando", sendo monstradas uma a uma.
Ah, sim. Captei. É justamente essa partezinha que o meu listBox não tem. E não implementei assim (é padrão em Windows GUI), exatamente para evitar esse problema com as setas.
Aí fica realmente difícil. Não sei dizer se no 5.3 tem como alterar esse comportamento.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Então meu caro Maligno, como resolverei este problema ?

Esse @ ... get listbox é bem legal. Economiza codigo pacas e visualmente fica muito bom. Ele tem um argumento chamado Focus onde vc pode alterar algumas configurações. Sempre que o get recebe o foco, as instruçoes de dentro do code block são executadas. O problema é que não tenho muito experiencia em code blocks, classes, metodos, etc...
Sei por exemplo que:
para alterar o box de double para single a sintaxe é ListBox:hotBox := B_SINGLE
ListBox:hasFocus é .T. se o get recebeu o foco
A sintaxe do argumento Focus é: Focus { || <funçao> }

Com tudo isso, será que vc saberia me dizer mais alguma coisa ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Partindo do princípio de que (eu acho que) o listBox, sem ter a lista ativada, age como um campo qualquer, reagindo normalmente às setas, e que estas, por sua vez, "perdem" o sentido ao ter a lista ativada uma vez, pergunto: não seria possível, ao pressionar o Enter para a seleção do ítem, você mandar para o buffer do teclado um outro Enter para que o campo seguinte seja focalizado? Não seria possível "brincar" com o buffer do teclado desta forma, para resolver o problema? É uma alternativa. Gambiarra sim, claro. Mas poderia funcionar.

Uma outra alternativa seria alterar o GETSYS para modificar esse comportamento padrão. Mas aí já não é minha área. Uma única vez na vida (há uns 10 anos) instalei a versão 5.3. Não tenha a menor intimidade com as diferenças desta versão.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Pablo César »

Eu também como não uso o 5.3, faço minha propria rotina.

O que eu tenho a comentar que é prefirível fazé-la no GETSYS e não utilizar o ACHOICE. A função de controle do achoice permitiria fazer com que seja visto se o elemento for primeiro ou ultimo e a tecla pra cima ou pra baixo for pressionada, saia do ACHOICE. Mas fica dificil controlar a posição certa do get conforme se for pra cima ou pra baixo. Por isso sou da idéia criar em looping esse controle mas dentro do GETSYS, daí o focus do GET fica certinho.
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.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Navegação de gets usando gets comuns e com listbox

Mensagem por Ademir »

Bom dia amigos clipeiros !

Pensando melhor, acho que seguirei o conselho dos Srs. e resolverei o problema mesmo com o achoice, mesmo porque, tenho urgencia na conclusão do sistema. Mesmo assim, agradeço a atenção de todos. Abraços...
Responder