现在红框内的信息都是通过扫描一维码。
但是有些人不规范操作,就用手输入这些信息,然后敲个回车。
有什么好方法可以杜绝这中情况吗?就是一定是扫描才可以。
跪求
但是有些人不规范操作,就用手输入这些信息,然后敲个回车。
有什么好方法可以杜绝这中情况吗?就是一定是扫描才可以。
跪求
解决方案 »
- delphi 提取txt文件中的数据流形成曲线图
- 哪位大侠帮个忙,SPCOMM收不到字符。
- 江湖救急
- 请问哪有树型复选控件下载
- @@@@@@@@@@@@@@@@@@一个简单的问题,当场给分◎◎◎◎◎◎◎◎◎◎◎
- delphi 中的 bpl相关知识总结 高手请进。
- ********************如何实现搜索指定目录下的文件?
- 菜鸟的问题能不能给讲一下 和给个例子TShellTreeView和TShellListView 给讲讲谢谢了
- 想写一个与 IE 有关的东西,提供思路、源代码都有分!!!
- delphi 7 里的 ab :zdw_down;是什么意思?
- delphi 打开IE后 怎么取得页面里文本框的值
- Indy组件使用时,除了要开scktsrvr.exe以外,还要什么?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
tKeyIn: TDateTime;
FOldWndProc: TWndMethod;
public
{ Public declarations }
procedure NewWndProc(var Message: TMessage);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
tKeyIn := Now;
FOldWndProc := Edit1.WindowProc;
Edit1.WindowProc := NewWndProc;
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
n: integer;
begin
if Length(Edit1.Text) < 2 then
begin
tKeyIn := Now;
exit;
end; n := Round((Now - tKeyIn) *24*60*60);
if n >= Ceil(Length(Edit1.Text) / 10) then//这里的10是一秒内允许输入的最大字符不超过10,你可以改大来
begin
MessageDlg('掃描時間超過' + IntToStr(Ceil(Length(Edit1.Text) / 20))
+ '秒!不可手動輸入,請用掃描槍掃描!', mtError, [mbCancel], 0);
Key := #0;
Edit1.Text := '';
Edit1.SetFocus;
end;
end;procedure TForm1.NewWndProc(var Message: TMessage);
begin
if (Message.Msg <> WM_CUT) and (Message.Msg <> WM_COPY) and (Message.Msg <> WM_PASTE) then
FOldWndProc(Message);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Edit1.WindowProc := FOldWndProc;
end;end.
那这和timer控件差不多吧?
我要输入的字符就是F1020-056 ,就这9个。
时间点掐不好啊,
Edt1(只读, 供显示扫描码, 可获取焦点)
Edt2(藏起来, 别让用户操作到, Tabstop设为false, 扫描枪的码首先进入edt2, 然后在Onchange事件中赋给Edt1)