unit pesadas;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  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, 
    Vcl.Mask, Vcl.ImgList, 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: TFDQuery;
    dsqlistapesadas: TDataSource;
    qpesadas: TFDQuery;
    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: TFDQuery;
    qlotesid: TIntegerField;
    qloteside: TIntegerField;
    qlotesidea: TIntegerField;
    qlotesidea2: TIntegerField;
    qloteslote: TIntegerField;
    qlotescajas: TIntegerField;
    qlotespesoneto_teorico: TFloatField;
    qlotespesoneto_real: TFloatField;
    qloteses_entrada: TIntegerField;
    DBGrid3: TDBGrid;
    qenvases: TFDQuery;
    qpalets: TFDQuery;
    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: TFDQuery;
    dsqalmacenes: TDataSource;
    qalmacenes: TFDQuery;
    dsqmprimas: TDataSource;
    qmprimas: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    dsqpedido: TDataSource;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    DBText5: TDBText;
    qaux: TFDQuery;
    listaiconos: TImageList;
    documentos: TFDTable;
    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: TFDQuery;
    qtipohoraid: TWideStringField;
    qtipohoranombre: TWideStringField;
    qtipohoraempresa: TIntegerField;
    DBLookupComboBox6: TDBLookupComboBox;
    DBLookupComboBox7: TDBLookupComboBox;
    DBLookupComboBox8: TDBLookupComboBox;
    dsqformatos: TDataSource;
    qformatos: TFDQuery;
    dsqcalidad: TDataSource;
    qcalidad: TFDQuery;
    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: TFDQuery;
    Button2: TButton;
    qetiquetas: TFDQuery;
    dsqetiquetas: TDataSource;
    dsqlotespesadas: TDataSource;
    qlotespesadas: TFDQuery;
    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: TFDQuery;
    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.
