SET KEY x ON KEY

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

SET KEY x ON KEY

Mensagem por microvolution »

Pessoal, noutro tópico o professor e administrador Toledo, tocou num assunto que ainda (pra mim) não a era, mas, não consegui ficar com esta "pulga atrás da orelha".
Bom, o meu código clipper/harbour contempla as seguintes linhas:

Código: Selecionar todos

     set key TECLA_CONT_ANT to CONTEUDO_ANTERIOR
     set key TECLA_CONSULTA to CONSULTA_ARQUIVO
     set key ALT_TECLA_CONSULTA to CONSULTA_ARQUIVO
Já deu pra eu perceber que se refere ao tragamento da GETLIST, ou seja, nos GETs.
Agora, substituí essas mesmas linhas por:

Código: Selecionar todos

     ON KEY TECLA_CONT_ANT     OF Frm_TELA_ENTRADA                     ACTION CONTEUDO_ANTERIOR 
     ON KEY TECLA_CONSULTA     OF Frm_TELA_ENTRADA                     ACTION CONSULTA_ARQUIVO
     ON KEY ALT_TECLA_CONSULTA OF Frm_TELA_ENTRADA                     ACTION CONSULTA_ARQUIVO
Como não encontrei nenhum material, ou melhor, aqui é o lugar certo, as últimas linhas acima para tratamento do TEXTBOX, geraram erros.
Enfim, como usar essas funções/procedures/comandos?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

SET KEY x ON KEY

Mensagem por Toledo »

Amigo, sempre é bom ver a pasta C:\hmg.3.4.2\DOC\data e C:\hmg.3.4.2\SAMPLES da HMG, lá você vai encontrar detalhes e demos de todos os controles e funções da HMG.

Código: Selecionar todos

ON KEY TECLA_CONT_ANT OF Frm_TELA_ENTRADA ACTION CONTEUDO_ANTERIOR
No comando acima, TECLA_CONT_ANT não será aceito. Será permitido apenas:

F1 até F12, BACK,TAB,RETURN,ESCAPE,END,HOME,LEFT,UP,RIGHT,DOWN,INSERT,DELETE,PRIOR,NEXT

A combinação de ALT+ as teclas acima... ALT+F1 até ALT+F12, ALT+BACK, etc... ou ALT+A até ALT+Z e ALT+0 até ALT+9

A combinação de SHIFT+ as teclas acima... SHIFT+F1 até SHIFT+F12, SHIFT+BACK, etc... ou SHIFT+A até SHIFT+Z e SHIFT+0 até SHIFT+9

Ou ainda a combinação de CONTROL+ as teclas acima... CONTROL+F1 até CONTROL+F12, CONTROL+BACK, etc... ou CONTROL+A até CONTROL+Z e CONTROL+0 até CONTROL+9

Obs.: em ACTION é bom colocar uma função, por exemplo ACTION CONTEUDO_ANTERIOR()
Toledo escreveu:... você teria que usar o ON KEY, veja:

C:\hmg.3.4.2\DOC\data\OnKey.htm
C:\hmg.3.4.2\SAMPLES\Events\On_Key\ON_KEY_1 (e ON_KEY_2)
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
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

SET KEY x ON KEY

Mensagem por microvolution »

Toledo escreveu:No comando acima, TECLA_CONT_ANT não será aceito.
opa bom dia! obrigado por tão ágil resposta.
Bom, no meu antigo SET KEY usava do mesmo jeito que postei com o ON KEY.
Essa TECLA_CONT_ANT ela está no meu .CH como:
#define TECLA_CONT_ANT F3
Ou seja, ela é o F3.
Agora vou colocar o () ao final de CONTEUDO_ANTERIOR que é uma função assim:

Código: Selecionar todos

static function CONTEUDO_ANTERIOR (FUNCAO,LINHA,VARIAVEL)
     &VARIAVEL := &('a' + substr (VARIAVEL,2))
     ALTEROU := .t.
     ALT_VENDA  := .t.       // Acrescentado para que a VENDA só seja alterada através de senha administrativa/gerencial. Walcledson 21/02/2.
     keyboard chr (K_ENTER)
return
No mais obrigado por sempre nos responder!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

SET KEY x ON KEY

Mensagem por microvolution »

Bom, como disse no outro tópico, pra ficar mais coerente (acho) com o assunto do tópico, que é sobre onkey, a dúvida é a seguinte:
Analisei o exemplo da pasta hmg342\samples\data\onkey2\demo.prg e nele percebo que em qualquer dos TEXTBOX que estiver sendo pressionada a tecla F2, o sistema reconhece perfeitamente que foi no TEXTBOX de nºs 1 a 3, perfeitamente.
A linha que faz isso é simplesmente:

Código: Selecionar todos

ON KEY F2 ACTION MsgInfo ( ThisWindow.FocusedControl )
Bom, no meu caso, uso o F4 e preciso que funcione do mesmo jeito que no exemplo que citei. No meu caso, a linha que faz isso é:

Código: Selecionar todos

ON KEY F4     OF Frm_TELA_ENTRADA                     ACTION CONSULTA_ARQUIVO()
Mas, infelizmente não está pegando a variável correta.
No antigo @get, a variável que usava era MCDPRODUTO, e, agora o TEXTBOX chama-se txtCDPRODUTO, que seria a mesma variável, mas, com nome diferente...
a função CONSULTA_ARQUIVO contém algumas particularidades, dentre elas um DO/CASE. veja(m) por favor apenas um trecho:

Código: Selecionar todos

static function CONSULTA_ARQUIVO (PROGRAMA,LINHA,VARIAVEL)
esta é a primeira linha da função que recebe ALGUNS conteúdos. Um deles é o nome da variável VARIAVEL. No caso antigo GET, não importava qual get estivesse numa tela de clientes (por exemplo com 20 gets) a variável VARIAVEL recebia a variável do get atual.
Neste caso, eu troco a variável (VARIAVEL) ou seu conteúdo pelo que ou qual para que o sistema reconheça o EDITBOX que estiver em foco?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

SET KEY x ON KEY

Mensagem por Toledo »

Amigo, na MiniGui/HMG você pode usar o objeto THIS ou THISWINDOW para pegar algumas propriedades e métodos dos objetos que estão em uma janela (WINDOW), então poderia alterar a sua função CONSULTA_ARQUIVO():

Código: Selecionar todos

static function CONSULTA_ARQUIVO()
Local cNomeJanela:=ThisWindow.Name
Local cNomeCampo_em_foco:=This.focusedcontrol
Local Valor_do_Campo:=This.Value
Praticamente todas as propriedades e métodos (Properties/Methods) de uma janela (WINDOW) ou dos objetos (TEXTBOX, LABEL, FRAME, etc) podem ser recuperados usando os objetos THIS e THISWINDOW.

Para ver as propriedades/métodos de cada objeto, veja na pasta \hmg.3.4.2\DOC\data, nesta pasta tem o manual de cada objeto.

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
Responder