Atalhos com ALT

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Atalhos com ALT

Mensagem 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 ?
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Atalhos com ALT

Mensagem 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                       */


M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Atalhos com ALT

Mensagem por bencz »

Certo, mas, caso eu queira utilizar um atalho, como ALT+7 e não, ALT+F7 ?
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Atalhos com ALT

Mensagem 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?)  */

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Atalhos com ALT

Mensagem por bencz »

Bom, peguei aqui no cod. fonte aqui do HWGUI, a função SET KEY tem a seguinte conf.

Código: Selecionar todos

SET KEY <nctrl>,<nkey> [ OF <oDlg> ] [ TO <func> ]
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 :/
Imagem
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Atalhos com ALT

Mensagem 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( & )
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Atalhos com ALT

Mensagem por Toledo »

Troque:

Código: Selecionar todos

MENUITEM "&Exit"+Chr(9)+"Alt+x" ACTION ativarmenu();
	            ACCELERATOR FALT,Asc("X")
Por:

Código: Selecionar todos

MENUITEM "E&xit"+Chr(9)+"Alt+x" ACTION ativarmenu()
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Atalhos com ALT

Mensagem 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 (:

(:
Imagem
Responder