Algumas pessoas já me perguntaram como pegar as teclas que pressionamos no AX e assim tomar determinada decisão. O AX nos permite capturar algumas combinações especiais (CTRL + Tecla), ou teclas especiais (pg down, pg up, alt e etc…).

Uma das formas de pegar tecla ou combinação de teclas pressionadas é usando o método Task da classe SysSetupFormRun, como vamos ver abaixo:

(retirado do site http://www.fourone.se/blog/).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public int task(int _p1)
{
    #task
    FormDataSource formDataSource;
    int ret;
 
    // START 070921 FourOne/JoJ (FO_EnvironmentAddOns4)
    // -- Description: quick-command for checking 
    //                      field and/or form data.
    SysDictField df;    
    FormControl fc;
    formStringControl fsc;
    DictEnum dictEnum = new DictEnum(enumnum(Types));
    DictEnum dictEnums;
    ;
    if (_p1 == 769) //Ctrl + Z
    {
        fc = this.selectedControl();
        formDataSource =  this.objectSet();
 
        if(fc && formDataSource)
        {
            fsc    = fc;
            if(fsc.dataField() && formDataSource.table())
            {
                info(strfmt('Tbl. Fld  -> %2. %1', fieldId2Name(formDataSource.table(), fsc.dataField() - 65536), tableId2Name(formDataSource.table())));
                df=new SysDictField(formDataSource.table(), fsc.dataField() - 65536);
                if(df)
                {
                    info(strfmt('Type      -> %1', dictEnum.index2Symbol(df.baseType())));
                    if(df.baseType() == typeOf(Types::Enum))
                    {
                        dictEnums = new dictEnum(df.enumId());
                        info(strfmt('Enum     -> %1', dictEnums.name()));
                    }
                    info(strfmt('Ext type -> %1', extendedTypeId2name(df.typeId())));
                    info(strfmt('Size       -> %1', int2str(df.stringLen())));
                    info(strfmt('max.rght -> %1', (df.rights())));
                    info(strfmt('Label      -> %1: %2',(df.labelLabel()),(df.label()) ));
                    info(strfmt('Help       -> %1: %2', (df.helpLabelId()),(df.help()) ));
                }
            }
            if(fsc.dataMethod())
            {
                info(strfmt('METHOD %1.%2',  tableId2Name(formDataSource.table()), fsc.dataMethod()));
            }
        }
    }
 
    ret = super(_p1);
    return ret;
}

[]s
Pichler