Página 1 de 1
Atalhos com ALT
Enviado: 28 Jun 2012 14:21
por bencz
Olá, bom tarde....
Gostaria de saber, como posso utilizar atalhos com o ALT, por exemplo, ALT+7
o código que eu usei para testar foi esse...
Código: Selecionar todos
#include "hwgui.ch"
STATIC Thisform
FUNCTION teste( p1, p2, p3, p4 )
RETURN _teste( p1, p2 ,p3 ,p4)
FUNCTION _teste
LOCAL MCO := ""
LOCAL oButton1, oEdit1, oEdit2, oMenu1
INIT DIALOG oDlg TITLE "Form1" ;
AT 0,-130 SIZE 498,244 CLIPPER NOEXIT ;
STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
Thisform := oDlg
SET KEY 0,-7 TO {|| ativarmenu()}
MENU OF oDlg
MENUITEM 'Menu' ID 32000 ACTION ""
MENUITEM 'New' ID 32003 ACTION ""
MENUITEM 'New' ID 32002 ACTION ""
MENUITEM 'New' ID 32001 ACTION ""
ENDMENU
@ 123,14 BUTTON oButton1 CAPTION "Teste" SIZE 90,30 ;
STYLE WS_TABSTOP ;
ON CLICK {|| teste() }
@ 16,59 GET oEdit1 VAR MCO SIZE 298,22
@ 16,94 GET oEdit2 VAR MCO SIZE 298,22
ACTIVATE DIALOG oDlg
RETURN oDlg:lresult
function ativarmenu()
? "ativo (:"
return nil
O problema é, se eu utilizo o numero para identificar o comando, nada acontece, e se eu utilizo a abreviação do comando, tb, nada acontece.... bom, como posso fazer para funcionar ?
Atalhos com ALT
Enviado: 28 Jun 2012 16:36
por Imatech
SETKEY( K_ALT_F7, { || ativarmenu() } )
ou
SET KEY K_ALT_F7 TO { || ativarmenu() }
inkey.ch
Código: Selecionar todos
/* Alt-function keys */
#define K_ALT_F1 -30 /* Alt-F1 */
#define K_ALT_F2 -31 /* Alt-F2 */
#define K_ALT_F3 -32 /* Alt-F3 */
#define K_ALT_F4 -33 /* Alt-F4 */
#define K_ALT_F5 -34 /* Alt-F5 */
#define K_ALT_F6 -35 /* Alt-F6 */
#define K_ALT_F7 -36 /* Alt-F7 */
#define K_ALT_F8 -37 /* Alt-F8 */
#define K_ALT_F9 -38 /* Alt-F9 */
#define K_ALT_F10 -39 /* Alt-F10 */
#define K_ALT_F11 -46 /* * Alt-F11 */
#define K_ALT_F12 -47 /* * Alt-F12 */
Atalhos com ALT
Enviado: 28 Jun 2012 17:34
por bencz
Certo, mas, caso eu queira utilizar um atalho, como ALT+7 e não, ALT+F7 ?
Atalhos com ALT
Enviado: 28 Jun 2012 17:40
por Imatech
Seria interessante vc dar uma olhada no arquivos .ch da HWGui (pode ser que utilize codigos diferentes)
Código: Selecionar todos
/* Alt keys */
#define K_ALT_A 286 /* Alt-A */
#define K_ALT_B 304 /* Alt-B */
#define K_ALT_C 302 /* Alt-C */
#define K_ALT_D 288 /* Alt-D */
#define K_ALT_E 274 /* Alt-E */
#define K_ALT_F 289 /* Alt-F */
#define K_ALT_G 290 /* Alt-G */
#define K_ALT_H 291 /* Alt-H */
#define K_ALT_I 279 /* Alt-I */
#define K_ALT_J 292 /* Alt-J */
#define K_ALT_K 293 /* Alt-K */
#define K_ALT_L 294 /* Alt-L */
#define K_ALT_M 306 /* Alt-M */
#define K_ALT_N 305 /* Alt-N */
#define K_ALT_O 280 /* Alt-O */
#define K_ALT_P 281 /* Alt-P */
#define K_ALT_Q 272 /* Alt-Q */
#define K_ALT_R 275 /* Alt-R */
#define K_ALT_S 287 /* Alt-S */
#define K_ALT_T 276 /* Alt-T */
#define K_ALT_U 278 /* Alt-U */
#define K_ALT_V 303 /* Alt-V */
#define K_ALT_W 273 /* Alt-W */
#define K_ALT_X 301 /* Alt-X */
#define K_ALT_Y 277 /* Alt-Y */
#define K_ALT_Z 300 /* Alt-Z */
#define K_ALT_BACKQUOTE 297 /* Alt-` */
#define K_ALT_1 376 /* Alt-1 */
#define K_ALT_2 377 /* Alt-2 */
#define K_ALT_3 378 /* Alt-3 */
#define K_ALT_4 379 /* Alt-4 */
#define K_ALT_5 380 /* Alt-5 */
#define K_ALT_6 381 /* Alt-6 */
#define K_ALT_7 382 /* Alt-7 */
#define K_ALT_8 383 /* Alt-8 */
#define K_ALT_9 384 /* Alt-9 */
#define K_ALT_0 385 /* Alt-0 */
#define K_ALT_MINUS 386
#define K_ALT_EQUALS 387 /* * Alt-Equals */
#define K_ALT_OSB 282
#define K_ALT_CSB 283
#define K_ALT_BACKSLASH 299
#define K_ALT_SC 295
#define K_ALT_QUOTE 296
#define K_ALT_COMMA 307
#define K_ALT_PERIOD 308
#define K_ALT_SLASH 309 /* Alt-Slash (fyi Ctrl-? doesn't
work - maybe just under xp?) */
Atalhos com ALT
Enviado: 29 Jun 2012 08:15
por bencz
Bom, peguei aqui no cod. fonte aqui do HWGUI, a função SET KEY tem a seguinte conf.
Logo, procurei pelo comando ALT, que é o FALT, q tem o numero 16
mas percebi que ele é capturado pelo FORM, quando eu aperto nele, então, nenhum atalho com ALT funciona ;x
Tentei add um DLGMENU, com ACCELERATOR e fiz o seguinte:
Código: Selecionar todos
MENUITEM "&Exit"+Chr(9)+"Alt+x" ACTION ativarmenu() ;
ACCELERATOR FALT,Asc("X")
Mas, também não funciona :/
Atalhos com ALT
Enviado: 29 Jun 2012 11:42
por sygecom
Alexandre,
A tecla ALT por padrão no WINDOWS já ativa os MENUS, faça o teste no WORD, WINDOWS EXPLORE e etc...
Ou seja sempre que tiver um MENU na tela o ALT vai primeiro para o MENU, depois teclas de atalhos( & )
Atalhos com ALT
Enviado: 29 Jun 2012 13:21
por Toledo
Troque:
Código: Selecionar todos
MENUITEM "&Exit"+Chr(9)+"Alt+x" ACTION ativarmenu();
ACCELERATOR FALT,Asc("X")
Por:
Abraços,
Atalhos com ALT
Enviado: 29 Jun 2012 13:35
por bencz
Bom, agradeço a ajuda (:
mas veja oque eu fiz ( uma bela de uma gambiarra *-* )
sadhusadhuhusadhusahusadhusad
Código: Selecionar todos
#include <windows.h>
#include "hbapi.h"
HB_FUNC ( VERIFICAALT )
{
if(GetAsyncKeyState(VK_MENU) & 0x8000 && (GetAsyncKeyState(0x30) & 0x8000)) // ALT+0
{
hb_retnl(1);
}
}
bom, esse código, eu coloco p/ ser executado por um timer, que está no form
Código: Selecionar todos
SET TIMER oTimer OF oDlg VALUE 50 ACTION {|| iif(VerificaAlt() > 0, ativarmenu(), nil)}
Bom, mas, tem que fazer algumas correções, pois, quando eu fico precionando os botoes, ele fica chamando a função para verificar, e fica fazendo a msm função varias vezes, logo, teria que criar uma função bool, que parasse de verificar, ou melhor, desativa o timer, ou, faz um code block dentro do iif, que caso esteja true, não faça a ação de verificar, não sei exatamente como fazer, mas, é possivel (:
(: