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
Leave a reply