duvida sobre comando Set Key to....help..

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

scom
Usuário Nível 3
Usuário Nível 3
Mensagens: 133
Registrado em: 15 Nov 2004 10:49
Localização: Dourados/MS

duvida sobre comando Set Key to....help..

Mensagem por scom »

OLA AMIGOS...


VOU TENTAR ESPLICAR DA MELHOR FORMA POSSIVE, E O SEGUINTE:

TENHO UM PRG QUE E UMA PESQUISA DE VENDAS QUE MOSTRO NA TELA E COLOCO UMA MENSAGEM PARA O CLIENTE SE ELE QUISER IMPRIMIR SO TECLAR A LETRA I, ONDE USO O COMANDO:

SET KEY 73 TO IMPR_VENDA

E EM OUTRA PESQUISA DE PRODUTOS EU USE DA MESMA FORMA MUDANDO SOMENTE A FUNCAO A CHAMAR:

SET KEY 73 TO IMPR_PROD

ATE AI TUDO BELEZA....


MAS CRIEI AGORA UM FUNCAO QUE USO EM TODO O PROGRAMA ONDE USO PARA LIBERAR VENDAS PEDINDO O USUARIO E A SENHA COLOCANDO NO INICIO DO PROGRAMA QUE E A TECLA F12:

SET KEY -41 TO LIBERA

E O PROBLEMA ACONTECE QUANDO O CLIENTE ESTA EM UMAS DAS PESQUISAS QUE DEI O EXEMPLO ACIMA E APERTA O F12 PARA CHAMAR A FUNCAO LIBERA() ENTAO PEDE O NOME DO USUARIO E QUANDO O NOME DO USUARIO TEM A LETRA I O SISTEMA IMPRIME A PESQUISA SENDO QUE EU QUERIA DIGITAR EX: APARECIDO, QUANDO TECLO I ABRE PRA IMPRIMIR.

O QUE EU QUERO E O SEGUINTE, DESABILITAR A LETA I, MAS GUARDANDO QUAL ERA A SUA FUNCAO ANTERIORMENTE PARA ABILITAR NOVAMENTE QUAND SAIR DA FUNCAO LIBERA DO F12.

ESPERO TER FEITO COMPRENDER....

ATENCIOSAMENTE
ROBSON
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Robson, você pode usar a função SETKEY() para desabilitar a função temporariamente, tipo assim:

Código: Selecionar todos

PROC LIBERA()
tecla_i=SETKEY(73,{||faznada()})
... aqui você coloca a sua função LIBERA...
SETKEY(73,tecla_i)
RETU

PROC faznada()
RETU
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
scom
Usuário Nível 3
Usuário Nível 3
Mensagens: 133
Registrado em: 15 Nov 2004 10:49
Localização: Dourados/MS

Obrigado Toledo....

Mensagem por scom »

Muito obrigado toledo....e´ isso mesmo que estava procurando....

Testei e Ficou Joia....Valeu

T+

ROBSON
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

Facilitando as coisas:

PROC LIBERA()
SET KEY 73 TO
... aqui você coloca a sua função LIBERA...
SET KEY 73 TO LIBERA
RETU

O SET KEY TO (sem argumentos) no início da procedure LIBERA anula a chamada automática da função. Isso evita a criação de uma procedure desnecessária. Depois é só retorná-la no final.
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Diogenes, o problema do Robson é que ele tem uma função (IMPR_VENDA) que é acionada através da letra I (73), a qual ele não quer que seja executada de dentro da função LIBERA. Então usando o exemplo que eu passei, ele vai conseguir desabilitar temporariamente a letra I e só habilitar quando estiver saindo da função LIBERA.

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
scom
Usuário Nível 3
Usuário Nível 3
Mensagens: 133
Registrado em: 15 Nov 2004 10:49
Localização: Dourados/MS

Tive que colocar o SET KEY TO...mas ficou Joia.

Mensagem por scom »

Entao diogenes_varela...O MAIOR PROBLEMA E QUE TENHO QUE USAR A LERTA I NA FUNCAO LIBERA() ONDE O TEM UM GET PEDINDO O NOME DO USUARIO E SE O NOME DELE FOR POR EXEMPLO: APARECIDO

QUANDO ELE APERTAVA A LETRA I IMPRIMIR E NAO SAIA O I ENTAO O QUE EU QUERIA ERA GUARDAR O NOME DA FUNCAO QUE A TECLA 73(I) ESTAVA ANTERIORMENTE PARA QUANDO SAIR DO LIBERA ATIVAR NOVAMENTE.

FIZ ASSIM

Functiona LIBERA()

I_Funcao:=SetKey(73,{|| Faz_Nada()}) //So pra guardar a Funcao Anterior

Set Key To //Tirar a funcao do I para o Cliente poder Digitar a Letra I

funcao Libera......com get onde pego o nome do usuario...Etc...

SetKey(73,I_Funcao)

Return


Valeu.....T+ Pessoal


ROBSON
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

Todas as dicas passadas por vocês estão corretíssimas... Como tive problemas com códigos muito grandes, só tentei eliminar uma procedure.
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Responder