Set Key
Moderador: Moderadores
Set Key
Galera talvez minha pergunta seja idiota mas tou precisando de uma resposta...
Estou usando o SET KEY para quando o usuario pressionar CTRL + O abrir uma tela com umas opcoes..até ai eu consigo, o problema é q se o CAPS LOCK estiver aceso não funciona... isso é normal?
Estou usando o SET KEY para quando o usuario pressionar CTRL + O abrir uma tela com umas opcoes..até ai eu consigo, o problema é q se o CAPS LOCK estiver aceso não funciona... isso é normal?
fjokiller escreveu:Funciona, o problema é q é dependente do CAPS LOCK.. qdo ele está acesso não funciona...é algo assim CTRL + o (minusculo) funciona e se for CTRL + O (maiusculo ) não funciona, entendeu
Então , a letra ("O "maiscula tem um valor ) quanto a minuscula tem outro valor , voce pode fazer um set key para chamar tanto com minusculo quanto com maiuscolo AGORA com control precinado tem outro valor que no caso é 15
SET KEY 15 to saivoando
obs: acabei de testar e funciona tanto com capslook acionado ou não
C:\Xharbour\Xdev\Fw\VSX
fjokiller, inclua as seguintes linhas em algum lugar do seu programa:
Isto vai fazer mostrar o valor da última tecla pressionada, aí vc pode saber o que está sendo retornado com CRTL O. Talvez o seu teclado esteja com problemas, porque CRTL O, com CAPS LOCK ON ou OFF, dá sempre 15.
Código: Selecionar todos
clear
do whil .t.
inkey(0)
@10,10 SAY lastkey() // MOSTRA O VALOR DA ULTIMA TECLA
if lastkey()=27 // cai fora
quit
endi
enddai vaiEolo escreveu:Cara, repetindo a sugestão (acima) do Ademir: que tal vc postar o seu programa, só da parte que se refere a este assunto?O problema aí deve ser outro... pode postar a função que aciona as opções ?
Coloco isso no inicio da chamada da funcao de cadastro de clientes
SET KEY K_CTRL_O TO OUTRAOPCAO
abaixo é a função outraopcao
FUNCTION OutraOpcao()
mColor := SetColor()
SAVE SCREEN TO mTELA
Private vEscolha[06]
vEscolha[ 01 ] := "Historico"
vEscolha[ 02 ] := "Recebimento"
vEscolha[ 03 ] := "Inativos"
vEscolha[ 04 ] := "Relatorios"
vEscolha[ 05 ] := "Mala Direta"
vEscolha[ 06 ] := "Endereco Entrega"
DO WHILE .T.
SET COLOR TO "N/bg, bg+/b,,, w/n"
@ 07, 29 CLEAR TO 15, 46
@ 07, 29, 15, 46 BOX B_SINGLE RAISED
mEscolha := Achoice( 08, 30, 14, 45, vEscolha,,,,,,," CENTRO DE OPCOES " )
SetColor( mColor )
IF LASTKEY() = 27
EXIT
ENDIF
IF mEscolha = 6
DispEndEnt()
ENDIF
ENDDO
RESTORE SCREEN FROM mTELA
RETURN
Quando pressionado ctrl_o ele chama a função q apresenta um achoice com outras opcoes sobre o cliente
mas só chama a função se o CAPS tiver desabilitado, tentei tanto usando o cygwin qto usando VNC e dá no mesmo...
Cara, copiei o seu código pra dentro de um programa meu (incluindo o #include "inkey.ch") e rodou normal: o ACHOICE abre com CRTL O, com CAPS LOCK ON ou OFF... Faz o seguinte: tenta rodar eliminando o INCLUDE. Quem sabe ele está se desentendendo com o CYGWIN...
Ao invés de:
#include "inkey.ch"
set key K_CTRL_O to OUTRAOPCAO
faça
set key 15 to OUTRAOPCAO
Eu, particulamente, não uso o INCLUDE, prefiro ir direto no ponto, usando os números das teclas (no NG vc acha a tabela com todos os números das teclas).
Aliás, vc faz set key K_CTRL_O e, logo abaixo, faz if lastkey()=27... Se é pra usar o INCLUDE, porque não K_ESC ao invés de 27?
Ao invés de:
#include "inkey.ch"
set key K_CTRL_O to OUTRAOPCAO
faça
set key 15 to OUTRAOPCAO
Eu, particulamente, não uso o INCLUDE, prefiro ir direto no ponto, usando os números das teclas (no NG vc acha a tabela com todos os números das teclas).
Aliás, vc faz set key K_CTRL_O e, logo abaixo, faz if lastkey()=27... Se é pra usar o INCLUDE, porque não K_ESC ao invés de 27?
cara já tinha usado o 15..acho q é o cygwin...vlw vou testar em outra maquina pra ver se num é meu teclado...Eolo escreveu:Cara, copiei o seu código pra dentro de um programa meu (incluindo o #include "inkey.ch") e rodou normal: o ACHOICE abre com CRTL O, com CAPS LOCK ON ou OFF... Faz o seguinte: tenta rodar eliminando o INCLUDE. Quem sabe ele está se desentendendo com o CYGWIN...
Ao invés de:
#include "inkey.ch"
set key K_CTRL_O to OUTRAOPCAO
faça
set key 15 to OUTRAOPCAO
Eu, particulamente, não uso o INCLUDE, prefiro ir direto no ponto, usando os números das teclas (no NG vc acha a tabela com todos os números das teclas).
Aliás, vc faz set key K_CTRL_O e, logo abaixo, faz if lastkey()=27... Se é pra usar o INCLUDE, porque não K_ESC ao invés de 27?




