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