Ver Mensaje Individual
  #6  
Antiguo 17-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Reputación: 22
ArdiIIa Va por buen camino
Te pongo un ejemplo, de hecho, no hace falta ningún edit para procesar los mensajes de teclado, pero bueno....

Interceptas los mensajes con un TApplicationEvents:

Código Delphi [-]
procedure TFormMain.ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);
begin
    Handled := False;
      //Control del Lector de Código de Barras
      //El lector está configurado para enviar los prefijos 17 y 66
      //y final de línea 13
      if  (Msg.Message = WM_KEYDOWN) then
      BEGIN
        if Msg.wParam = 17 then
            Begin
            lBarCode := True;
            Handled := True ;
            Exit;
            End;
        if (Msg.wParam = 66) And lBarCode then
            Begin
            lBarCode1 := True;
            Handled := True ;
            Exit;
            End;
        if (Msg.wParam <> 13) And lBarCode1 then
            Begin
            cBarCode := cBarCode + Chr(Msg.wParam);
            Handled := True ;
            Exit;
            End;
        if (Msg.wParam = 13) And lBarCode1 then
            Begin
            lBarCode := False;
            lBarCode1 := False;
            Handled := True;
            DoCodeBar(NIL);
            End;

      END;

end;

Luego el procedimiento que procesa las entradas.... (A MODO DE EJEMPLO)

Código Delphi [-]
procedure TFormMain.DoCodeBar(Sender : TObject);
Var
cPrefix1 : String;
cPrefix2 : String;
cPrefix3 : String;
Begin

(*
Todas las Tablas que incluyen código de barras llevan unos prefijos de tres dígitos con los siguientes valores
AUNQUE EL PRIMER CERO LO PONE EL COMPONENTE DE BARRAS
LA CONFECCIÓN DE DICHOS DÍGITOS VIENE DETERMINADA EN UN CAMPO AUTO-CALCULADO [[[[ BARCODE ]]]] de tipo Float

101 - MÁQUINAS
105 - OT FIJA
0110 - CODIGO DE CONTACTO + carpeta +
0211 - PEDIDO DE CLIENTE + (4 DÍGITOS EJERCICIO) - RESTO EL PEDIDO...  FORMATEADO
0212 - OFERTA DE CLIENTE + + (4 DÍGITOS EJERCICIO) - RESTO DE LA OFERTA
400 - OT
500 - PARTE DIARIO
700 - PEDIDO A PROVEDORES
710 - PETICION DE PRESUPUESTOS A PROVEEDORES
800 - ALBARANES
900 - FACTURAS
950 - NOTAS DE ENTREGA
'0211' + '2005' + '0000'

*)

if   cBarCode = '' then Exit;


Try
    ApplicationEvents.OnMessage := nil;

    Application.ProcessMessages;

    Memo1.Lines.Add(cBarCode);

    cPrefix1 := Copy(cBarCode,1,4);
    cPrefix2 := Copy(cBarCode,5,4);
    cPrefix3 := Copy(cBarCode,9,4);

    cBarCode := '';

    If cPrefix1 = '0110' then
        Begin
        Actionxxx.Execute;
        End;


    //Pedidos de Clientes
    If cPrefix1 = '0211' then
    Begin
    Actionxxxzzzi.Execute;
    End;


    //Ofertas a Clientes
    If cPrefix1 = '0212' then
    Begin
    Actiondddi.Execute;
    End;

finally
    ApplicationEvents.OnMessage := ApplicationEventsMessage;
End;

End;

Evidentemente, la codificación dependerá de tus códigos y por supuesto de como esté configurado el lector.
Espero que te resulte útil..

Saludos
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita