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

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

Исчезает окно предупреждения. [D7, WinXP]


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

kyn66 ©   (2009-08-20 10:50:00) 

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

...
procedure ErrorMsg(st : String);
begin
 Application.MessageBox(PChar(st), 'ОШИБКА !', MB_OK + MB_ICONHAND);
end;
...
          else
           if(DM1.TiragSLTbl.FindKey([StrToInt(SerLab), Nomlab + IndLab])) then
            if not TirMemTbl.Locate('Tir;Bilet', VarArrayOf([StrToInt(SerLab), Nomlab + '.' + IndLab]), []) then
             begin
               TirMemTbl.InsertRecord(['', StrToInt(SerLab), Nomlab + '.' + IndLab, Dm1.TiragSLTblWinSum.Value]);
               StaticText3.Caption := Razrad(DM1.TiragSLTblWinSum.AsString);
               Image1.Picture.Bitmap := PicClip1.GraphicCell[0];
             end
            else
             begin
                ErrorMsg('Повторное сканирование билета !');
               Edit1.SetFocus;
               Edit1.SelectAll;
               Exit;
             end;


Kolan   (2009-08-20 15:50:00) [21]

В техническом плане мне вообще кажется, что обработка получения кода окнами неверная. Код должен получать контроллер и проверять его на предмет дубля.
Даже если работа со сканером такова, что символы приходят окну, то окно не должно их использовать, тем более помешать в поле ввода или куда-то еще, оно должно отдать их контроллеру и все.


Andy BitOff   (2009-08-20 15:42:00) [22]


> sniknik ©   (20.08.09 15:38) [37]

Дык про это ему и втолковывают ;)


Kolan   (2009-08-20 15:39:00) [23]

Amoeba, со звуками в этом плане почти так же как с цветами. Есть целая теория. Причем сам по себе звук, как и цвет ничего не значит, а вот металлический лязг в машине на скорости 150 км/ч вполне вероятно насторожит водителя :)


sniknik   (2009-08-20 15:38:00) [24]

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


sniknik   (2009-08-20 15:33:00) [25]

> проблема осталась даже после
> begin
>   EmptyKeyQueue;
>   ErrorMsg('Повторное сканирование билета !');
>    Edit1.SetFocus;
>    Edit1.SelectAll;
>    Exit;
> end;
проверь уж все  
begin
  Application.ProcessMessages;
  EmptyKeyQueue;
  Sleep(0);
  ErrorMsg('Повторное сканирование билета !');
...
можно в разных комбинациях.

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


Amoeba   (2009-08-20 15:20:00) [26]


> Хотя думаю, что бип лучше. Динамики есть на многих машинах.

И выдать его не однократно, а дважды или даже трижды.


Kolan   (2009-08-20 15:05:00) [27]

Разве трудно проиграть вавку каким-нибудь TMediaPlayer?

Хотя думаю, что бип лучше. Динамики есть на многих машинах.


kyn66   (2009-08-20 14:53:00) [28]

Только со звуком опять же могут возникнуть проблемы. Если просто через Beep, то зависит подключен динамик к компу или нет, громкий он или тихий и т.д. Задействовать звуковую карту - тоже проблема еще та. У кого она есть, у кого нету, у кого есть , но звук выключен и т.д.


kyn66   (2009-08-20 14:50:00) [29]

2Kolan

Согласен на все 100%


Дмитрий Белькевич   (2009-08-20 14:43:00) [30]


> Полезно было бы пикнуть при этом динамиком.


+1.


> http://raskin-interface.narod.ru/interface/chapter5.htm


Книга - уг.


Andy BitOff   (2009-08-20 14:04:00) [31]


> Kolan ©   (20.08.09 13:53) [29]

Несомненно поддерживаю.


Kolan   (2009-08-20 13:53:00) [32]

Мне кажется звук очень важен.

Дело в том, что когда человек выполняет монотонную работу он быстро научается выполнять её автоматически.

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

Например можно идти, жевать жвачку и болтать по телефону при этом ходьба и жевание будут автоматическими.

Если ваш оператор научится «чикать» билеты на автопилоте, то его мозг найдет чем заняться (отвлечься). В таких условиях вполне вероятен случай когда человек будет сканировать один и тот же билет не замечая вашего сообщения (даже если будет смотреть на экран), так как его мысли (локус внимания) будут где-то далеко.

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

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


kyn66   (2009-08-20 13:38:00) [33]

Сделаю я наверное обычный всплывающий PopUp справа снизу в стиле аля-ХР и этого будет достаточно. Я думаю внимание будет привлечено.


Andy BitOff   (2009-08-20 13:21:00) [34]


> kyn66 ©   (20.08.09 13:17) [23]
> Согласен, есть в этом здравый смысл.

Еще бы ты не был согласен =))))

На этом построена целая наука, о которой, тебе, кстати тут упомянули. И не один бошковитый дядька свою голову ломал и нам в удобной форме ведал, что же он там наломал.


Медвежонок Пятачок   (2009-08-20 13:19:00) [35]

А какое процентное соотношение повторов?

это сильно зависит от открытости окна и силы ветра на улице.


Kolan   (2009-08-20 13:19:00) [36]

Мне сценарий представляется таким:
 о Оператор сует билет второй раз.

 о Возникает полупрозрачное окно, где крупно написано Повторное сканирование билета!(заметьте, восклицательный знак не отрывается от слова). Полезно было бы пикнуть при этом динамиком.

 о Пока оператор берет другой билет окно исчезает.


Andy BitOff   (2009-08-20 13:18:00) [37]


> kyn66 ©   (20.08.09 13:14) [20]
> Когда речь идет о 500 и более билетах

А какое процентное соотношение повторов?


kyn66   (2009-08-20 13:17:00) [38]


> Не надо заставлять юзера выполнять не нужные телодвижения.
>  У тебя же не критичный вопрос с возможностью выбора, а
> просто информация.


Согласен, есть в этом здравый смысл.


Медвежонок Пятачок   (2009-08-20 13:16:00) [39]

это примерно как в обоих ветках ифа вываливать сообщение 'алгоритм пойдет на север' и "алгоритм пойдет на юг"


Медвежонок Пятачок   (2009-08-20 13:15:00) [40]

дабы выпустить из руки уже ранее проверенный билет. Психология, однако... ;)

Он его и так выпустит причем в обеих случаях. Тем более что их у него пачка


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

Наверх

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