﻿unit pesadas;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Data.DB,
  Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, datosproduccion, ZAbstractDataset,
  ZDataset, ZAbstractRODataset, Vcl.Mask, Vcl.ImgList, ZAbstractTable,ShellApi,
  frxClass, frxDBSet;

type
  Tfpesadas = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    chk_entradas: TCheckBox;
    chk_salidas: TCheckBox;
    Edit1: TEdit;
    btbuscar: TButton;
    Panel6: TPanel;
    Panel11: TPanel;
    DBGrid1: TDBGrid;
    qlistapesadas: TZReadOnlyQuery;
    dsqlistapesadas: TDataSource;
    qpesadas: TZQuery;
    qpesadasid: TIntegerField;
    qpesadasidempresa: TIntegerField;
    qpesadasidEA: TIntegerField;
    qpesadasid_palet: TWideStringField;
    qpesadasnum_palets: TIntegerField;
    qpesadasid_envase: TWideStringField;
    qpesadasnum_envases: TIntegerField;
    qpesadasiddestino: TIntegerField;
    qpesadasdestino: TWideStringField;
    qpesadaspeso_bruto: TFloatField;
    qpesadastara: TFloatField;
    qpesadaspeso_neto: TFloatField;
    qpesadaspeso_neto_teorico: TFloatField;
    qpesadaspeso_medio: TFloatField;
    qpesadastemperatura: TFloatField;
    qpesadasfecha: TDateField;
    qpesadasfechatrabajo: TDateField;
    qpesadashora: TTimeField;
    qpesadasCEA: TWideStringField;
    qpesadasresto_cajas: TFloatField;
    qpesadasresto_pesoneto: TFloatField;
    qpesadaslote: TIntegerField;
    qpesadasORIGEN: TWideStringField;
    qpesadasidorigen: TIntegerField;
    qpesadasmprima: TWideStringField;
    qpesadasgen_caja: TIntegerField;
    qpesadascosto: TFloatField;
    qpesadascoste_manipulacion: TFloatField;
    qpesadasdias_camara: TIntegerField;
    qpesadascosto_camara: TFloatField;
    qpesadascodigoR: TWideStringField;
    qpesadasparcela: TWideStringField;
    qpesadasfecha_cierre: TDateField;
    qpesadascosto_materiales: TFloatField;
    qpesadascosto_cosechar: TFloatField;
    qpesadasborrado: TIntegerField;
    qpesadasseleccionado: TIntegerField;
    qpesadasOBSERVACIONES: TWideStringField;
    qpesadastipo_trabajo: TWideStringField;
    qpesadastipo_generador: TWideStringField;
    qpesadasremanipulado: TIntegerField;
    qpesadasfecha_envasado: TDateField;
    qpesadascodean: TWideStringField;
    qpesadascodssc: TWideStringField;
    qpesadaspedidocliente: TIntegerField;
    qpesadascosto_sinmt: TFloatField;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    dsqpesadas: TDataSource;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    Label9: TLabel;
    Label10: TLabel;
    DBEdit11: TDBEdit;
    Label11: TLabel;
    Label6: TLabel;
    DBEdit13: TDBEdit;
    Label12: TLabel;
    DBEdit14: TDBEdit;
    Label13: TLabel;
    DBEdit15: TDBEdit;
    Label14: TLabel;
    DBEdit16: TDBEdit;
    Label15: TLabel;
    DBEdit17: TDBEdit;
    Label16: TLabel;
    DBEdit18: TDBEdit;
    Label17: TLabel;
    DBEdit19: TDBEdit;
    Label18: TLabel;
    Label19: TLabel;
    DBEdit21: TDBEdit;
    Label20: TLabel;
    DBEdit22: TDBEdit;
    Label21: TLabel;
    DBEdit23: TDBEdit;
    Label22: TLabel;
    DBEdit24: TDBEdit;
    DBEdit25: TDBEdit;
    Label23: TLabel;
    DBEdit26: TDBEdit;
    Label24: TLabel;
    DBEdit27: TDBEdit;
    Label25: TLabel;
    DBEdit28: TDBEdit;
    Label26: TLabel;
    Label27: TLabel;
    DBEdit30: TDBEdit;
    Label28: TLabel;
    DBEdit31: TDBEdit;
    Label29: TLabel;
    DBEdit32: TDBEdit;
    Label30: TLabel;
    DBMemo1: TDBMemo;
    Label33: TLabel;
    DBEdit35: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    Label32: TLabel;
    DBEdit34: TDBEdit;
    Label34: TLabel;
    DBEdit36: TDBEdit;
    qpesadasid_palet2: TWideStringField;
    qpesadasnum_palets2: TIntegerField;
    dsqlotes: TDataSource;
    qlotes: TZQuery;
    qlotesid: TIntegerField;
    qloteside: TIntegerField;
    qlotesidea: TIntegerField;
    qlotesidea2: TIntegerField;
    qloteslote: TIntegerField;
    qlotescajas: TIntegerField;
    qlotespesoneto_teorico: TFloatField;
    qlotespesoneto_real: TFloatField;
    qloteses_entrada: TIntegerField;
    DBGrid3: TDBGrid;
    qenvases: TZReadOnlyQuery;
    qpalets: TZReadOnlyQuery;
    qenvasesid: TIntegerField;
    qenvaseside: TIntegerField;
    qenvasescodigo: TWideStringField;
    qenvasescod_logi: TIntegerField;
    qenvasesdescripcion: TWideStringField;
    qenvaseslargo: TFloatField;
    qenvasesalto: TFloatField;
    qenvasesancho: TFloatField;
    qenvasestara: TFloatField;
    qenvasespeso_venta: TFloatField;
    qenvasestipo: TWideStringField;
    qenvasespalet: TIntegerField;
    qenvasesenvase_trabajo: TIntegerField;
    qenvasesenvase_venta: TIntegerField;
    qenvasescosto: TFloatField;
    qenvasesactivo: TIntegerField;
    qenvasesobservaciones: TWideStringField;
    qenvasesfacturar_pesofijo: TIntegerField;
    qenvasespreguntar_gen: TIntegerField;
    dsqenvases: TDataSource;
    dsqpalets: TDataSource;
    btcancelar: TButton;
    btborrar: TButton;
    btaceptar: TButton;
    dsqorigenes: TDataSource;
    qorigenes: TZReadOnlyQuery;
    dsqalmacenes: TDataSource;
    qalmacenes: TZReadOnlyQuery;
    dsqmprimas: TDataSource;
    qmprimas: TZReadOnlyQuery;
    qmprimasidempresa: TIntegerField;
    qmprimasid: TWideStringField;
    qmprimasvariedad: TWideStringField;
    qmprimasdescripcion: TWideStringField;
    qmprimasobservaciones: TWideStringField;
    qmprimasimagen: TBlobField;
    qmprimasEAN: TWideStringField;
    qmprimasbasculas: TIntegerField;
    qmprimasactivo: TIntegerField;
    qmprimasusar_precio_parcela: TIntegerField;
    qmprimasdesechos: TIntegerField;
    qmprimasgenerico: TWideStringField;
    qmprimascompuesto: TIntegerField;
    comboorigen: TDBLookupComboBox;
    DBLookupComboBox5: TDBLookupComboBox;
    qalmacenesempresa: TIntegerField;
    qalmacenescodigo: TIntegerField;
    qalmacenesnombre: TWideStringField;
    qlistapesadasidempresa: TIntegerField;
    qlistapesadasfecha: TDateField;
    qlistapesadasid: TIntegerField;
    qlistapesadasidea: TIntegerField;
    qlistapesadasdestino: TWideStringField;
    qorigenesempresa: TIntegerField;
    qorigenescodigo: TWideStringField;
    qorigenesnombre: TWideStringField;
    qorigenes2: TZReadOnlyQuery;
    qorigenes2empresa: TIntegerField;
    qorigenes2codigo: TIntegerField;
    qorigenes2nombre: TWideStringField;
    Label36: TLabel;
    DBEdit3: TDBEdit;
    qpesadastara0: TFloatField;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    DBEdit5: TDBEdit;
    qpesadaslotes_detalle: TWideStringField;
    qlotesparcela: TWideStringField;
    btnuevolote: TButton;
    btborrarlote: TButton;
    Label37: TLabel;
    DBEdit10: TDBEdit;
    qlotesmprima: TWideStringField;
    DBCheckBox2: TDBCheckBox;
    qpesadasidpedido: TIntegerField;
    qpesadasrecuperar_envases: TIntegerField;
    Label38: TLabel;
    Label39: TLabel;
    DBEdit20: TDBEdit;
    Label40: TLabel;
    DBEdit29: TDBEdit;
    qpesadascalibre: TFloatField;
    qpedido: TZReadOnlyQuery;
    dsqpedido: TDataSource;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    DBText5: TDBText;
    qaux: TZReadOnlyQuery;
    listaiconos: TImageList;
    documentos: TZTable;
    documentosid: TIntegerField;
    documentoside: TIntegerField;
    documentosfecha: TDateField;
    documentosdescripcion: TWideStringField;
    documentosarchivo: TBlobField;
    documentosnomarchivo: TWideStringField;
    documentosextension: TWideStringField;
    documentosidlote: TIntegerField;
    documentoscodpar: TWideStringField;
    documentosidea: TIntegerField;
    dsdocumentos: TDataSource;
    qpesadasprov_albaran: TWideStringField;
    qpesadasprov_fecha: TDateField;
    qpesadasprov_ggn: TWideStringField;
    qpesadasprov_lote: TWideStringField;
    qpesadasprov_grower: TWideStringField;
    qpesadasprov_puk: TWideStringField;
    qpesadasprov_otros: TWideStringField;
    Panel7: TPanel;
    Label47: TLabel;
    Label48: TLabel;
    Label49: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    Label52: TLabel;
    Label53: TLabel;
    DBEdit39: TDBEdit;
    DBEdit40: TDBEdit;
    DBEdit41: TDBEdit;
    DBEdit42: TDBEdit;
    DBEdit43: TDBEdit;
    DBEdit44: TDBEdit;
    DBEdit45: TDBEdit;
    Label54: TLabel;
    qlotesid_envase: TWideStringField;
    qlotesid_formato: TIntegerField;
    qlotesdesc_envase: TWideStringField;
    qlotesdesc_formato: TWideStringField;
    qlotescalibrecalidad: TIntegerField;
    qlotesdesc_calibre: TWideStringField;
    Button1: TButton;
    qlotesresto_cajas: TIntegerField;
    qpesadasidalbaran: TWideStringField;
    Label41: TLabel;
    DBLookupComboBox4: TDBLookupComboBox;
    dsqtipohora: TDataSource;
    qtipohora: TZReadOnlyQuery;
    qtipohoraid: TWideStringField;
    qtipohoranombre: TWideStringField;
    qtipohoraempresa: TIntegerField;
    DBLookupComboBox6: TDBLookupComboBox;
    DBLookupComboBox7: TDBLookupComboBox;
    DBLookupComboBox8: TDBLookupComboBox;
    dsqformatos: TDataSource;
    qformatos: TZReadOnlyQuery;
    dsqcalidad: TDataSource;
    qcalidad: TZReadOnlyQuery;
    qcalidadid: TIntegerField;
    qcalidaddescripcion: TWideStringField;
    qcalidadvalor: TWideStringField;
    qformatosid: TIntegerField;
    qformatoside: TIntegerField;
    qformatosdescripcion: TWideStringField;
    qformatosactivo: TIntegerField;
    qformatosdescripcion2: TWideStringField;
    qformatoscoste: TFloatField;
    qformatospeso: TFloatField;
    qlistapesadascosto_materiales: TFloatField;
    btmodificarlote: TButton;
    qaux2: TZReadOnlyQuery;
    Button2: TButton;
    qetiquetas: TZReadOnlyQuery;
    dsqetiquetas: TDataSource;
    dsqlotespesadas: TDataSource;
    qlotespesadas: TZReadOnlyQuery;
    qetiquetasid: TIntegerField;
    qetiquetasidempresa: TIntegerField;
    qetiquetasidEA: TIntegerField;
    qetiquetasid_palet: TWideStringField;
    qetiquetasnum_palets: TIntegerField;
    qetiquetasid_palet2: TWideStringField;
    qetiquetasnum_palets2: TIntegerField;
    qetiquetasid_envase: TWideStringField;
    qetiquetasnum_envases: TIntegerField;
    qetiquetasiddestino: TIntegerField;
    qetiquetasdestino: TWideStringField;
    qetiquetaspeso_bruto: TFloatField;
    qetiquetastara: TFloatField;
    qetiquetaspeso_neto: TFloatField;
    qetiquetaspeso_neto_teorico: TFloatField;
    qetiquetaspeso_medio: TFloatField;
    qetiquetastemperatura: TFloatField;
    qetiquetasfecha: TDateField;
    qetiquetasfechatrabajo: TDateField;
    qetiquetashora: TTimeField;
    qetiquetasCEA: TWideStringField;
    qetiquetasresto_cajas: TFloatField;
    qetiquetasresto_pesoneto: TFloatField;
    qetiquetaslote: TIntegerField;
    qetiquetasORIGEN: TWideStringField;
    qetiquetasidorigen: TIntegerField;
    qetiquetasmprima: TWideStringField;
    qetiquetasgen_caja: TIntegerField;
    qetiquetascosto: TFloatField;
    qetiquetascoste_manipulacion: TFloatField;
    qetiquetasdias_camara: TIntegerField;
    qetiquetascosto_camara: TFloatField;
    qetiquetascodigoR: TWideStringField;
    qetiquetasparcela: TWideStringField;
    qetiquetasfecha_cierre: TDateField;
    qetiquetascosto_materiales: TFloatField;
    qetiquetascosto_cosechar: TFloatField;
    qetiquetasborrado: TIntegerField;
    qetiquetasseleccionado: TIntegerField;
    qetiquetasOBSERVACIONES: TWideStringField;
    qetiquetastipo_trabajo: TWideStringField;
    qetiquetastipo_generador: TWideStringField;
    qetiquetasremanipulado: TIntegerField;
    qetiquetasfecha_envasado: TDateField;
    qetiquetascodean: TWideStringField;
    qetiquetascodssc: TWideStringField;
    qetiquetaspedidocliente: TIntegerField;
    qetiquetascosto_sinmt: TFloatField;
    qetiquetastara0: TFloatField;
    qetiquetaslotes_detalle: TWideStringField;
    qetiquetasidpedido: TIntegerField;
    qetiquetasidalbaran: TWideStringField;
    qetiquetasrecuperar_envases: TIntegerField;
    qetiquetascalibre: TFloatField;
    qetiquetasprov_albaran: TWideStringField;
    qetiquetasprov_fecha: TDateField;
    qetiquetasprov_ggn: TWideStringField;
    qetiquetasprov_lote: TWideStringField;
    qetiquetasprov_grower: TWideStringField;
    qetiquetasprov_puk: TWideStringField;
    qetiquetasprov_otros: TWideStringField;
    qetiquetasidfactura: TWideStringField;
    qetiquetasidgrupo: TIntegerField;
    infpesadas: TfrxReport;
    informedb: TfrxDBDataset;
    informedb2: TfrxDBDataset;
    Label55: TLabel;
    qpesadasidfactura: TWideStringField;
    qinsertarmateriales: TZReadOnlyQuery;
    qpedidoid: TIntegerField;
    qpedidoide: TIntegerField;
    qpedidoidcliente: TIntegerField;
    qpedidoiddestino: TWideStringField;
    qpedidofecha_pedido: TDateField;
    qpedidofecha_carga: TDateField;
    qpedidofecha_entrega: TDateField;
    qpedidohora_carga: TTimeField;
    qpedidopedidocliente: TWideStringField;
    qpedidoabierto: TIntegerField;
    qpedidoobservaciones: TWideStringField;
    qpedidofecha_elavoracion: TDateField;
    qpedidofecha_caducidad: TDateField;
    qpedidoalbarancliente: TWideStringField;
    qpedidonombre_corto: TWideStringField;
    qpedidodescripcion: TWideStringField;
    DBText6: TDBText;
    Label31: TLabel;
    DBText7: TDBText;
    Label35: TLabel;
    qpedidoalbaran: TWideStringField;
    qpedidofactura: TWideStringField;
    DBText8: TDBText;
    DBText9: TDBText;
    procedure btbuscarClick(Sender: TObject);
    procedure chk_salidasClick(Sender: TObject);
    procedure chk_entradasClick(Sender: TObject);
    procedure btnuevoClick(Sender: TObject);
    procedure dsqpesadasStateChange(Sender: TObject);
    procedure btaceptarClick(Sender: TObject);
    procedure btcancelarClick(Sender: TObject);
    procedure dsqpesadasDataChange(Sender: TObject; Field: TField);
    procedure btborrarClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnuevoloteClick(Sender: TObject);
    procedure btborrarloteClick(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure qlotesAfterPost(DataSet: TDataSet);
    procedure btdborrarClick(Sender: TObject);
    procedure btdcancelarClick(Sender: TObject);
    procedure btdverClick(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure qlotesBeforePost(DataSet: TDataSet);
    procedure dsqlotesStateChange(Sender: TObject);
    procedure btmodificarloteClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure qpesadasBeforeDelete(DataSet: TDataSet);
    procedure DBGrid1CellClick(Column: TColumn);
  private
    { Private declarations }
    hWndC : THandle;
    procedure SetResolution(Width, Height: integer);


  public
    { Public declarations }
     var desdefuera:integer;
  end;

var
  fpesadas: Tfpesadas;

const
  WM_CAP_START                    = WM_USER;
  WM_CAP_DRIVER_CONNECT           = WM_CAP_START + 10;
  WM_CAP_DRIVER_DISCONNECT        = WM_CAP_START + 11;
  WM_CAP_SAVEDIB                  = WM_CAP_START + 25;
  WM_CAP_GET_VIDEOFORMAT          = WM_CAP_START + 44;
  WM_CAP_SET_VIDEOFORMAT          = WM_CAP_START + 45;
  WM_CAP_SET_PREVIEW              = WM_CAP_START + 50;
  WM_CAP_SET_OVERLAY              = WM_CAP_START + 51;
  WM_CAP_SET_PREVIEWRATE          = WM_CAP_START + 52;
  WM_CAP_SET_SCALE                = WM_CAP_START + 53;


function capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle, x, y, nWidth, nHeight: integer; ParentWin: HWND; nId: integer): HWND; stdcall external 'AVICAP32.DLL';


implementation
uses datos, datostrazabilidad, datosestadisticas, fmaterialespesada,
  datostrazabilidad2;
{$R *.dfm}

procedure Tfpesadas.btaceptarClick(Sender: TObject);
var id,tmultiplicador:string;
    multiplicador:real;
begin
    qaux.SQL.Clear;
    qaux.SQL.Add('select compuesto from materias_primas where idempresa='+qpesadasidempresa.asstring+' and id='+''''+qpesadasmprima.asstring+'''');
    qaux.Open;
    if qaux.Fields[0].AsInteger=0 then multiplicador:=1 else multiplicador:=0.5;
    tmultiplicador:=floattostr(multiplicador);
    tmultiplicador:=StringReplace(tmultiplicador, ',', '.',[rfReplaceAll, rfIgnoreCase]);


    edit1.Text:=qpesadasid.AsString;
    id:=qpesadasid.AsString;

    qlotes.Refresh;
             qaux.Close;
             qaux.sql.clear;
             qaux.sql.Add('delete from ea_materiales where ide='+qpesadasidempresa.AsString+' and idea='+qpesadasid.AsString+' and idea2='+qpesadasidea.AsString);
             qaux.execsql;

             if qlotes.RecordCount>0 then
             begin
               qinsertarmateriales.prepare;
               qinsertarmateriales.ParamByName('EMPRESA').AsInteger:=qpesadasidempresa.AsInteger;
               qinsertarmateriales.ParamByName('IDEA').AsInteger:=qpesadasid.AsInteger;
               qinsertarmateriales.ParamByName('IDEA2').AsInteger:=qpesadasidea.AsInteger;
               qinsertarmateriales.ParamByName('NUMPALETS').AsInteger:=qpesadasnum_palets.AsInteger;
               qinsertarmateriales.ParamByName('MULTIPLICADOR').AsFLOAT:=multiplicador;
               qinsertarmateriales.ParamByName('IDPALET').AsString:=qpesadasid_palet.AsString;
               qinsertarmateriales.ExecSQL;
{                  qaux.Close;
                  qaux.SQL.Clear;
                  qaux.SQL.Add('insert into ea_materiales ');
                  qaux.SQL.Add('select idempresa,'+qpesadasid.AsString+' as idea,'+qpesadasidea.AsString+' as idea2,idarticulof,sum(cantidadtotal) as cantidadtotal,sum(pesototal) as pesototal,null,sum(preciototal) as preciototal,0 as recuperado from ');
                                            //// materiales de los envases
                  qaux.SQL.Add('(SELECT ac.idempresa,ac.idarticuloalmacen,ac.idarticulof,(ac.cantidad*lp.cajas*'+tmultiplicador+') as cantidadtotal,(ac.peso*lp.cajas*'+tmultiplicador+') as pesototal,(ac.cantidad*ac.preciocoste*lp.cajas*'+tmultiplicador+') as preciototal ');
                  qaux.SQL.Add(' FROM articulos_componentes ac,(SELECT lp.ide,lp.idea,lp.idea2,sum(cajas) as cajas,aa.id as id_envase FROM lotes_pesadas lp,articulos_almacen aa where aa.ide=lp.ide and aa.codigo=lp.id_envase ');
                  qaux.SQL.Add(' and lp.ide='+qpesadasidempresa.AsString+' and lp.idea='+qpesadasid.AsString+' and lp.idea2='+qpesadasidea.AsString+' group by lp.id_envase ) as lp ');
                  qaux.SQL.Add(' where ac.idempresa=lp.ide and ac.idarticuloalmacen=lp.id_envase ');
                  qaux.SQL.Add(' union ALL');  // materiales de los formatos
                  qaux.SQL.Add(' SELECT ac.ide,ac.idcfg,ac.idaf,(ac.cantidad*lp.cajas*'+tmultiplicador+') as cantidadtotal,(ac.peso*lp.cajas*'+tmultiplicador+') as pesototal,(ac.coste*lp.cajas*'+tmultiplicador+') as preciototal FROM ');
                  qaux.SQL.Add(' configuraciones_detalle ac,(SELECT lp.ide,lp.idea,lp.idea2,sum(cajas) as cajas,aa.id as id_envase FROM lotes_pesadas lp, ');
                  qaux.SQL.Add(' configuraciones aa where aa.ide=lp.ide and aa.id=lp.id_formato and lp.ide='+qpesadasidempresa.AsString+' and lp.idea='+qpesadasid.AsString+' and lp.idea2='+qpesadasidea.AsString+' group by lp.id_envase ) as lp ');
                  qaux.SQL.Add(' where ac.ide=lp.ide and ac.idcfg=lp.id_envase ');
                  qaux.SQL.Add(' union ALL');  //// materiales de los palets
                  qaux.SQL.Add(' SELECT ac.idempresa,ac.idarticuloalmacen,ac.idarticulof,(ac.cantidad*'+qpesadasnum_palets.AsString+') as cantidadtotal,(ac.peso*'+qpesadasnum_palets.AsString+') as pesototal,(ac.coste*'+qpesadasnum_palets.AsString+') as preciototal');
                  qaux.SQL.Add(' FROM articulos_componentes ac where ac.idempresa='+qpesadasidempresa.AsString+' and ac.idarticuloalmacen=(select id from articulos_almacen where codigo='+''''+qpesadasid_palet.AsString+''''+' )');
                  qaux.SQL.Add(' ) as ea_materiales_tmp group by idarticulof');
                  qaux.execsql;}
             end;
             if qpesadasrecuperar_envases.AsInteger=1 then
             begin
                qaux.SQL.Clear;
                qaux.SQL.Add('update ea_materiales ea set recuperado=-1 where ea.ide='+qpesadasidempresa.asstring+' and ea.idea='+qpesadasid.AsString+' and ea.idea2='+qpesadasidea.AsString);
                qaux.execsql;
             end else
                begin
                  qaux.SQL.Clear;
                  qaux.SQL.Add('update ea_materiales ea set recuperado=0 where ea.ide='+qpesadasidempresa.asstring+' and ea.idea='+qpesadasid.AsString+' and ea.idea2='+qpesadasidea.AsString);
                  qaux.execsql;
                end;

             if qpesadas.State in [dsbrowse] then qpesadas.Edit;
             qpesadasid_palet2.Value:='TRIGGER_ON';
             if qpesadascosto_sinmt.Asstring='' then qpesadascosto_sinmt.Value:=0;
             qaux.sql.clear;
             qaux.sql.Add('select sum(peso),sum(precio) from ea_materiales where  ide='+qpesadasidempresa.AsString+' and idea='+qpesadasid.AsString+' and idea2='+qpesadasidea.AsString);
             qaux.open;
             qpesadastara.Value:=qaux.Fields[0].AsFloat;
             qaux.sql.clear;
             qaux.sql.Add('select sum(peso),sum(precio) from ea_materiales where recuperado=0 and ide='+qpesadasidempresa.AsString+' and idea='+qpesadasid.AsString+' and idea2='+qpesadasidea.AsString);
             qaux.open;
             qpesadascosto_materiales.Value:=qaux.Fields[1].AsFloat;
             qpesadascosto.Value:=qpesadascosto_cosechar.AsFloat+qpesadascosto_camara.AsFloat+qpesadascosto_materiales.AsFloat+qpesadascosto_sinmt.AsFloat+qpesadascoste_manipulacion.AsFloat;
             qpesadas.Post;
             qaux.sql.clear;
             qaux.sql.Add('select ea.ide,af.codigo from ea_materiales ea,articulosf af where ea.ide=af.idempresa and ea.idaf=af.id and ea.recuperado=0 and ea.ide='+qpesadasidempresa.AsString+' and ea.idea='+qpesadasid.AsString+' and ea.idea2='+qpesadasidea.AsString);
             qaux.open;
{             while not qaux.Eof do
             begin
                 qaux2.SQL.Clear;
                 qaux2.SQL.Add('update articulosf set stock=(select sum(stock) from entradas_detalle where stock>0 and id_propio='+''''+qaux.Fields[1].asstring+''''+' and idempresa='+qaux.Fields[0].asstring+')');
                 qaux2.SQL.Add(' where idempresa='+qaux.Fields[0].AsString+' and codigo='+''''+qaux.Fields[1].asstring+'''');
                 qaux2.execsql;
                 qaux.Next;
             end;    }
    dbedit1.Enabled:=false;
    qlistapesadas.Refresh;
    qpesadas.Refresh;
    qlistapesadas.Locate('id',id,[locaseinsensitive]);
    if dmproduccion.qsalidas2.Active=true then dmproduccion.qsalidas2.Refresh;
    if dmproduccion.qsalidaslotes.Active=true then dmproduccion.qsalidaslotes.Refresh;
    if dmproduccion.qentradas2.Active=true then dmproduccion.qentradas2.Refresh;
    if dmproduccion.qentradas.Active=true then dmproduccion.qentradas.Refresh;
    if dmtr.qsalidas.Active=true then dmtr.qsalidas.Refresh;
    if dmtr.qea_pesadas.Active=true then dmtr.qea_pesadas.Refresh;
    if dmestadisticas.qproduccion_almacen.active then dmestadisticas.qproduccion_almacen.Refresh;

   // btbuscar.Click;

end;

procedure Tfpesadas.btborrarClick(Sender: TObject);
begin
    qpesadas.Delete;
    dbedit1.Enabled:=false;
    qlistapesadas.Refresh;
    qpesadas.Refresh;
    if dmproduccion.qsalidas2.Active then dmproduccion.qsalidas2.Refresh;
    if dmproduccion.qsalidaslotes.Active then dmproduccion.qsalidaslotes.Refresh;
    edit1.SetFocus;
end;

procedure Tfpesadas.btborrarloteClick(Sender: TObject);
begin
    qlotes.Delete;
end;

procedure Tfpesadas.btbuscarClick(Sender: TObject);
var vid:string;
begin

    if edit1.Text<>'' then
    begin
       vid:=edit1.Text;
    end else vid:='%';
{         qlistapesadas.Open;
         qlistapesadas.Refresh;
         qlistapesadas.locate('id',edit1.Text,[locaseinsensitive]);   }
//         qpesadas.Close;
//         qlotes.Close;
     qlistapesadas.close;
     qlistapesadas.Prepare;
     qlistapesadas.ParamByName('ID').AsString:=vid;
     qlistapesadas.Open;
  //         qlistapesadas.SQL.Clear;
  //         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas where id='+edit1.Text+' and idempresa='+dm.tempresaid.AsString+' order by fecha desc, id desc limit 500');

     if qlistapesadas.RecordCount=0 then showmessage('CODIGO NO ENCONTRADO');
     qpesadas.Prepare;
     qpesadas.ParamByName('id').AsInteger:=qlistapesadasid.AsInteger;
     qpesadas.ParamByName('idea').AsInteger:=qlistapesadasidea.AsInteger;
     qpesadas.Refresh;
  //    qpesadas.SQL.Clear;
  //    qpesadas.SQL.Add('select * from ea_pesadas where id='+qlistapesadasid.AsString+' and idea='+qlistapesadasidea.AsString+' order by fecha desc');
     qlotes.Prepare;
     qlotes.ParamByName('id').AsInteger:=qlistapesadasid.AsInteger;
     qlotes.ParamByName('idea').AsInteger:=qlistapesadasidea.AsInteger;
     qlotes.Refresh;



end;


procedure Tfpesadas.btcancelarClick(Sender: TObject);
begin
    qpesadas.Cancel;
    dbedit1.Enabled:=false;
end;

procedure Tfpesadas.btdborrarClick(Sender: TObject);
begin
    documentos.Delete;
end;

procedure Tfpesadas.btdcancelarClick(Sender: TObject);
begin
    documentos.cancel
end;

procedure Tfpesadas.btdverClick(Sender: TObject);
var nomarchivo:string;
begin
    nomarchivo:=documentosnomarchivo.asstring;
    ShellExecute(Handle,nil,PChar('c:\agrigest\tmp\'+nomarchivo),'','',SW_SHOWNORMAL);
end;

procedure Tfpesadas.btmodificarloteClick(Sender: TObject);
begin
    qlotes.Edit;
    dbgrid3.SetFocus;
    dbgrid3.SelectedIndex:=0;
end;

procedure Tfpesadas.btnuevoClick(Sender: TObject);
begin
    qpesadas.Append;
    dbedit1.Enabled:=true;
    dbedit1.SetFocus;
end;

procedure Tfpesadas.btnuevoloteClick(Sender: TObject);
begin
    qlotes.Append;
    dbgrid3.SetFocus;

end;

procedure Tfpesadas.Button1Click(Sender: TObject);
begin
    materialespesadas := Tmaterialespesadas.Create(nil);
    try
      materialespesadas.qmateriales.close;
      materialespesadas.qmateriales.sql.Clear;
      materialespesadas.qmateriales.sql.Add('select a.id,a.codigo,a.descripcion,ea.ide,ea.idea,ea.idea2,ea.idaf,ea.cantidad,ea.peso,ea.lote,ea.precio,ea.recuperado from ea_materiales ea,articulosf a where ea.ide=a.idempresa and ea.idaf=a.id ');
      materialespesadas.qmateriales.sql.Add(' and ea.ide='+qpesadasidempresa.asstring+' and ea.idea='+qpesadasid.AsString+' and ea.idea2='+qpesadasidea.AsString+' order by a.descripcion');
//      materialespesadas.qmateriales.open;
      materialespesadas.qmateriales2.close;
      materialespesadas.qmateriales2.sql.Clear;
      materialespesadas.qmateriales2.sql.Add('select * from ea_materiales ea where ea.ide='+qpesadasidempresa.asstring+' and ea.idea='+qpesadasid.AsString+' and ea.idea2='+qpesadasidea.AsString);
//      materialespesadas.qmateriales2.open;
      materialespesadas .showmodal();
    finally
      materialespesadas .Free;
            qaux.sql.clear;
             qaux.sql.Add('select sum(peso) from ea_materiales where ide='+qpesadasidempresa.AsString+' and idea='+qpesadasid.AsString+' and idea2='+qpesadasidea.AsString);
             qaux.open;
             if qpesadas.State in [dsbrowse] then qpesadas.Edit;
             qpesadasid_palet2.Value:='TRIGGER_OFF';
             if qpesadascosto_sinmt.Asstring='' then qpesadascosto_sinmt.Value:=0;
             qpesadastara.Value:=qaux.Fields[0].AsFloat;
             qaux.sql.clear;
             qaux.sql.Add('select sum(peso),sum(precio) from ea_materiales where recuperado=0 and ide='+qpesadasidempresa.AsString+' and idea='+qpesadasid.AsString+' and idea2='+qpesadasidea.AsString);
             qaux.open;
             qpesadascosto_materiales.Value:=qaux.Fields[1].AsFloat;
//             qpesadascosto.Value:=qpesadascosto_cosechar.AsFloat+qpesadascosto_camara.AsFloat+qpesadascosto_materiales.AsFloat+qpesadascosto_sinmt.AsFloat+qpesadascoste_manipulacion.AsFloat;
             qpesadas.Post;
             qpesadas.refresh;
    end;
end;

procedure Tfpesadas.Button2Click(Sender: TObject);
begin

    qetiquetas.Close;
    qetiquetas.prepare;
    qetiquetas.ParamByName('PID').AsInteger:=qpesadasid.asinteger;
    qetiquetas.ParamByName('PIDEA').AsInteger:=qpesadasidea.asinteger;
    qetiquetas.ParamByName('PEMPRESA').AsInteger:=qpesadasidempresa.asinteger;
    qetiquetas.open;
    qlotespesadas.close;
    qlotespesadas.prepare;
    qlotespesadas.ParamByName('PID').AsInteger:=qpesadasid.asinteger;
    qlotespesadas.ParamByName('PIDEA').AsInteger:=qpesadasidea.asinteger;
    qlotespesadas.ParamByName('PEMPRESA').AsInteger:=qpesadasidempresa.asinteger;
//    qlotespesadas.SQL.add('SELECT lp.ide,lp.idea,lp.idea2,lp.lote,lp.cajas,lp.pesoneto_teorico,lp.pesoneto_real,l.fecha,l.parcela,l.PAISORIGEN,l.mprima,lp.desc_envase,lp.desc_formato,lp.desc_calibre,l.trazabilidad,pc.nombre ');
//    qlotespesadas.SQL.Add(' FROM `lotes_pesadas` lp, lotes l,parcelas pc where lp.parcela=pc.codpar and lp.ide=pc.empresa and lp.lote=l.codigo and lp.ide=l.idempresa and lp.idea='+dm.qpesadassalidasid.asstring+' and lp.ide='+dm.qpesadassalidasidempresa.asstring+' and lp.idea2='+dm.qpesadassalidasidea.asstring);
    qlotespesadas.open;
    informedb.Datasource:=dsqetiquetas;
    informedb2.DataSource:=dsqlotespesadas;
    infpesadas.Report.Clear;
    infpesadas.LoadFromFile('c:\agrigest\informes\etiquetamovimientos2.fr3');
//    informes.Variables.Variables['TITULO']:=QUOTEDSTR('PARTIDA: '+qpartidasid.asstring+ ' FECHA: '+datetostr(tfecha.Date)+' PARCELA: '+qinfpartidasnombre.AsString+' VARIEDAD: '+qinfpartidasdescripcion.AsString);
//    informes.PrintOptions.Printer.Empty
    infpesadas.Report.PrepareReport(true);
//    informes.PrintOptions.ShowDialog:=false;
//     informes.Report.ShowReport();
    infpesadas.Print;
end;

procedure Tfpesadas.chk_entradasClick(Sender: TObject);
begin
    if (chk_entradas.Checked) and (chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;

    if (not chk_entradas.Checked) and (chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas where idea=0 order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;
    if (chk_entradas.Checked) and (not chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas where idea<>0 order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;

    end;
    if (not chk_entradas.Checked) and (not chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;

end;

procedure Tfpesadas.chk_salidasClick(Sender: TObject);
begin
    if (chk_entradas.Checked) and (chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;

    if (not chk_entradas.Checked) and (chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas where idea<=0 order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;
    if (chk_entradas.Checked) and (not chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas where idea<>0 order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;

    end;
    if (not chk_entradas.Checked) and (not chk_salidas.Checked) then
    begin
         qlistapesadas.close;
         qlistapesadas.SQL.Clear;
         qlistapesadas.SQL.Add('select idempresa,fecha,id,idea,destino,costo_materiales from ea_pesadas order by fecha desc, id desc limit 1000');
         qlistapesadas.Open;
    end;

end;

procedure Tfpesadas.DBGrid1CellClick(Column: TColumn);
begin
  if qlistapesadas.RecordCount>0 then
  begin
//    qpesadas.Close;
    qpesadas.Prepare;
    qpesadas.ParamByName('id').AsInteger:=qlistapesadasid.AsInteger;
    qpesadas.ParamByName('idea').AsInteger:=qlistapesadasidea.AsInteger;
//    qpesadas.Open;
    qpesadas.Refresh;
//    qpesadas.SQL.Clear;
//    qpesadas.SQL.Add('select * from ea_pesadas where id='+qlistapesadasid.AsString+' and idea='+qlistapesadasidea.AsString+' order by fecha desc');
//    qlotes.Close;
    qlotes.Prepare;
    qlotes.ParamByName('id').AsInteger:=qlistapesadasid.AsInteger;
    qlotes.ParamByName('idea').AsInteger:=qlistapesadasidea.AsInteger;
//    qlotes.Open;
    qlotes.Refresh;

 //   qlotes.SQL.Clear;
 //   qlotes.SQL.Add('select * from lotes_pesadas where idea='+qlistapesadasid.AsString+' and idea2='+qlistapesadasidea.AsString+'  order by idea desc');
  end;
end;

procedure Tfpesadas.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if qlotes.State in [dsedit,dsinsert] then
begin
{  DBLookupComboBox6.Visible:=true;
  DBLookupComboBox7.Visible:=true;
  DBLookupComboBox8.Visible:=true;}
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = DBLookupComboBox6.DataField) then
    with DBLookupComboBox6 do
    begin
      Left := Rect.Left + DBGrid3.Left + 2;
      Top := Rect.Top + DBGrid3.Top + 2;
     // Width := 150;//Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
    end else DBLookupComboBox6.Visible:=false;

 if (Column.Field.FieldName = DBLookupComboBox7.DataField) then
    with DBLookupComboBox7 do
    begin
      Left := Rect.Left + DBGrid3.Left + 2;
      Top := Rect.Top + DBGrid3.Top + 2;
    //  Width := 150;//Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
    end else DBLookupComboBox7.Visible:=false;

 if (Column.Field.FieldName = DBLookupComboBox8.DataField) then
    with DBLookupComboBox8 do
    begin
      Left := Rect.Left + DBGrid3.Left + 2;
      Top := Rect.Top + DBGrid3.Top + 2;
  //    Width := 150;//Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
    end else DBLookupComboBox8.Visible:=false;

  end
end else
begin
  DBLookupComboBox6.Visible:=false;
  DBLookupComboBox7.Visible:=false;
  DBLookupComboBox8.Visible:=false;
end;

end;

procedure Tfpesadas.dsqlotesStateChange(Sender: TObject);
begin
   if qlotes.State in [dsinsert,dsedit] then dbgrid3.Enabled:=true else 
   begin
      DBLookupComboBox6.Visible:=false;
      DBLookupComboBox7.Visible:=false;
      DBLookupComboBox8.Visible:=false;
      dbgrid3.Enabled:=true;
   end;
end;

procedure Tfpesadas.dsqpesadasDataChange(Sender: TObject; Field: TField);
begin
   if qpesadas.State in [dsbrowse] then
   begin
       if qpesadasidea.AsInteger<=0 then
       begin
         qorigenes2.Close;
         dsqorigenes.DataSet:=qorigenes2;
         comboorigen.keyfield:='codigo';
         comboorigen.DataField:='idorigen';
         qorigenes2.Open;
       end;
       if qpesadasidea.AsInteger>0 then
       begin
         qorigenes.Close;
         dsqorigenes.DataSet:=qorigenes;
         comboorigen.keyfield:='nombre';
         comboorigen.DataField:='ORIGEN';
         qorigenes.Open;
       end;
     qpedido.close;
     qpedido.prepare;
     qpedido.ParamByName('EMPRESA').AsInteger:=qpesadasidempresa.AsInteger;
     qpedido.ParamByName('IDPEDIDO').AsInteger:=qpesadasidpedido.AsInteger;
     qpedido.open;
   end;
end;

procedure Tfpesadas.dsqpesadasStateChange(Sender: TObject);
begin
   if qpesadas.State in [dsedit,dsinsert] then
   begin
      btborrar.Enabled:=false;
      btaceptar.Caption:='Aceptar';
      btcancelar.Enabled:=true;
   end;
   if qpesadas.State in [dsbrowse] then
   begin
      btborrar.Enabled:=true;
      btaceptar.caption:='Recalcular';
      btcancelar.Enabled:=false;
   end;

end;

procedure Tfpesadas.Edit1Enter(Sender: TObject);
begin
   edit1.Text:='';
end;

procedure Tfpesadas.Edit1Exit(Sender: TObject);
begin
   btbuscar.Click;
end;

procedure Tfpesadas.FormClose(Sender: TObject; var Action: TCloseAction);
var lote,pesada:integer;
begin
   lote:=qloteslote.AsInteger;
   if dmtr.qlotes.Active then dmtr.qlotes.Refresh;
   if dmtr.qlotes.Active then dmtr.qlotes.Locate('codigo',lote,[locaseinsensitive,lopartialkey]);
   if qpesadasidea.AsInteger=0 then
   begin
       pesada:=qpesadasid.AsInteger;
       if dmtr.qsalidas.Active then dmtr.qsalidas.Refresh;
       if dmtr.qsalidas.Active then dmtr.qsalidas.Locate('id',pesada,[locaseinsensitive,lopartialkey]);
   end else
   begin
       pesada:=qpesadasid.AsInteger;
       if dmtr.qea_pesadas.Active then dmtr.qea_pesadas.Refresh;
       if dmtr.qea_pesadas.Active then dmtr.qea_pesadas.Locate('id',pesada,[locaseinsensitive,lopartialkey]);

   end;
   qlistapesadas.close;
   qpesadas.close;
   qlotes.close;
   qenvases.close;
   qpalets.close;
   qmprimas.close;
   qorigenes.close;
   qorigenes.close;
   qalmacenes.close;

end;

procedure Tfpesadas.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin

    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        if (key='.') and (activecontrol is tdbedit) then
        begin
           if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
        end;
        if (key='.') and (activecontrol is tdbgrid) then
        begin
         
          key:=','
             
        end;
        if (key='.') and (activecontrol is tedit) then
        begin
           key:=','
        end;
    end;
    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Tfpesadas.qlotesAfterPost(DataSet: TDataSet);
begin
    qlotes.Refresh;
end;

procedure Tfpesadas.qlotesBeforePost(DataSet: TDataSet);
begin
   if qlotes.State in [dsinsert,dsedit] then
   begin
     qloteside.Value:=qpesadasidempresa.AsInteger;
     qlotesidea.Value:=qpesadasid.AsInteger;
     qlotesidea2.Value:=qpesadasidea.AsInteger;
     qlotesdesc_envase.Value:=qenvasesdescripcion.AsString;
     qlotesdesc_formato.Value:=qformatosdescripcion.AsString;
     qlotesdesc_calibre.Value:=qcalidaddescripcion.AsString;

   end;
end;

procedure Tfpesadas.qpesadasBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar este ID?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure TFpesadas.SetResolution(Width, Height: integer);
var
  bi: BITMAPINFO;
begin
  SendMessage(hWndC, WM_CAP_GET_VIDEOFORMAT, sizeof(bi), Cardinal(@bi));
  bi.bmiHeader.biWidth:= Width;
  bi.bmiHeader.biHeight:= Height;

  if SendMessage(hWndC, WM_CAP_SET_VIDEOFORMAT, sizeof(bi), Cardinal(@bi)) <> 0 then
  begin
    SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);

  end;
end;


end.
