![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исчезает окно предупреждения. [D7, WinXP]
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;
kyn66 (2009-08-20 13:14:00) [41]
> Автор, прочтите, пожалуйста, раздел 5.2.3. Экранные состояния
> объектов:
Прочитал, спасибо. Однако здесь немного другая ситуация, нежеле прмведенная в статье.Полупрозрачное окно появляется в момент ошибки, немного висит и также само исчезает. В момент проверки билетов сканером дело доходит до автоматизма и оператор делает огрехи, суя второй раз этот билет. Когда речь идет о 500 и более билетах, поверьте, нужно прервать этот процесс, обратить внимание оператора на ошибку и дать возможность нажать на кнопку, дабы выпустить из руки уже ранее проверенный билет. Психология, однако... ;)
Andy BitOff (2009-08-20 13:13:00) [42]
> kyn66 © (20.08.09 12:54) [14]
> > эргономика тогда ни к черту
> Не понял.... Это к чему?
Это к тому, что оператору по барабану какой это билет, это тебе не по барабану.
За сим, достаточно будет или в StaticText3.Caption вывести красным, мол, ля-ля-ля, или же в Image1.Picture.Bitmap загрузить подготовленный заранее желтый восклицательный знак в красном кружочке.
Не надо заставлять юзера выполнять не нужные телодвижения. У тебя же не критичный вопрос с возможностью выбора, а просто информация.
Kolan (2009-08-20 13:06:00) [43]Может, kyn66, у пользователя и хватит рук, но есть еще и ментальные ограничения.
kyn66 (2009-08-20 13:03:00) [44]НУ почему уже так мрачно. Сканер стоит в своей подставке. Билет подносится левой рукой, в правой мышка. При появлении сообщения тиснем мышом на кнопку информационного окна и все. Кстати, интересная идея с дрожанием(мерцанием) формы в мемент дубляжа. Я где-то такое уже видел. Приневерном действии (в данном случае при повторном сканировании) форма пару секунд(или одну) энергично дрожит в горизонтальной плоскости, типа говоря "Неа, не верное действие". Потом опять замирает.
Kolan (2009-08-20 13:01:00) [45]Автор, прочтите, пожалуйста, раздел
5.2.3. Экранные состояния объектов:
http://raskin-interface.narod.ru/interface/chapter5.htm
Медвежонок Пятачок (2009-08-20 12:56:00) [46]это будет программа для трехруких мутантов.
в одной руке билет, во второй сканер, третья - наготове нажать баттон если билет уже был
kyn66 (2009-08-20 12:54:00) [47]
> эргономика тогда ни к черту
Не понял.... Это к чему?
Медвежонок Пятачок (2009-08-20 12:50:00) [48]эргономика тогда ни к черту.
kyn66 (2009-08-20 12:48:00) [49]
> Мне тоже кажется, что всплывающего полупрозрачного не мешающего
> работн сообщения будет достаточно.
Оно не полупрозрачное, а невидимое впринципе. Оно появляется и тут-же закрывается само, практически незаметно для глаза. А окно это - информационное и должно выполнять свое назначение прямое.
Медвежонок Пятачок (2009-08-20 12:48:00) [50]мигай капшеном формы. либо посылай/фотографируй управляющие последовательности, которые отключают постфиксы. они по идее должны отключаться
kyn66 (2009-08-20 12:46:00) [51]
> А что плохого в повторном сканировании билета?
Плохого может и ничего нету, проста в процессе сканирования подбивается общая сумма "правильно оплаченных" билетов и сверяется с ведомостью.
Проверил, да действительно виноват сканер. Сейчас подключил старый, не возвращающий Enter. С ним все пучком, предупреждение появляется. С новым сканером проблема осталась даже после
begin
EmptyKeyQueue;
ErrorMsg('Повторное сканирование билета !');
Edit1.SetFocus;
Edit1.SelectAll;
Exit;
end;
Короче выхода два. Или победить воздействие сканера на кнопку информационного окна, или подключать для сообщение стороннюю форму с информационным окном без дефолтовой кнопки его закрытия.
Kolan (2009-08-20 12:44:00) [52]Мне тоже кажется, что всплывающего полупрозрачного не мешающего работн сообщения будет достаточно.
Медвежонок Пятачок (2009-08-20 12:40:00) [53]плохое здесь на самом деле - это необходимость давить на кнопку мессджбокса держа в руках сканер
Kolan (2009-08-20 12:35:00) [54]А что плохого в повторном сканировании билета?
kyn66 (2009-08-20 12:05:00) [55]Да, сканер Enter возвращает. Но иногда приходится работать и на таком, который не возвращает. У меня их два для тестирования проги. А каким способом лучше очистить буфер клавиатуры? Я в примере нашел(Delphi Word), но он выдает ошибку
procedure EmptyKeyQueue;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST,
PM_REMOVE or PM_NOYIELD) do;
end;
Медвежонок Пятачок (2009-08-20 11:24:00) [56]а из какого потока идет вызов бокса?
sniknik (2009-08-20 11:17:00) [57]> быстро мелькнет и не появляется.
> что что-то нажимает автоматом кнопку Ok
сканер. у него часто либо постфиксом либо сам он умеет энтер в конце штрих кода посылать, проверь, считай в мемо, будет переход на следующую строку после кода.
надо чистить "буфер клавиатуры" после чтения со сканера, если тебе это не нужно.
kyn66 (2009-08-20 10:56:00) [58]
> дело может быть в сетфокусе
Edit1.SetFocus;
Edit1.SelectAll;
Отключал, не помогло...
kyn66 (2009-08-20 10:55:00) [59]Дополню, что в среде Delphi в режиме отладки ,пошагово, окно появляется нормально. Складывается впечатление, что что-то нажимает автоматом кнопку Ok
Медвежонок Пятачок (2009-08-20 10:54:00) [60]дело может быть в сетфокусе