0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|
1 | |
KeyPreview. Поймать слово28.07.2014, 14:44. Показов 3160. Ответов 18
Метки нет (Все метки)
Добрый день.
С клавиатуры вводятся строки. Если эта строка имеет префикс(10 известных программе символов), то отправить без префикса в edit. Если в строке нет этого префикса, отправить строчку куда она шла. Я понимаю, что можно запомнить предыдущий символ и делать проверку, но для 10 символов получается очень толсто. Кто-нибудь подскажет способ попроще? Желательно, с примером. Заранее благодарю. Добавлено через 12 минут Забыл добавить: Длинна строки неизвестна, но гарантируется что она будет введена менее, чем за секунду.
0
|
28.07.2014, 14:44 | |
Ответы с готовыми решениями:
18
Не работает KeyPreview Поймать редирект ссылку Поймать сообщение wm_copy Поймать вывод консоли |
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
28.07.2014, 15:39 | 2 |
TigerMax, событие KeyPreview сработает на ввод символа, а не строки. Надо только несколько переменных. Я вот не понимаю, как это человек может ввести строку длиной более 10 символов меньше чем за секунду?
0
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|
28.07.2014, 15:54 [ТС] | 3 |
саша40, не человек
Спасибо за ответ. Значит, попру влобовую. Если у кого будут идеи - пишите.
0
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
28.07.2014, 20:20 | 4 |
TigerMax, Если хотел не дать ввести эти 10 символов, то так и написал бы. Я просто не знаю, в каком порядке вводятся эти 10 символов. Можно просто просканировать строку из edit на содержания этих 10 символов и удалить их из неё. Можно не дать их ввести, или ввести их сочетание(слово). Тут куча вариантов. Телепатов на форуме нет, дружок.
0
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|
28.07.2014, 21:50 [ТС] | 5 |
саша40, вы правы. Попробую сформулировать иначе.
Фокус может находиться где угодно. Вводится слово из десяти символов(это слово,префикс,заранее известно) И вслед за этим словом в течении 0,5-1 секунды быстро с клавиатуры набираются символы. Нужно поймать этот момент, удалить кодовое слово, остатки вывести в нужный edit. Можно решить в лоб: массив из 10 символов. Каждый входящий символ встает в массив и сдвигает оставшиеся. Когда символы в массиве образуют слово, выполнить процедуру. Сканер штрих кода с префиксом из 10 символов, порядок которых не меняется. Поэтому и вводится меньше, чем за секунду)
0
|
Житель Земли
|
|
29.07.2014, 10:04 | 6 |
очередной "пёрл"!
да будет тебе известно, что KeyPreview - это не событие, а свойство, которое разрешает форме реагировать на события KeyUp/Down, даже если фокус находится в дочернем компоненте Добавлено через 3 минуты Не по теме: мне иногда кажется, что саша40 - это не человек, а большой толстый тролль. хотя нет, для качественного троллинга тоже нужно много знать Добавлено через 3 минуты в каком-то месте проверить, если длина введенной строки больше 10 символов, скопировать первые десять, сравнить с образцом, по результатам сравнения сделать вывод Добавлено через 4 минуты и вообще, нужно было сразку сказать, что сканер если сканер простой, то символы и будут вводиться туде "где угодно"
0
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
29.07.2014, 10:52 | 7 |
DenNik, вообще-то я знаю. Когда я это писал, я ещё не задал это свойство в яндекс.
0
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
29.07.2014, 11:07 | 9 |
TigerMax, Сканер штрихкодов дает двоичную комбинацию(сочетание 1 и 0, иначе включено и выключено). Тут всё зависит от нескольких физических факторов. От светоотражательной способности чтоли? Ну вроде, если сканер наткнулся на полоску, то это 1 и 1 пойдут пока сканер идет по полоске. если бумага не закрашена, то это 0. А что за префикс у сканера?
Добавлено через 5 минут DenNik, а какая разница. Я использую Яндекс, потому что ненавижу Google!
0
|
29.07.2014, 14:29 | 11 |
Сообщение было отмечено TigerMax как решение
Решение
Сканер ш/к - это просто разновидность клавиатуры.
Считывает ш/к в нескольких известных ему стандартах и формирует текстовую строку. Ну и по умолчанию ентер в конце (#13) Абсолютно то же, что Ctrl+V заводим строку в FormKeyPress добавляем в нее символы если длина >10 первый символ удаляем все время проверяем на совпадение с шаблоном
1
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
29.07.2014, 14:29 | 12 |
0
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|
30.07.2014, 15:49 [ТС] | 14 |
Длинна строки? Нет никакой строки, фактически. Просто вводятся символы
Добавлено через 4 минуты Спасибо. Собственно, как я и планировал. Но ведь сканер вводит символы очень быстро. Если ставить проверки в процедуру, не могут ли,случайно, символы перемешаться?
0
|
Житель Земли
|
|
30.07.2014, 16:22 | 15 |
куда?! где они хранятся? в строке или в массиве символов, который суть есть строка
так что не путай бабушку Добавлено через 2 минуты не могут. сканер же не дурак и передает символы по очереди Добавлено через 2 минуты тебе же написали только он не формирует строку, а эмулирует нажатие клавиши клавиатуры. т.о. перехват можно сделать, к примеру в событии OnEditChange, если поставить фокус в Edit и пикнуть сканером
0
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|||||||||||
30.07.2014, 19:04 [ТС] | 16 | ||||||||||
Тогда, нубский вопрос следом.
KeyPreview перевел в true; Объявил процедуру
0
|
30.07.2014, 21:54 | 17 | |||||
Сообщение было отмечено TigerMax как решение
Решение
у меня рабочий проект - касса.
там все сделано именно так. вот должно быть так ну и
более ленивые люди делают это двойным кликом по соотв. событию в инспекторе объектов
1
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 66
|
|
30.07.2014, 22:12 [ТС] | 18 |
0
|
30.07.2014, 22:22 | 19 |
))
бывает
0
|
30.07.2014, 22:22 | |
30.07.2014, 22:22 | |
Помогаю со студенческими работами здесь
19
Свойство KeyPreview не срабатывает Странное описание свойства Form.KeyPreview В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны Поймать 3G Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |