On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 125
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 19:43. Заголовок: SOLVED!!! -> TRAPANYKEY() и KEYSEND() или запись/воспроизведение клавиатурных макросов


Практически со всем разобрался и восстановил функционал.

Осталось одно и достаточно важное дело: автоматизация рутинных операций. В Clipper это происходило при помощи функций TRAPANYKEY/KEYSEND

Первая при нажатии на любую клавишу в любом месте программы (включая GET/DBEDIT/ACHOICE/INKEY и тп) вызывает указанную мною функцию и передает ей код нажатой кнопки.
Пользовательская функция тихо сидит и собирает эти коды в буфер - "записывает" нажатия клавиш юзером.

В случае, если нужно "воспроизвести" записанные нажатия на кнопки, вызывается KEYSEND() с этим буфером в качестве параметра.

Просто и логично.

---------------------------------

Встал вопрос - чем и как заменить этот функционал? Без него меня разорвут на части - делать множество рутинных операций без клавиатурных макросов чокнешься...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 45 , стр: 1 2 3 All [только новые]


администратор




Пост N: 3393
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 20:16. Заголовок: По поводу KEYSEND , ..


По поводу KEYSEND , смотри hb_keyins() , HB_KEYPUT() , FT_PUTKEY() , KEYBOARD ,__KEYBOARD()
Насчет TRAPANYKEY надо подумать и уверен что как то можно это порешать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3395
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 20:59. Заголовок: Sergy пишет: делать..


Sergy пишет:

 цитата:
делать множество рутинных операций без клавиатурных макросов чокнешься...


Например ? Пока не очень понимаю для чего это надо. Каких таких рутинных операций.........?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 126
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 21:02. Заголовок: Главное - как-то соб..


Главное - как-то собрать информацию о нажатых клавишах. А уж засунуть коды в клавиатурный буфер - дело недолгое...

Может зайти к этому вопросу с другой стороны - как с минимальными переделками осуществить задуманное?
1) Есть ли в Harbour какой-нить единый для всей программы обработчик inkey? Заменить его.
2) Используя многопоточность, анализировать и сохранять изменения в LastKey() - только как отличить двойное нажатие одной и той-же кнопки?
3) ???...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3396
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 21:05. Заголовок: Sergy пишет: сохран..


Sergy пишет:

 цитата:
сохранять LastKey() - только как отличить двойное нажатие одной и той-же кнопки?


А TRAPANYKEY отличал двойное нажатие ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 127
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 21:12. Заголовок: Рутинные операции - ..


Рутинные операции - массовое изменение цен в выбранных оптовых колонках, редактирование шаблонов документов, ценников, гтд, сформировать отчет, убрав из него ненужную (например конфиденциальную) инфу перед отправкой по почте - т.е. тогда, когда юзеру нужно вводить/изменить множество однотипной информации, которую нельзя автоматизировать другим способм (напр.при помощи справочников).

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 128
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 21:14. Заголовок: Dima пишет: trapany..


Dima пишет:

 цитата:
trapanykey отличал двойные нажатия?


Он вызывает функцию при нажатии любой кнопки. Если два раза нажата одна кнопка - два вызова.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3397
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 21:15. Заголовок: Sergy пишет: Рутин..


Sergy пишет:

 цитата:

Рутинные операции - массовое изменение цен в выбранных оптовых колонках


Не представляю как это решает макрос. Цены разные на каждый товар и могут меняться
в любую сторону. Проще педальку сделать с условиями пересчета.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 129
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 21:19. Заголовок: Вот например, решили..


Вот например, решили с завтрашнего дня устроить распродажу светильников с золотой каемочкой. Соотв. изменить цены только на них и только для клиентов из области, работающих по 5 колонке. Было "15%", а сделать только в в пятой колонке 2%. Для 40 моделей светильников.

Нажать ентер (вход в ячейку)
Нажать 2
Нажать шифт и процент
Нажать ентер
Нажать стрелку вниз

Следующим может идти белый или серебристый светильник, его пропускаем.

Нашли золотой - повторяем 5 нажатий клавиш.

Итого 200 нажатий минимум. В случае макроса - 40.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3398
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 21:25. Заголовок: Sergy Да вариант ко..


Sergy
Да вариант конечно.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 130
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 21:26. Заголовок: Может сторонняя винд..


Может сторонняя виндовс-программулька такое может?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3399
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 21:47. Заголовок: Sergy пишет: Может ..


Sergy пишет:

 цитата:
Может сторонняя виндовс-программулька такое может?


Это может и твоя прога нужно придумать как.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 223
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.08.13 21:48. Заголовок: Sergy пишет:Нажать е..


Sergy пишет:
 цитата:
Нажать ентер (вход в ячейку)
Нажать 2
Нажать шифт и процент
Нажать ентер
Нажать стрелку вниз


А не проще пометить строки, и кликнуть по шапке 5 колони browse и ввести 2% и пересчитать для отмеченных ...
предварительно можно ограничить список просмотра Scope или filter ...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 131
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 22:22. Заголовок: SergKis, это частный..


SergKis, это частный случай. Их множество по ходу работы юзеров.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3400
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 22:50. Заголовок: Sergy Возможно надо..


Sergy
Возможно надо покопать функцию hb_SetKeySave , я пока не понял как она работает и пример глянуть setkeys.prg

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 132
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 22:52. Заголовок: Это массовое сохране..


Как понимаю, это массовое сохранение/переназначение всех set key клавиш.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3402
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 22:58. Заголовок: Sergy я бай пойду ,..


Sergy
я бай пойду , надо когда то и отдыхать ;)

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 133
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 23:08. Заголовок: :sm54: ..




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 224
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.13 08:24. Заголовок: Sergy Возможно это т..


Sergy
Возможно это то что надо (inkey.c):
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 225
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.13 08:27. Заголовок: Sergy правильнее: ..


Sergy
правильнее:
if( iKey == 0 || !pInkeyBlock || !pInkeyBlock->after )
break;

pKey = hb_itemPutNI( pKey, iKey );
iKey = hb_itemGetNI( hb_vmEvalBlockV( pInkeyBlock->after, 1, pKey ) ); // БЛОК КОДА ПОСЛЕ ...
hb_inkeySetLast( iKey );


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 226
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.13 09:15. Заголовок: Sergy Смотрю в верси..


Sergy
Смотрю в версии 3.2 этот текст уже другой, что в 3.0 не знаю. нет у меня, а этот текст inkey.c взят с 2.0

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 45 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет