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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 3092
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: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 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: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 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