Bạn có thể sử dụng sự kiện OnShortcut trên biểu mẫu để chặn các lần nhấn bàn phím. Kiểm tra xem tiền tố bạn đã định cấu hình trên vạch mã vạch có xuất hiện hay không, và đặt làm phím bấm Handled al cho đến khi bạn nhận được hậu tố của máy quét mã vạch. Trong trình xử lý Shortcut của bạn, hãy tạo chuỗi mã vạch
Mã sau đây được điều chỉnh từ thứ tôi sử dụng, nhưng chưa được kiểm tra ở dạng hiện tại.
// Variables defined on Form object
GettingBarcode : boolean;
CurrentBarcode : string;
TypedInShiftState: integer; // 16=shift, 17=ctrl, 18=alt
procedure Form1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
Character:Char;
begin
Character:=Chr(MapVirtualKey(Msg.CharCode,MAPVK_VK_TO_CHAR));
if GettingBarcode then
begin
// Take care of case
if (TypedInShiftState<>16) and CharInSet(Character,['A'..'Z']) then
Character:=Chr(Ord(Character)+32);
TypedInShiftState:=0;
// Tab and Enter programmed as suffix on barcode scanner
if CharInSet(Character,[#9, #13]) then
begin
// Do something with your barcode string
try
HandleBarcode(CurrentBarcode);
finally
CurrentBarcode:='';
Handled:=true;
GettingBarcode:=False;
end;
end
else if CharInSet(Character,[#0..#31]) then
begin
TypedInShiftState:=Msg.CharCode;
Handled:=True;
end
else begin
CurrentBarcode:=CurrentBarcode+Character;
Handled:=true;
end;
end
else begin
if Character=#0 then
begin
TypedInShiftState:=Msg.CharCode;
end
else if (TypedInShiftState=18) and (Character='A') then
begin
GettingBarcode:=True;
CurrentBarcode:='';
Handled:=true;
end;
end;
end;
Nguồn
2010-04-22 08:33:54
Thông thường bạn * muốn * để có trường văn bản, để người dùng có thể nhập mã vạch theo cách thủ công nếu quá trình quét không thành công. Đó là lý do tại sao tôi nghĩ đây là lựa chọn tốt nhất. –
Đây là cách chúng tôi làm điều đó với người đọc kiểm tra; cho dù đó là bàn phím hay USB, chúng tôi định cấu hình chúng để gửi chuỗi ký tự bắt đầu không dễ dàng nhập vào bàn phím.Khi chúng ta thấy chuỗi đó thông qua phương thức keydown của biểu mẫu, chúng ta nuốt các phím bấm đặc biệt đó và di chuyển tiêu điểm vào hộp chỉnh sửa mong muốn. Hoạt động khá tốt. – robsoft