tecla

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

tecla

Mensagem por paiva_dbdc »

Boa noite

estou convertendo de hxb + wvw para a Hwgui_217

no browser da wvw a tecla F7 gera -6

no Browser da Hwgui a tecla F7 gera 118 (que seria a letra v na wvw)

é isso mesmo OU tem algo errado aqui ?

as teclas nos 2 ambientes Não são a mesma coisa ?

ou teria uma tabela de conversão ?

Paiva
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

tecla

Mensagem por paiva_dbdc »

tava vendo aqui

v minusculo e F7 retorna 118 na hwgui e pelo visto em outras liguagens.....

a wvw trata o F7 como -6

como saber se foi teclado v ou F7 em hwgui ?

pelo visto as teclas especiais retorno o mesmo numero das letras normais
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

tecla

Mensagem por asimoes »

Olá, utiliza hwg_LastKey()

hwg_msginfo( str( hwg_lastkey() ) )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

tecla

Mensagem por JoséQuintas »

Já não gostei de HWGUI.
Será que não serve a conversão padrão do Harbour?
talvez a inkey extended seja pra isso, incluindo a conversão, igual tem até mesmo no TBrowse.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

tecla

Mensagem por paiva_dbdc »

Asimoes Obrigado

já é uma forma de resolver, essa função trata o retorno como se fosse MAIUSCULO

ai posso usar o corrrespondente a minusculo para as teclas especiais.

um amigo me passou outra forma la no browser da hwhui


oBrowse1:bKeyDown := {|o,key,b,c| _tecla( o, key,b,c) }

ai os valores de B e C diferem quando e´Teclas especiais

+++ a sua forma fica + fácil de implementar.


+ a wvw é que melhor trata as teclas , diferenciando

Obrigado
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 1 vez

tecla

Mensagem por Itamar M. Lins Jr. »

Ola!
Já não gostei de HWGUI.
Difícil de entender, essa confusão com número negativos, pois não tem na tabela ASCII.
inkey.ch

Código: Selecionar todos

#define K_F1                    28    /*   F1, Ctrl-Backslash */
#define K_F2                    -1    /*   F2 */
#define K_F3                    -2    /*   F3 */
#define K_F4                    -3    /*   F4 */
Mas é a mesma tecla que vc detecta no VB, ou qualquer linguagem para o sistema operacional Windows.
No DOS tem pouca coisa, mas no Windows tem centenas de teclas...
A Hwgui obedece ao SO. Veja a tabela ASCII 0x41 é A, 0x61 a
E tem UTF8.
Tem as paginas de códigos PTISO, Frances, Espanhol...
Veja o arquivo \include\windows.ch

Código: Selecionar todos

#define  VK_RIGHT         0x27
#define  VK_LEFT          0x25
#define  VK_HOME          0x24
#define  VK_END           0x23
#define  VK_DOWN          0x28
#define  VK_UP            0x26
#define  VK_NEXT          0x22
#define  VK_PRIOR         0x21
#define  VK_INSERT        0x2D
#define  VK_RETURN        0x0D
#define  VK_TAB           0x09
#define  VK_ESCAPE        0x1B
#define  VK_BACK          0x08
#define  VK_DELETE        0x2E
#define  VK_F1            0x70
#define  VK_F2            0x71
#define  VK_F3            0x72
#define  VK_F4            0x73
#define  VK_F5            0x74
#define  VK_F6            0x75
#define  VK_F7            0x76
#define  VK_F8            0x77
#define  VK_F9            0x78
#define  VK_F10           0x79
#define  VK_F11           0x7A
#define  VK_F12           0x7B

Código: Selecionar todos

/*
 * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
 * 0x40 : unassigned
 * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
 */

http://www.asciitable.com/
https://www.ascii-code.com/

DEPENDENDO, da pagina de código(idioma), e de qual tabela UTF8 ou ASCCI = Windows-1252

Código: Selecionar todos

If chr(nKey) == "A"
//Com UTF8
if hb_utf8chr(nKey) == "A"
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

tecla

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:A Hwgui obedece ao SO.
Acho que deveria obedecer ao Harbour.
Mas talvez apenas esteja no estilo de XHarbour.

Como eu disse, talvez igual TBrowse:

Código: Selecionar todos

nKeyStd := hb_keyStd( nKey )
...
      SWITCH nKeyStd

#ifdef HB_COMPAT_C53
      CASE K_LBUTTONDOWN
      CASE K_LDBLCLK
         TBMouse( oBrw, MRow(), MCol() )
         EXIT
