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.

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 :/

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:

Código: Selecionar todos

MENUITEM "E&xit"+Chr(9)+"Alt+x" ACTION ativarmenu()
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 (:

(: