Página 1 de 1

tecla

Enviado: 12 Abr 2020 19:06
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

tecla

Enviado: 12 Abr 2020 19:57
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

tecla

Enviado: 12 Abr 2020 21:25
por asimoes
Olá, utiliza hwg_LastKey()

hwg_msginfo( str( hwg_lastkey() ) )

tecla

Enviado: 13 Abr 2020 09:14
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.

tecla

Enviado: 13 Abr 2020 14:04
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

tecla

Enviado: 13 Abr 2020 14:39
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.

tecla

Enviado: 14 Abr 2020 12:20
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

tecla

Enviado: 14 Abr 2020 19:19
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

tecla

Enviado: 14 Abr 2020 21:33
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.

tecla

Enviado: 15 Abr 2020 20:03
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á

tecla

Enviado: 15 Abr 2020 22:33
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.

tecla

Enviado: 17 Abr 2020 11:54
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