unit fcargastratamientos;

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, Data.DB,  
   Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids,
  Vcl.DBCtrls;

type
  Tcargastratamientos = class(TForm)
    Panel2: TPanel;
    btAnuevo: TButton;
    btAborrar: TButton;
    btAmodificar: TButton;
    btAguardar: TButton;
    btAcancelar: TButton;
    Button1: TButton;
    qcargas: TFDQuery;
    qmeteorologia: TFDQuery;
    dscargas: TDataSource;
    dsqmeteorologia: TDataSource;
    qcargasid: TIntegerField;
    qcargaside: TIntegerField;
    qcargasidt: TIntegerField;
    qcargasfecha: TDateField;
    qcargashora_inicio: TTimeField;
    qcargashora_fin: TTimeField;
    qcargasid_emp: TIntegerField;
    qcargasoperario: TWideStringField;
    qcargasid_tractor: TWideStringField;
    qcargastractor: TWideStringField;
    qcargasid_fumigadora: TWideStringField;
    qcargasfumigadora: TWideStringField;
    qcargascondiciones_meteorologicas: TWideStringField;
    qcargascantidad: TIntegerField;
    dsqoperarios: TDataSource;
    qoperarios: TFDQuery;
    dsqfumigadoras: TDataSource;
    qfumigadoras: TFDQuery;
    dsqtractores: TDataSource;
    qtractores: TFDQuery;
    dsqproductos: TDataSource;
    qproductos: TFDQuery;
    qtractoresidempresa: TIntegerField;
    qtractoresid: TWideStringField;
    qtractoresdescripcion: TWideStringField;
    qfumigadorasidempresa: TIntegerField;
    qfumigadorasid: TWideStringField;
    qfumigadorasdescripcion: TWideStringField;
    qoperarioside: TIntegerField;
    qoperariosid: TSmallintField;
    qoperariosnif: TWideStringField;
    qoperariosnombre: TWideStringField;
    qmeteorologiaid: TIntegerField;
    qmeteorologiaide: TIntegerField;
    qmeteorologiadescripcion: TWideStringField;
    Panel1: TPanel;
    combooperarios: TDBLookupComboBox;
    combodepositos: TDBLookupComboBox;
    combotractores: TDBLookupComboBox;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    DBGrid2: TDBGrid;
    qproductoside: TIntegerField;
    qproductosidt: TIntegerField;
    qproductosidaf: TIntegerField;
    qproductosdescripcion_af: TWideStringField;
    qproductoscant_producto: TFloatField;
    combometeorologia: TDBLookupComboBox;
    updatehorafin: TFDQuery;
    updatefincargas: TFDQuery;
    updatefincargastratamiento: TFDQuery;
    procedure qmeteorologiaBeforeOpen(DataSet: TDataSet);
    procedure qoperariosBeforeOpen(DataSet: TDataSet);
    procedure qfumigadorasBeforeOpen(DataSet: TDataSet);
    procedure qtractoresBeforeOpen(DataSet: TDataSet);
    procedure qcargasBeforeOpen(DataSet: TDataSet);
    procedure dscargasDataChange(Sender: TObject; Field: TField);
    procedure qproductosBeforeOpen(DataSet: TDataSet);
    procedure dscargasStateChange(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormShow(Sender: TObject);
    procedure qcargasBeforePost(DataSet: TDataSet);
    procedure qcargasAfterInsert(DataSet: TDataSet);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure qcargasAfterPost(DataSet: TDataSet);
    procedure btAnuevoClick(Sender: TObject);
    procedure btAborrarClick(Sender: TObject);
    procedure btAmodificarClick(Sender: TObject);
    procedure btAguardarClick(Sender: TObject);
    procedure btAcancelarClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    var vempresa,vtratamiento:integer;
  end;

var
  cargastratamientos: Tcargastratamientos;

implementation

{$R *.dfm}

procedure Tcargastratamientos.btAborrarClick(Sender: TObject);
begin
  qcargas.Delete;
end;

procedure Tcargastratamientos.btAcancelarClick(Sender: TObject);
begin
  qcargas.Cancel;
end;

procedure Tcargastratamientos.btAguardarClick(Sender: TObject);
begin
  qcargas.Post;
end;

procedure Tcargastratamientos.btAmodificarClick(Sender: TObject);
begin
  qcargas.Edit;
end;

procedure Tcargastratamientos.btAnuevoClick(Sender: TObject);
begin
  qcargas.Append;
  dbgrid1.SetFocus;
end;

procedure Tcargastratamientos.Button1Click(Sender: TObject);
begin
   updatefincargas.Prepare;
   updatefincargas.ParamByName('TRATAMIENTO').AsInteger:=qcargasidt.AsInteger;
   updatefincargas.ParamByName('EMPRESA').AsInteger:=qcargaside.AsInteger;
   updatefincargas.ParamByName('HORA').AsTime:=now();
   updatefincargas.ExecSQL;
   updatefincargastratamiento.Prepare;
   updatefincargastratamiento.ParamByName('TRATAMIENTO').AsInteger:=qcargasidt.AsInteger;
   updatefincargastratamiento.ParamByName('EMPRESA').AsInteger:=qcargaside.AsInteger;
   updatefincargastratamiento.ExecSQL;
   qcargas.Refresh;
end;

procedure Tcargastratamientos.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
const IsChecked : array[Boolean] of Integer =
 (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState,imgindex,bmpwidth: Integer;
  DrawRect: TRect;
begin
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = combotractores.DataField) then
    with combotractores do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
      setfocus;
      dropdown;
    end else combotractores.Visible:=false;
    if (Column.Field.FieldName = combodepositos.DataField) then
    with combodepositos do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
      setfocus;
      dropdown;
    end else combodepositos.Visible:=false;
    if (Column.Field.FieldName = combooperarios.DataField) then
    with combooperarios do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
      setfocus;
      dropdown;
    end else combooperarios.Visible:=false;
    if (Column.Field.FieldName = combometeorologia.DataField) then
    with combometeorologia do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;
      Visible := True;
      setfocus;
      dropdown;
    end else combometeorologia.Visible:=false;
  end;
end;

procedure Tcargastratamientos.dscargasDataChange(Sender: TObject;
  Field: TField);
begin
   if qcargas.State in [dsbrowse] then
   begin
     combotractores.Visible:=false;
     combodepositos.Visible:=false;
     combooperarios.Visible:=false;
     combometeorologia.Visible:=false;
   end;
    qproductos.Close;
    qproductos.Open;
end;

procedure Tcargastratamientos.dscargasStateChange(Sender: TObject);
begin
   if qcargas.State in [dsbrowse] then
   begin
     qproductos.Close;
     qproductos.Open;
     combotractores.Visible:=false;
     combodepositos.Visible:=false;
     combooperarios.Visible:=false;
     combometeorologia.Visible:=false;
   end
end;

procedure Tcargastratamientos.FormKeyPress(Sender: TObject; var Key: Char);
begin
   key:=upcase(key);
    if (key='.') and (activecontrol is tdbgrid) then
    begin
        key:=','
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
// si presionamos ESC
    if (key=#$1B)  and (activecontrol is tdblookupcombobox )then
    begin
      activecontrol.Visible:=false;
    end;


end;

procedure Tcargastratamientos.FormShow(Sender: TObject);
begin
    qcargas.Open;
    qfumigadoras.Open;
    qmeteorologia.Open;
    qoperarios.Open;
    qtractores.open;
end;

procedure Tcargastratamientos.qcargasAfterInsert(DataSet: TDataSet);
begin
   qcargasfecha.Value:=date();
   qcargashora_inicio.Value:=time();
end;

procedure Tcargastratamientos.qcargasAfterPost(DataSet: TDataSet);
begin
   updatehorafin.Prepare;
   updatehorafin.ParamByName('TRATAMIENTO').AsInteger:=qcargasidt.AsInteger;
   updatehorafin.ParamByName('IDCARGA').AsInteger:=qcargasid.AsInteger;
   updatehorafin.ParamByName('EMPRESA').AsInteger:=qcargaside.AsInteger;
   updatehorafin.ParamByName('HORA').AsTime:=qcargashora_inicio.AsDateTime;
   updatehorafin.ExecSQL;
   qcargas.Refresh;
   abort;
end;

procedure Tcargastratamientos.qcargasBeforeOpen(DataSet: TDataSet);
begin
  qcargas.Prepare;
  qcargas.ParamByName('EMPRESA').AsInteger:=vempresa;
  qcargas.ParamByName('TRATAMIENTO').AsInteger:=vtratamiento;

end;

procedure Tcargastratamientos.qcargasBeforePost(DataSet: TDataSet);
begin
   qcargaside.Value:=vempresa;
   qcargasidt.Value:=vtratamiento;
end;

procedure Tcargastratamientos.qfumigadorasBeforeOpen(DataSet: TDataSet);
begin
  qfumigadoras.Prepare;
  qfumigadoras.ParamByName('EMPRESA').AsInteger:=vempresa;
end;

procedure Tcargastratamientos.qmeteorologiaBeforeOpen(DataSet: TDataSet);
begin
  qmeteorologia.Prepare;
  qmeteorologia.ParamByName('EMPRESA').AsInteger:=vempresa;
end;

procedure Tcargastratamientos.qoperariosBeforeOpen(DataSet: TDataSet);
begin
  qoperarios.Prepare;
  qoperarios.ParamByName('EMPRESA').AsInteger:=vempresa;
end;

procedure Tcargastratamientos.qproductosBeforeOpen(DataSet: TDataSet);
begin
  qproductos.Prepare;
  qproductos.ParamByName('EMPRESA').AsInteger:=vempresa;
  qproductos.ParamByName('TRATAMIENTO').AsInteger:=vtratamiento;
  qproductos.ParamByName('MEZCLA').Asfloat:=qcargascantidad.asfloat;
end;

procedure Tcargastratamientos.qtractoresBeforeOpen(DataSet: TDataSet);
begin
  qtractores.Prepare;
  qtractores.ParamByName('EMPRESA').AsInteger:=vempresa;
end;

end.
