Показаны различия между двумя версиями страницы.
— |
axapta:перехватнажатийклавиш [2018/04/13 22:43] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | Этот метод можно перекрыть на части элементов интерфейса: | ||
+ | <code XPP> | ||
+ | public boolean keyDown(int _vKey, boolean _ctrl, boolean _shift) | ||
+ | { | ||
+ | boolean ret; | ||
+ | if (_vKey == #F2) | ||
+ | { | ||
+ | info(" | ||
+ | } | ||
+ | ret = super(_vKey, | ||
+ | return ret; | ||
+ | } | ||
+ | </ | ||
+ | ---- | ||
+ | От: ALEK_www.ibdos.com < | ||
+ | |||
+ | > Мне необходимо осуществить перехват ввода с клавиатуры в Axapta с целью подмены определенных клавиш. | ||
+ | > К примеру, | ||
+ | |||
+ | Добавьте нижеприведенный статический метод в класс WinAPI: | ||
+ | <code XPP> | ||
+ | client static int getAsyncKeyState(int vk) | ||
+ | { | ||
+ | //return values - возвращаемые значения | ||
+ | //0, not pressed - клавиша не нажата | ||
+ | //1, pressed before function call - клавиша нажата до вызова функции | ||
+ | //>1, key is down - клавиша нажата в данный момент | ||
+ | |||
+ | DLL | ||
+ | DLLFunction _getKeyState | ||
+ | ' | ||
+ | |||
+ | _getKeyState.returns(ExtTypes:: | ||
+ | _getKeyState.arg(ExtTypes:: | ||
+ | |||
+ | | ||
+ | } | ||
+ | </ | ||
+ | Код, приведенный ниже, вставьте в форму (tutorial_timer): | ||
+ | <code XPP> | ||
+ | void run() | ||
+ | { | ||
+ | _idleTime = element.control(control:: | ||
+ | _realTime = element.control(control:: | ||
+ | |||
+ | super(); | ||
+ | |||
+ | this.updateIdleTime(); | ||
+ | this.updateRealTime(); | ||
+ | this.updatekey(); | ||
+ | } | ||
+ | |||
+ | void updatekey() | ||
+ | { | ||
+ | //return values | ||
+ | //0, not pressed | ||
+ | //1, pressed before function call | ||
+ | //>1, key is down | ||
+ | int i =0; | ||
+ | int ret; | ||
+ | ; | ||
+ | for (i = 20; i < 130; i++) | ||
+ | { | ||
+ | ret = winapi:: | ||
+ | |||
+ | //if (ret != 1 && ret != 0) | ||
+ | //{ | ||
+ | // | ||
+ | //} | ||
+ | |||
+ | if (ret == 32769 ) | ||
+ | { | ||
+ | texto = texto + this.int2key(i); | ||
+ | cont ++; | ||
+ | |||
+ | | ||
+ | |||
+ | if (cont >= 25 ) | ||
+ | { | ||
+ | info(texto); | ||
+ | cont = 0; | ||
+ | texto = ''; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | sleep(10); | ||
+ | _realTimer = this.setTimeOut(" | ||
+ | } | ||
+ | |||
+ | str int2key(int _key) | ||
+ | { | ||
+ | |||
+ | container tab_key =[' | ||
+ | ,' | ||
+ | |||
+ | ['',' | ||
+ | //20 | ||
+ | | ||
+ | |||
+ | ]+ //30 | ||
+ | | ||
+ | ',' | ||
+ | //40 | ||
+ | |||
+ | [' | ||
+ | //50 | ||
+ | | ||
+ | |||
+ | ]+ //60 | ||
+ | | ||
+ | | ||
+ | ]+ //70 | ||
+ | | ||
+ | | ||
+ | ]+ //80 | ||
+ | | ||
+ | | ||
+ | ]+ //90 | ||
+ | |||
+ | ['','','','','',' | ||
+ | //100 | ||
+ | |||
+ | [' | ||
+ | //110 | ||
+ | |||
+ | [' | ||
+ | //120 | ||
+ | |||
+ | [' | ||
+ | //130 | ||
+ | |||
+ | [' | ||
+ | |||
+ | ; | ||
+ | |||
+ | return conpeek(tab_key, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | [[http:// | ||
+ | [[: |