|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Доброго. Пишу небольшую программку. Логика то мне ясна, хотя может вы, что умного подскажите. Цель получение и обработка набора символом получаемых со сканера шрихкода подключено как эмулятор клавиатуры. Для железа (и ПО соответственно) ввод со сканера (в разрыв клавиатуры) не отличается от набора на клавиатуре. Единственно, что можно отследить - интервал между нажатиями - человек не надолбит 13 цифр за доли секунды. В сканере у меня есть префикс и постфикс соответственно начало и завершение штрих кода. На чем я заткнулся. Есть форма. У нее есть событие KeyPress, в C# я не силен, так вот мне надо накапливать входящие значения. Ну типа такого. Получаем в событии KeyPress текущий символ клавиатуру, если это префикс, то вызываем свою процедуру. Сразу вопрос, где ее лучше разметить? В своей процедуре. Туту тоже вопрос, нужно где-то хранить переменную вне процедуры. Если это префикс то нашу переную обнуляем, если нет, то добавляем в конец текущий полученный символ, если это это суффикс, то вызываем другую свою процедуру. Вроде просто, но сообразить не могу. В C# только начал работать. Заранее спасибо за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 14:57 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
нафига весь этот секс с KeyDown? просто сделай текстовое поле, в которое шрихкод будет вносить данные, пользователь пусть сам убедится в их корректности, а еще лучше со сканером работать в нормально режиме, без всяких эмуляций, тогда можно и события сканирования сделать и получать нормальный код, без всяких KeyDown'ов. Библиотек для этого уже 100500 понаписано, для всего, что только можно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 16:03 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
У меня нет текстового поля. Да и не нужно оно мне, штрихкод не читабелен, длинен, и пользователю там нечего делать. Ремиv эмуляции клавиатуры есть самый нормальный режим. Все сканеры так сейчас работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 19:34 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, сканеры могут передавать данные в режиме COM-порта- то есть тебе не нужны какие-либо текстовые поля, нужно только прослушиватель данных из com-порта. Очень удобно- последовательность символов приходит целой пачкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 20:26 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Могут. Но это надо ставить драйверы, опять не везде есть ком порты, опять не у всех сканеров есть такая возможность Опять это эмуляция, переходники USB-COM или наоборот. С моим зоопарком-то проблем будет. Не хочу. Опять же проброс на сервер терминалов. А так воткнул, винда сама нашла, дрова подкинула и поехали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 20:46 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, там виртуальный com-порт-никаких аппаратных дополнительных модулей ставить не надо. Драйвер используется тот же, что и для передачи в режиме текстовой вставки. Единственное нужно будет дополнительно прописать номер порта. Зачем нужен проброс на сервер терминалов? Вы делаете приложение, которое слушает COM-порт и само обрабатывает данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 20:54 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Ну не хочу я COM портами возиться. Надоело. Проброс для тонких клиентов, а они на малинке у меня. Какие там нафиг порты и драйверы. В общем хочу так. Как сначала написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 21:16 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, считывание сканером это как будто ввели набор символов и нажали Enter. Без текстового поля не обойтись, поэтому если его не нужно показывать, то придётся делать его скрытым и следить все время, чтобы фокус был именно на нем. Не знаю прокатит ли это со скрытым TextBox. Так же необходимо будет все время следить за раскладкой клавиатуры- сканирование при разных раскладках дает разный результат. То есть или менять кириллицу на латиницу на ходу или делать запрет на её ввод. Считывать каждый символ и накапливать его не придется - нужно слушать событие нажатия Enter- и ты получишь всю последовательность штрихкода-после этого нужно очистить TextBox. С малинок куда хочешь, туда дальше и кидай- хочешь по http, хочешь через сокеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 21:28 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, у тебя что малинки на винде? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 21:28 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, авторРемиv эмуляции клавиатуры есть самый нормальный режим. самый не нормальный,vb_sub верное решение предлагает, а так - будет полный геморрой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 23:23 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
vb_sub tavr2022, у тебя что малинки на винде? Нет. Но секасом с COM портом через USB заниматься как то не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 07:57 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
vb_sub, авторсчитывание сканером это как будто ввели набор символов и нажали Enter. Да вот именно это мне и нравится. авторБез текстового поля не обойтись, поэтому если его не нужно показывать, то придётся делать его скрытым и следить все время, чтобы фокус был именно на нем. Не знаю прокатит ли это со скрытым TextBox. А вот этот геморой мне и хотелось бы избежать. Через поле я TextBox сделал. Фокус вечно куда пропадает. Пользователь то мышкой дернет то винда там что подумает. А особо умные пользователи пытаюсь проявить сообразительность, и что-то править. авторТак же необходимо будет все время следить за раскладкой клавиатуры- сканирование при разных раскладках дает разный результат. То есть или менять кириллицу на латиницу на ходу или делать запрет на её ввод. Но вот тут как эту проблему и хочу решить, тут будет проще сразу менять на нужный код клавиши. авторСчитывать каждый символ и накапливать его не придется - нужно слушать событие нажатия Enter- и ты получишь всю последовательность штрихкода-после этого нужно очистить TextBox. С малинок куда хочешь, туда дальше и кидай- хочешь по http, хочешь через сокеты. Малинки работают только как тонкие клиенты, сами они ничего не обрабатывают. TextBox неудобен, длин шрихкода очень большая. Мерцание при перерисовке, доступен пользователю, постоянные потери фокуса, опять проверка на вводимое значение, конвертация в другую раскладку при необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 08:10 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, нет препятствий энтузиастам! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 09:34 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Это понятно. Мне советы нужны. Даже хнен с ним. Пусть это будет ТextBox. Как мне не терять фокус? Как мне не дать пользователю тама ручками шаловливыми что-то править? И если форм у меня будет больше одной, мне надо где-то общая процедура по обработке всего этого, где ее размещать? Писать код в самой форме это не есть хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 10:43 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, tavr2022Как мне не терять фокус? Все время отслеживать его изменение и возвращать обратно tavr2022Как мне не дать пользователю тама ручками шаловливыми что-то править? Возможно спрятать где-либо Textbox tavr2022И если форм у меня будет больше одной, мне надо где-то общая процедура по обработке всего этого, где ее размещать? Это наименьшая из проблем, с которой ты при своем подходе столкнешься. Можешь размесить всю обработку в одном классе-сервисе и оттуда все использовать. tavr2022Писать код в самой форме это не есть хорошо. Можешь воспользоваться MVVM-подходом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 10:53 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022 А вот этот геморой мне и хотелось бы избежать. Через поле я TextBox сделал. Фокус вечно куда пропадает. Пользователь то мышкой дернет то винда там что подумает. А особо умные пользователи пытаюсь проявить сообразительность, и что-то править Это легко решается, как только поле теряет фокус, просто сфокусируй обратно. делайте как вас советовали, через COM или используйте существующие либы. Ничего сложного в работе с COM портом нет, это не сложнее, чем работать с клавиатурой или файлом. В 90-2000 у всех были модемы и терминальный доступ по COM порту была норма, любой пользователь мог разобраться, как терминально зайти на BBS ^) в вашем случае это считай тоже самое. Все это взаимодействие заверните в сервис, который возвращает асинхронную операцию ReadAsync() и читайте данные с COM порта, подозреваю, что там не надо быть Шерлоком Холмсом, чтоб понять, что это за данные и как их прочитать. Но всё это уже написано, 100500% ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:12 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
vb_sub, авторВсе время отслеживать его изменение и возвращать обратно. Ну да есть событие Leave. Можно на него и привязаться. Как прошло, то сразу вернуть назад. Или у меня в шрихкоде есть префикс, и через пресловутое событие KeyPress формы ловить как префикс проскочил, активировать нужный мне TextBox Как вам второй вариант? авторМожешь размесить всю обработку в одном классе-сервисе и оттуда все использовать. Вот тут у меня и затык. В Дельфи можно было делать общие процедуры и функции в одном модуле. А тут такого нет полное ОПП. Киньтесь примером коли не в тягость. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:13 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Roman Mejtes, Ну нет у меня COM портов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:18 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022 Вот тут у меня и затык. В Дельфи можно было делать общие процедуры и функции в одном модуле. А тут такого нет полное ОПП. Киньтесь примером коли не в тягость. Что бы затоков не было, надо мыслить в объектно-ориентированной парадигме, а не процедурной. Но не везде оно нужно, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:22 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
tavr2022, для "Честного знака" приложение пишешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:26 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
vb_sub tavr2022, для "Честного знака" приложение пишешь? Нет, у нас тут свой аттракцион. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 11:34 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Что-то я не пойму, зачем тут текстбокс. Прочитал клавишу - если символ начала - поставил флаг, что запись идет, и инициализировал переменную-накопитель - если символ конца - сбросил флаг записи и выполнил действия - в остальных случаях если флага записи нет - игнор, есть - добавляем в накопитель ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 12:42 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Shocker.Pro, это будет работать до тех пор пока его приложение в фокусе, если выбрать в фокусе какое-нибудь другое окно, габела. А если кот по клавиатуре пробежит? :D ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 12:44 |
|
Накопление символов в строку при KeyPress.
|
|||
---|---|---|---|
#18+
Shocker.Pro Что-то я не пойму, зачем тут текстбокс. Прочитал клавишу - если символ начала - поставил флаг, что запись идет, и инициализировал переменную-накопитель - если символ конца - сбросил флаг записи и выполнил действия - в остальных случаях если флага записи нет - игнор, есть - добавляем в накопитель Блин я так и хочу. Как этот накопитель блин сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 13:03 |
|
|
start [/forum/topic.php?desktop=1&fid=20&tid=1398178]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 307ms |
total: | 460ms |
0 / 0 |