![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ввод в TЕdit руками или сканером штрихкода. [D7, XP]
Laguna © (2011-10-24 13:12:00)Возможно ли как то определить чем был произведен ввод в TEdit руками с клавиатуры или сканером штрихкода?
Laguna (2011-10-26 14:39:00) [1]
> Ему надо рукой перевести мышь на Edit и тыкнуть, то есть
> лишние действия!!!
Мдя... есть такое дело. Впринципе Все основная обработка проискодит в Edit1. Все, здаюсь, согласен, что второй Edit лишний. Обязуюсь переписать без него, как тока время появится. Всем спасибо. Тему можно закрывать.
Труп Васи Доброго (2011-10-26 14:39:00) [2]
> фокус менять не требуется и даже писать
> программу
Дак и я о том же!!! Там вообще эта кнопка не нужна! Об этом и пытаюсь камраду сказать. А он мало того, что кнопку, он ещё и второй Edit поставил, хотя можно только одним Editом обойтись.
Anatoly Podgoretsky (2011-10-26 14:17:00) [3]> Труп Васи Доброго (26.10.2011 11:35:42) [102]
Что бы нажать кнопку Enter, фокус менять не требуется и даже писать
программу.
Труп Васи Доброго (2011-10-26 11:35:00) [4]
> Переводит на кнопку, нажали ентер, данные обработались -
> фокус опять перешел на поле ввода,
ЗАЧЕМ?!?!?!?
КТО МЕШАЕТ нажать Enter НЕ ВЫХОДЯ из Edita???? Ты создал лишнюю кнопку, лишний обработчик перевода фокуса и т.д. Это лишнее. Как ты там говоришь? "А если..." ввели 7 цифр, фокус ушёл на кнопку, а юзер понял, что цифра не та и её надо исправить, как юзер вернёт фокус? Ему надо рукой перевести мышь на Edit и тыкнуть, то есть лишние действия!!!
Laguna (2011-10-26 11:11:00) [5]
> Чем меньше надо тыкать кнопок мышью, тем лучше. Рука у юзера
> не отрывается от клавы.
>...
Тот, кто бьёт много цифр будет счастлив, если ему вообще не придётся >хвататься за мышь. Сначала может и будут ныть что непривычно, но потом
> будут тебе руки целовать за хорошую, удобную программу.
Так вот автомат у меня так и отробатывает. Переводит на кнопку, нажали ентер, данные обработались - фокус опять перешел на поле ввода, вводим следующие данные. и так по кругу. Потом закрываем режим ручного ввода одним кликом мыши. Как то так.
Труп Васи Доброго (2011-10-26 10:23:00) [6]Чем меньше надо тыкать кнопок мышью, тем лучше. Рука у юзера не отрывается от клавы. Я 7 лет отработал в ЖКХ конторе, так что кто такие дамы из бухгалтерии и абонентского отдела и как они могут работать я тоже в курсе. Сначала они по одной кнопке в минуту тычут, а потом приноровятся и так пальцами перебирают при разноске квитанций, что аж ветер вокруг, по 1500 квитанций в день лупили! Тот, кто бьёт много цифр будет счастлив, если ему вообще не придётся хвататься за мышь. Сначала может и будут ныть что непривычно, но потом будут тебе руки целовать за хорошую, удобную программу.
Laguna (2011-10-26 09:45:00) [7]> Труп Васи Доброго © (26.10.11 00:16) [96]
> Вот сразу видно, что ты с людьми
> не много работал. Дамы с великим удовольствием давят Enter,
> к тому же нажав Enter юзер подтверждает, что он ввёл номер
> полностью.
Не скажи. У нас такие дамы, что хотят чтобы программа выполняла действия только от ожного их взгляда на монитор.
> Дальше уже твоя работа обрабатывать данные и
> проверять их на валидность. Вопрос "А если введено не 7
> положенных от руки , а 6?" может возникнуть (извини за прямоту)
> у человека который только начинает учиться писать программы.
> (И два Edita для одной информации лишнее тому подтверждение)
> Проверь что ввели и маякни юзеру что "не всё ввёл", тем
> же едитом и поморгай или меняй цвет заливки Edita, когда
> будет нужное количество символов, чтобы даже неопытный юзер
> понял, что всё ОК. Потом они сами привыкнут не тыкать Enter,
> пока Edit не покраснеет.
В принципе я согласен.
А идея с контрольной подсветкой едита во время ввода мне понравилась.
> А проверяя на автомате, без подтверждения
> юзера по нажатию Enter рискуешь нарваться на проглатывание
> случайного нажатия кнопки или залипания или "я постоянно
> эту кнопку ногтем задеваю, у меня маникюр", а твой код радостно
> схавает эти 7 цифр и потащит на обработку. Ты не даёшь юзеру
> возможность исправить ошибку ввода, а это "боком чревато".
После едита стоит подтверждающая кнопка ввода, по нажатию на которую и выполняется проверка введенных данных с последующим сохранением. "Автомат"просто переводит на ее после того, как введено определенное количество знаков и только. Т.е. подредактировать введенную информацию возможность предоставляется.
http://s45.radikal.ru/i109/1110/74/c64733172f67.jpg
Т.е. автомат исключает повторный клац по Ентеру и всего то.
brother (2011-10-26 05:44:00) [8]Все имхо:
1. 2 едита для ручного и сканрного ввода - перебор, достаточно одного с нужными проверками
2. Забыли про очередь сообщений окну
3. Не вижу демо кода для проверки нажатия клавиш и приходов сообщений контролу
4. Сканерами не пользовался но, скорость ввода символов через сканер как то ограничена (скорость ввода, задержки между "клавишами")?
5. Зачем спорить если вопрос в начинающих и кода нет?
Германн (2011-10-26 00:58:00) [9]
> мой вариант не потребует переделки уже существующего софта.
> он лишь дополнит девайс, все штатные функции сохранены.
>
>
Он лишь предоставит программисту новые возможности, которые заставят программиста писать новое ПО. Ибо ему, этому программисту, только дай дополнительные возможности! Но если программист "заточен" на известную ему "юзабилити" и "шаг вправо, шаг влево - расстрел на месте" для него норма. Что тогда?
Труп Васи Доброго (2011-10-26 00:16:00) [10]
> А если введено не 7 положенных от руки , а 6? На "ручном"
> Edit стоит
> if Length(NomEdit.Text) = KolDigit then
> PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
> Дабы исключить лишнее клацанье по ентер.
Вот сразу видно, что ты с людьми не много работал. Дамы с великим удовольствием давят Enter, к тому же нажав Enter юзер подтверждает, что он ввёл номер полностью. Дальше уже твоя работа обрабатывать данные и проверять их на валидность. Вопрос "А если введено не 7 положенных от руки , а 6?" может возникнуть (извини за прямоту) у человека который только начинает учиться писать программы. (И два Edita для одной информации лишнее тому подтверждение) Проверь что ввели и маякни юзеру что "не всё ввёл", тем же едитом и поморгай или меняй цвет заливки Edita, когда будет нужное количество символов, чтобы даже неопытный юзер понял, что всё ОК. Потом они сами привыкнут не тыкать Enter, пока Edit не покраснеет. А проверяя на автомате, без подтверждения юзера по нажатию Enter рискуешь нарваться на проглатывание случайного нажатия кнопки или залипания или "я постоянно эту кнопку ногтем задеваю, у меня маникюр", а твой код радостно схавает эти 7 цифр и потащит на обработку. Ты не даёшь юзеру возможность исправить ошибку ввода, а это "боком чревато". Надеюсь понял.
KilkennyCat (2011-10-25 22:44:00) [11]
> Inovet © (25.10.11 11:58) [87]
>
> Тогда зачем его делать переходником - пусть включается в
> эти порты и шлёт всё туда, а клавиатура сама по себе.
мой вариант не потребует переделки уже существующего софта. он лишь дополнит девайс, все штатные функции сохранены.
Игорь Шевченко (2011-10-25 20:40:00) [12]
> перед сканированием билетов
трамвайных ?
Laguna (2011-10-25 16:51:00) [13]
> Опять нет никакой проблемы с одним едитом. Сканер введёт
> (количество от балды) 20 символов, а юзер только 10. И какая
> проблема? Если длина текста 20, то хватай и обрабатывай
> как "серия + номер+ индекс", если же их меньше, то юзер
> полюбасу энтер тыкнет, это тебе сигнал что "не сканер вводил",
> проверь количество и обрабатывай как "только номер + индекс".
> Вот и всё решение. Даже если юзер пробъёт все 20 цифр,
> то код сработает и энтер жать не придётся. А ты геморрой
> изобретаешь. Надо будет что гениально-простое, обращайся!
>
А если введено не 7 положенных от руки , а 6? На "ручном" Edit стоит
if Length(NomEdit.Text) = KolDigit then
PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
Дабы исключить лишнее клацанье по ентер. Чтобы уменьшить телодвижения при вводе(а этого ой как боятся дамы бальзаковского возраста), перед сканированием билетов я сперва отдельно запрашиваю номер серии. Затем в "ручном" режиме вводится только номер + индекс.[45] Сканер же все вместе возьмет. Конечно можно сделать проверку на количество введенных символов(если меньше чем нужно) Короче, нужно пробывать.
Труп Васи Доброго (2011-10-25 16:37:00) [14]
> Сейчас пересматривал возможность перехода к одному Edit.
> Оказывается не зря все же я делпал разделение ввода. При
> считке сканером к примеру билет читается как серия + номер+
> индекс. Приручном вводе поля ввода разделяются(в другой
> задаче). Здесб же нужно вводить только номер + индекс.
Опять нет никакой проблемы с одним едитом. Сканер введёт (количество от балды) 20 символов, а юзер только 10. И какая проблема? Если длина текста 20, то хватай и обрабатывай как "серия + номер+ индекс", если же их меньше, то юзер полюбасу энтер тыкнет, это тебе сигнал что "не сканер вводил", проверь количество и обрабатывай как "только номер + индекс". Вот и всё решение. Даже если юзер пробъёт все 20 цифр, то код сработает и энтер жать не придётся. А ты геморрой изобретаешь. Надо будет что гениально-простое, обращайся!
Труп Васи Доброго (2011-10-25 16:21:00) [15]Вот хоть убей - не пойму зачем ДВА едита? Что мешает использовать ОДИН? Чтобы проще было понять опиши ситуацию ошибки при вводе в один едит, тогда будет ясно (может быть) чего ты пытаешься избежать.
Anatoly Podgoretsky (2011-10-25 14:11:00) [16]> Laguna (25.10.2011 13:55:29) [89]
Брехология
Laguna (2011-10-25 13:55:00) [17]
> Ты решил проблему для 4500 пользователей, путем создания
> 2 эдитов :-)
Нет, путем создания программы, в которой используется функция сканирования посредством двух Edit.
Anatoly Podgoretsky (2011-10-25 13:45:00) [18]Ты решил проблему для 4500 пользователей, путем создания 2 эдитов :-)
Inovet (2011-10-25 11:58:00) [19]> [77] KilkennyCat © (25.10.11 02:09)
> можно сделать небольшой переходничек на клаву, или на сканер,
> без разницы.... будет генерить дополнительно че-нить или
> генерить в усб 232 или куда угодно...
Тогда зачем его делать переходником - пусть включается в эти порты и шлёт всё туда, а клавиатура сама по себе.
Laguna (2011-10-25 11:00:00) [20]> Anatoly Podgoretsky © (25.10.11 10:07) [85]
> Laguna (25.10.2011 00:11:05) [65]4500 и только в одном месте решили два эдита
Не совсем понятна мысль