Página 1 de 1

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

Enviado: 09 Fev 2007 13:17
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

Enviado: 09 Fev 2007 18:36
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,

Obrigado Toledo....

Enviado: 11 Fev 2007 17:35
por scom
Muito obrigado toledo....e´ isso mesmo que estava procurando....

Testei e Ficou Joia....Valeu

T+

ROBSON

Enviado: 12 Fev 2007 11:59
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.

Enviado: 12 Fev 2007 16:47
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,

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

Enviado: 12 Fev 2007 19:56
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

Enviado: 13 Fev 2007 12:34
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.