Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ввод в TЕdit руками или сканером штрихкода. [D7, XP]


Страницы:   1 2 3 4 5 6

Laguna ©   (2011-10-24 13:12:00) 

Возможно ли как то определить чем был произведен ввод в TEdit руками с клавиатуры или сканером штрихкода?


Laguna   (2011-10-24 22:54:00) [61]

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

Сейчас у меня вот так
http://s017.radikal.ru/i441/1110/39/c5c0ed02798b.jpg

http://s45.radikal.ru/i109/1110/74/c64733172f67.jpg

Как правило ручной ввод применяется когда нет в наличии сканера. В принципе можно не опасаться. Каждый Edit отработает нормально. Но кто его знает, если приспичит кому переключиться в ручной режим и подсунуть под сканер. Сегодня не хватило времени на работе полностью проверить все возможные варианты.


Rouse_   (2011-10-24 22:49:00) [62]


> Anatoly Podgoretsky ©   (24.10.11 22:44) [40]
> Ну так просто, открой если считаешь нужным, но вы уже перешли
> на взаимные оскорбления.

Ну не я ж первый по родственникам прошелся, тяжелые времена пошли, совсем народ с выражениями не стесняется...


Rouse_   (2011-10-24 22:47:00) [63]


> DiamondShark ©   (24.10.11 22:45) [41]
> Кстати, тут написано враньё.

Ты раскрывай тему, родимый - не стесняйся :)


DiamondShark   (2011-10-24 22:45:00) [64]

> Rouse_ ©   (24.10.11 22:22) [35]
Кстати, тут написано враньё.


Anatoly Podgoretsky   (2011-10-24 22:45:00) [65]

> Laguna  (24.10.2011 22:16:34)  [34]

Есть, одно поле


Rouse_   (2011-10-24 22:44:00) [66]


> DiamondShark ©   (24.10.11 22:39) [36]
> Если ты не понимаешь, что аппаратные события происходят
> абсолютно независимо от реакции твоего кода, что моменты
> выборки сообщений не имеют ничего общего с моментами наступления
> событий и что возвращает GetKeyState, то я тебе не доктор.

Ага, я понял о чем ты, мдя... :)
Т.е. ты реально думаешь что событие сгенеренное сканером придет вне очереди сообщений и соответственно все АПИ, относящиеся к ней пойдут лесом?


Anatoly Podgoretsky   (2011-10-24 22:44:00) [67]

> Rouse_  (24.10.2011 21:46:33)  [33]

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


DiamondShark   (2011-10-24 22:43:00) [68]


> Rouse_ ©   (24.10.11 22:22) [35]
> Мы в свое время делали след образом: отдельная кнопка, по
> нажатию которой выводился диалог с надписью что-то типа:
>  "ожидаем ввода сканера", в котором блокировался ввод с
> клавиатуры за исключением Esc.В диалоге и снимался сам ввод,
>  таким образом и пользователю было понятно что делать и
> не нужно было городить разграничение с фокусом ввода...

Т.е. вы в своё время решили не задачу прикладной области, а какую-то свою собственную проблему.


KilkennyCat   (2011-10-24 22:43:00) [69]

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


DiamondShark   (2011-10-24 22:39:00) [70]


> Rouse_ ©   (24.10.11 21:44) [32]
> А че так мало?

Шоб ты спросил.
Поставь туда свою оценку разницы скорости своего пальца и посылки двух кодов друг за другом по ЮСБ.


> А теперь выкинь всю бредятину из головы, поставь слип в
> своем коде на 1000 например, нажми кнопку и отпусти, дождись
> реакции кода.

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

Если ты не понимаешь, что аппаратные события происходят абсолютно независимо от реакции твоего кода, что моменты выборки сообщений не имеют ничего общего с моментами наступления событий и что возвращает GetKeyState, то я тебе не доктор.


> В момент прихода сообщения мы узнаем о том, была клавиша
> нажата или нет на момент прихода сообшщения?

Не прошло и пол-суток, как ты соизволиил сделать попытку прочитать и перевести цитату из TFM.
К сожалению, низачот. Попробуй ещё раз.


> Теперь выключи, как ты говоришь "попоболь" и ответь мне
> на вопрос: мой вариант даже с искусственно созданными тобой
> проблемами не отвечает на поставленный автором вопрос?

Отвечаю: не отвечает.


Rouse_   (2011-10-24 22:22:00) [71]


> Laguna ©   (24.10.11 22:16) [34]
> Ну и в чем конкретно тупость? Есть лучший вариант?