#endif
#ifndef HB_CLP_STRICT
      CASE K_MWFORWARD
#endif
      CASE K_UP
         IF lAppend
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3108
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

tecla

Mensagem por alxsts »

Olá!

Acho que isto deve resolver:

Código: Selecionar todos

If hwg_GetKeyState( VK_F7,.F.,.T. ) < 0    // Dependendo da versão HwGUI, o nome da função pode ser somente GetKeyState()
   // Teclou F7
Endif
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 1 vez

tecla

Mensagem por Itamar M. Lins Jr. »

Ola!
Libs visuais, usam todas a mesma coisa. É C, se procurar isso em C na Microsoft, que é o lugar certo, vai ver que é tudo igual, por conta da tabela ASCII.
A variação que vi agora é, uns pegam em HEX, outros em DEC, e assim por diante. O problema é separar o que CHAR(letras/simbolos) do que não é.
ALT, SHIFT, CTRL... Não retornam nenhum CHAR como saber isso ? ALT_R(ALT direito), ALT_L(ALT esquerdo), etc tem como controlar tudo isso usando a Hwgui.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

tecla

Mensagem por paiva_dbdc »

boa noite

no browser da hwgui ....

tem como saber se foi teclado ALT + letra ?

os clientes já estão costumado a usar teclas de atalho

tipo Al+1 alt+c alt + 5 alt + f5 rs

se na tela tem Botoes com & na frente ex: &toc se apertar ALT + T o botão é ativado.

+ seria MUITO bom se apertasse alt + F por exemplo EU pudesse saber que foi feito isso

as outras teclas combinações de uma forma ou de outra consegui driblar

somente as começando com ALT + não consegui ainda

Obrigado desde já
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 1 vez

tecla

Mensagem por Itamar M. Lins Jr. »

Ola!
https://pctoledo.org/forum/viewto ... 46&t=13265
Baseando que a tecla ALT ativa o MENU das dialogs e windows, ela é reservada.
Mas vc pode usar o ALT Gr(Alt direito).
Eu não sei como vc usa. Mas vou colocar aqui como o Alexander me ensinou fazer. Pq tava com uns problemas para detectar as teclas no Browse.

Código: Selecionar todos

...
@ 3,80 Browse oBrw DataBase of oDlg Size 690,480 ... //BrowseEX para colocar mãozinha, firulas no browse ou BROWSE sem este recurso.

oBrw:bOther := {|oBrw, msg, wParam, lParam| fKeyDown(oBrw, msg, wParam, lParam, oDlg)}

Static FUNCTION fKeyDown(oBrw, msg, wParam, lParam, oDlg)
LOCAL nKEY := hwg_PtrToUlong( wParam )
IF msg == WM_KEYDOWN //Aqui detecta qualquer coisa! Caractere ou não
   If hwg_Getkeystate(VK_MENU) < 0
      IF Chr(nKey) == "A"
         hwg_msginfo('aaa')
      ENDIF
   ENDIF
ENDIF
IF msg == WM_CHAR //Aqui detecta se pressionou uma letra.(apenas!)

ENDIF
Return .T.
Context menu no Browse. = Clicar com o botão direito e aparecer um menu de opções.

Código: Selecionar todos

@ 3,80 BrowseEx oBrw DataBase of oDlg Size 690,480 ;
   ON RIGHTCLICK {|This,nLine,nCol| ClickDireito(This,nLine,nCol,oBrw) } 

Static Function ClickDireito
Parameters This, nLine, nCol, oBrw
Local oPopup

      CONTEXT MENU oPopup      
        MENUITEM "Desmarcar registros"  action {|| DesmarcarTODOS(oBrw) }
            MENU TITLE "Recontagem de Estoque" //ACTION {||Etiqueta05(obrw)}       
                MENUITEM "Recontagem por Grupo" action RecontagemEstoqueGrupo(oBrw)
           ENDMENU
      ENDMENU
      oPopup:SHOW( hwg_getParentForm(this) )

Return .T.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

tecla

Mensagem por paiva_dbdc »

Itamar Obrigado

vou ver se na minha versão e no meu ambiente consigo exbir um menu apos clicar com a Direita do Mouse

Pelo Menos já i que esta ativando o click com a direita.

Uma Dúvida:

dentro de uma GET com o foco no get tem como ativar o Mouse da direita ?


Obrigado


Paiva
Responder