Ver Mensaje Individual
  #1  
Antiguo 05-05-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Lector óptico y Enter

Hola buenas noches amigos.

Estoy trabajando con: Delphi6 - FB 2.0 - IBX - Win10

Les comento, estoy desarrollando una pantalla de captura para punto de venta, usando teclado y lector óptico. Para el caso de la captura del código por teclado me muestra unos mensajes de advertencia dependiendo del estatus del producto (POR ACABARSE, SIN KARDEX, AGOTADO, ETC), usando la tecla TAB o ENTER q es la condición para disparar un evento que realiza la validación de los estatus del producto.

Para el caso de captura del código de producto (CODIGO DE BARRAS) usando el lector, estos mensajes no se muestran para nada....como le hago para que lo realice como si estuviese usando el teclado?

Sé q algunos lectores -si no es que todos- usan un ENTER al final de la lectura, les muestro lo que tengo:

Tengo esto en el evento OnKeyPress del objeto TMaskEdit:
Código Delphi [-]
    if (Key=#13) then
    begin
        Key:=#0;
        Perform(WM_NEXTDLGCTL,0,0);
    end;

Y esto tengo en el evento OnExit del objeto TMaskEdit
Código Delphi [-]
procedure TfrmVentas.mskCodProdExit(Sender: TObject);
begin
    if NOT(mskCodProd.Text='') then
    begin
        qryProductos.Close;
        qryProductos.ParamByName('COD_BAR').AsString:=mskCodProd.Text;
        qryProductos.Open;
        if qryProductos.IsEmpty then
        begin
             Application.MessageBox('Este código de producto no existe en el catálogo, o bien, aún no ha sido activado','Error',mb_Ok+mb_IconError);
             mskCodProd.SetFocus;
        end Else
        begin
            qryValidaInv.Close;
            qryValidaInv.ParamByName('PROD_ID').AsString:=mskCodProd.Text;
            qryValidaInv.Open;
            if qryValidaInv.IsEmpty then
            begin
                 Application.MessageBox('Este PRODUCTO no tiene KARDEX creado','Aviso',mb_Ok+mb_IconInformation);
                 mskCodProd.SetFocus;
            end Else
            begin
               if not(qryValidaInv.FieldByName('KAR_M_EXISTENCIAS').IsNull) then
               begin
                   if qryValidaInv.fieldByName('KAR_M_EXISTENCIAS').AsInteger=0 then
                   begin
                       Panel8.Visible:=True;
                       Application.MessageBox('Este producto esta AGOTADO, no tiene existencias','Aviso',mb_Ok+mb_IconWarning);
                       Limpiar();
                   end Else
                   begin
                       if qryValidaInv.fieldByName('KAR_M_EXISTENCIAS').AsInteger<=qryValidaInv.FieldByName('KAR_M_STOCK_MINIM  O').AsInteger then
                       begin
                           Application.MessageBox('Este producto esta por acabarse, favor de realizar pedido','Advertencia',mb_Ok+mb_IconExclamation);
                       end;
                       sBtnAdd.Enabled:=True;
//                       btnImprimir.Enabled:=True;
                       mskCant.Text:=IntToStr(1);
                   end;
               end Else
               begin
                   Application.MessageBox('Este producto aún NO TIENE EXISTENCIAS registradas','Aviso',mb_Ok+mb_IconInformation);
                   mskCodProd.SetFocus;
               end;
            end;
        end;
    end;
end;

Usando el teclado funciona a la perfección, muestra los mensajes, pero cuando uso el lector óptico no los muestra. Alguien le ha pasado algo similar?, como puedo resolver esto?
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 05-05-2021 a las 05:03:18.
Responder Con Cita