Желательно избегать неоднозначности. Мы в свое время делали след образом: отдельная кнопка, по нажатию которой выводился диалог с надписью что-то типа: "ожидаем ввода сканера", в котором блокировался ввод с клавиатуры за исключением Esc.
В диалоге и снимался сам ввод, таким образом и пользователю было понятно что делать и не нужно было городить разграничение с фокусом ввода...


Laguna   (2011-10-24 22:16:00) [72]

> QAZ   (24.10.11 19:30) [22]

> самое тупое во всем этом,так это наличие 2х едитов + разная
> обработкаа еще ктото гонит на интелект пользователей...


Ну и в чем конкретно тупость? Есть лучший вариант?


Rouse_   (2011-10-24 21:46:00) [73]

зы: Толь - не надо закрывать, мы тут еще поспорим немного, если пойдут прямые оскорбления еще раз - сам закрою...


Rouse_   (2011-10-24 21:44:00) [74]


> sleep(100500);

А че так мало?
А теперь выкинь всю бредятину из головы, поставь слип в своем коде на 1000 например, нажми кнопку и отпусти, дождись реакции кода. В момент прихода сообщения мы узнаем о том, была клавиша нажата или нет на момент прихода сообшщения?
Теперь выключи, как ты говоришь "попоболь" и ответь мне на вопрос: мой вариант даже с искусственно созданными тобой проблемами не отвечает на поставленный автором вопрос?


DiamondShark   (2011-10-24 21:29:00) [75]


> Rouse_ ©   (24.10.11 20:57) [28]

Давай ты начнёшь сам следовать своим советам (на счёт остатков мозга, например, или там языка). Ну, или вспомнишь, о чём идёт речь в теме. Ещё бы хорошо не приплетать то, о чём вообще речь не шла (о последовательности сообщений, например).

Если до тебя не доходит написанное (а как оно может дойти, когда попоболь и кнопка под рукой), то модифицируй свой код вот так:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if GetKeyState(Integer(Key)) <> 0 then
   Memo1.Lines.Add('KeyDown');
 sleep(100500);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if GetKeyState(Integer(UpperCase(Key)[1])) <> 0 then
   Memo1.Lines.Add('KeyStillDown');
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 Memo1.Lines.Add('KeyUp');
end;

Нажми клавишу коротко и осмысли происходящее.

Ну вот именно это и было написано в стёртом тобой тексте.

Теперь давай вспомним, что речь у нас идёт не о клавиатурах, а о сканерах, точнее, о различении сканеров и клавиатур.
Пропускной способности интерфейсов (USB 2.0, например) вполне хватает, чтобы послать пару "нажато"-"отпущено" с такой скоростью, что приложение даже пол-цикла message pump-а выполнить не успеет.
Так что к моменту выборки WM_CHAR из очереди потока "клавиши" (т.е. внутреннее состояние HID-драйвера) будут "отпущены".

Но твой мантровский код радостно сообщит, что клавиша нажата.


Rouse_   (2011-10-24 21:00:00) [76]

И на последок, даже если клавиша не нажата, это как-то воспрепятствует прохождению стандартной цепочки (down/press/up) ?


Rouse_   (2011-10-24 20:59:00) [77]


> DiamondShark ©   (24.10.11 20:57) [27]
> К моменту прихода OnKeyPress никакая клавиша уже может быть
> не нажата

А не кажется ли тебе что выражения "не нажата" и "может быть не нажата" - немного разные понятия, или это одно и то-же?


DiamondShark   (2011-10-24 20:57:00) [78]

Повторяю для тех, кто в танке.

К моменту прихода OnKeyPress никакая клавиша уже может быть не нажата, хотя предложенный любителем мантр код радостно сообщит, что клавиша нажата.

Теперь посмотрим, как любитель мантр придерётся к языку и сотрёт и это сообщение.


Rouse_   (2011-10-24 20:57:00) [79]


> DiamondShark ©   (24.10.11 20:51) [26]
> Как носом ткнули, так сообщения трёшь? Ой, красота какая.

Ткни еще раз, только перед этим перечитай внимательно выделенное тобой и осмысли остатком мозга.
Еще раз допустишь подобные высказывания - получишь профилактику...


DiamondShark   (2011-10-24 20:51:00) [80]


> Rouse_ ©   (24.10.11 20:44) [25]

Как носом ткнули, так сообщения трёшь? Ой, красота какая.


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо