Puede usar el evento OnShortcut en un formulario para interceptar las pulsaciones del teclado. Compruebe si aparece el prefijo que configuró en el escáner de código de barras, y configúrelo como Manipulado al presionar hasta que obtenga el sufijo del escáner de código de barras. Dentro de su controlador de acceso directo construya la cadena de código de barras
El siguiente código está adaptado de algo que yo uso, pero no está probado en su forma actual.
// 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;
Normalmente * desea * tener un campo de texto de todos modos, de modo que los usuarios puedan ingresar manualmente el código de barras si falla el escaneo. Es por eso que creo que esta es la mejor opción. –
Así es como lo hacemos con los lectores de cheques; ya sea que se trate de una cuña de teclado o USB, los configuramos para enviar una secuencia de caracteres de inicio que no se escribe fácilmente en el teclado.Cuando vemos esa secuencia a través del método de selección del formulario, tragamos esas teclas especiales y movemos el foco de entrada al cuadro de edición deseado. Funciona bastante bien – robsoft