INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Зябликов Дмитрий | Senior ios developer | ЦРПТ

«Разработка на 1С VS нативная разработка под iOS»

- а такое возможно?:) - плюсы и есть ли минусы - нюансы разработки - путь от начала до публикации приложения

Перехватчик нажатий клавиш (ActiveX)

Программирование - Внешние компоненты

11
Примитивная компонента ActiveX, перехватывающая нажатия клавиш и принудительно возвращающая фокус компоненте при его потере. Искал в свое время для внедрения в интерфейс кассира. Может, кому еще пригодится.

Примитивная компонента ActiveX, перехватывающая нажатия клавиш и принудительно возвращающая фокус компоненте при его потере. Сделал в свое время для внедрения в интерфейс кассира - чисто для того, чтобы нормально работать в рознице ... кто юзал типовую УТ, тот поймет... жмет пользователь на любую кнопку - срабатывает контекстный поиск - сканер в ауте... и другие мелкие косяки.... Может, кому еще пригодится.

В обработке показан пример использования компоненты. Не забудьте зарегить при помощи regsvr32. При открытии формы необходимо установить фокус на контрол.

Исправлено:

  • свойство Enabled обрабатывается.
  • свойство BackColor обрабатывается.
  • остальные свойства исключены из контрола
  • добавлено свойство "ForeverGotFocus". Если оно false, то обработка потери фокуса не производится средствами контрола - обрабатывайте сами событие "LostFocus"
11

Скачать файлы

Наименование Файл Версия Размер
версия 1.03
.1197634756 24,00Kb
25.09.09
189
.1197634756 24,00Kb 189 Скачать бесплатно
Демонстрационная обработка
.1197965168 5,47Kb
25.09.09
163
.1197965168 5,47Kb 163 Скачать бесплатно

См. также

Комментарии
Сортировка: Древо
1. tormozit 4763 14.12.07 19:56 Сейчас в теме
Клево, а как ее использовать то?
2. MRAK 707 14.12.07 22:13 Сейчас в теме
Регистрируем через regsvr32, кидаем на форму... Юзаем событие KeyUp
3. MRAK 707 14.12.07 22:34 Сейчас в теме
Повторюсь, что контрол сырой, написал его вместе с тестированием минут за 30... если что-то надо, то доработаю.... еЕще фокус с него можно сбить только открыв модальное окно вроде бы. вообще сделан чисто для того, чтобы нормально работать в рознице с интерфейсом кассира... кто юзал типовую УТ, тот поймет... жмет пользователь на любую кнопку - срабатывает контекстный поиск - сканер в ауте... и другие мелкие косяки...
4. serg1c 20 18.12.07 10:47 Сейчас в теме
А действительно, как использовать?
Хотя бы кратенькое описание команд или уж демку какую...
5. MRAK 707 18.12.07 11:02 Сейчас в теме
Хорошо, щас выложу обработку с этим элементом
6. tormozit 4763 18.12.07 22:51 Сейчас в теме
Ни один другой контрол фокус не получает. Так и задумано?
7. MRAK 707 19.12.07 10:01 Сейчас в теме
(6) да, так задумано, дабы всегда можно было бы программно обрабатывать фокус. закончу тестирование у заказчика - выложу рабочую обработку интерфейса кассира. Если действительно необходимо программно обрабатывать потерю фокуса, то могу добавить свойство типа включить/отключить принудительный возврат фокуса.
8. MRAK 707 19.12.07 10:01 Сейчас в теме
(7) + блин... программно обрабатывать не фокус, а события с клавы...
9. Mitay 16.01.08 11:14 Сейчас в теме
вопрос: а можно как-то организовать обработку комбинаций клавиш? например, чтобы для "shift"+"=" выдавал "+", а не коды "шифт" и "=" по отдельности?
То есть обрабатывать ситуацию, когда у shift признак нажата (но не отпущена) и после этого нажата и отпущена "=". Кнопки взяты для примера.
Тогда обработка будет универсальной и сможет различать и знаки препинания и комбинации клавишь и строчные/заглавные буквы.
10. Mitay 16.01.08 12:25 Сейчас в теме
Хотя уже сам разобрался:
параметр Shift имеет 4 значения: 0 ничего, 1 - нажат shift, 2 - нажат ctrl, 3- ???, 4 - нажат alt.
то есть комбинации обрабатывать можно.
вот только не хватает признака раскладки клавиатуры, чтобы знать какой символ соответствует нажатой кнопке.

11. Mitay 16.01.08 12:51 Сейчас в теме
Еще момен: обработка прекращается, если нажат "Tab" (похоже фокус всетаки теряется). выход - перезапуск обработки, но для места кассира - это плохо, ваш заказчик может оказаться недоволен.
13. MRAK 707 16.01.08 20:39 Сейчас в теме
(11) ForeverGotFocus в TRUE должно помочь.
(12) раскладку пока не просили, посмотрю на днях. как раз только собираюсь запускать.
12. Mitay 16.01.08 13:06 Сейчас в теме
Можно ли всетаки добавить определение раскладки

это поможет:
Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

14. Mitay 18.01.08 12:53 Сейчас в теме
Замечен еще момент:
при открытии epf перехватчик успевает обработать кнопку, нажатую до открытия.
Еще это проявляется так: если открыть два отчета, содержащие перехватчик, то если в первом нажать Esc, то он закроется, а второй скажет, что нажата кнопка 27. То есть опять же идет подхват последней кнопки нажатой в другом месте.
16. MRAK 707 28.01.08 10:48 Сейчас в теме
(14),(15) точно, есть такой косяк... можно вруную обрабатывать событие потери фокуса (LostFocus), но не удобно... в ближайшее время внесу исправления. пока другим проектом занимался
15. Mitay 19.01.08 17:03 Сейчас в теме
аналогичная ситуация: после закрытия модального окна кнопкой Ентер, перехватчик говорит, что сработал Ентер, хотя он был нажат в другом окне. То есть перехватчик ловит кнопку, нажатую до получения фокуса самим перехватчиком.
17. MRAK 707 17.11.08 17:24 Сейчас в теме
доработка давно прекращения, концепция изменилась)))
юзайте
http://www.infostart.ru/projects/1737/
Оставьте свое сообщение