unit fcc_utensilios;

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, frxClass, frxExportBaseDialog,
  frxExportPDF, frxDBSet,   Data.DB,
   Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.DBCtrls,
  Vcl.ExtCtrls;

type
  Tcc_utensilios = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    combocampanyas: TDBLookupComboBox;
    comboencargado: TDBLookupComboBox;
    bteimprimir: TButton;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    dscontroladores: TDataSource;
    qcontroladores: TFDQuery;
    qcontroladoresnombre: TWideStringField;
    qcontroladoreside: TIntegerField;
    qcontroladoresid: TSmallintField;
    qcontroladoresfirma: TBlobField;
    qcampanyas: TFDQuery;
    qcampanyasid: TIntegerField;
    qcampanyasidempresa: TIntegerField;
    qcampanyasid_anterior: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qcampanyasult_pesada: TIntegerField;
    dsqcampanyas: TDataSource;
    qcc_utensilios: TFDQuery;
    dsqccutensilios: TDataSource;
    informedb: TfrxDBDataset;
    informedbempresa: TfrxDBDataset;
    informedbencargado: TfrxDBDataset;
    frxPDFExport1: TfrxPDFExport;
    informes: TfrxReport;
    qcc_utensilioside: TIntegerField;
    qcc_utensiliosfecha: TDateField;
    qcc_utensiliosidut: TWideStringField;
    qcc_utensiliosidt: TIntegerField;
    qcc_utensiliosentrega_maana: TTimeField;
    qcc_utensiliosentrega_tarde: TTimeField;
    qcc_utensiliosdevolucion_maana: TTimeField;
    qcc_utensiliosdevolucion_tarde: TTimeField;
    qcc_utensilioslimpieza: TIntegerField;
    qcc_utensiliosobservaciones: TWideStringField;
    gcrpagado: TDBCheckBox;
    qinsertar: TFDQuery;
    qcc_utensiliosnombre: TWideStringField;
    qcc_utensiliosdescripcion: TWideStringField;
    Button1: TButton;
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure dsqcampanyasDataChange(Sender: TObject; Field: TField);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure bteimprimirClick(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  cc_utensilios: Tcc_utensilios;

implementation

{$R *.dfm}

procedure Tcc_utensilios.bteimprimirClick(Sender: TObject);
begin

   informedb.Datasource:=dsqccutensilios;
   informes.Report.Clear;
   informes.LoadFromFile('c:\agrigest\informes\infccutensilios.fr3');
   informes.Variables.Variables['CAMPANYA']:=QUOTEDSTR(qcampanyasdescripcion.asstring);
   informes.ShowReport();

end;

procedure Tcc_utensilios.Button1Click(Sender: TObject);
begin
  qcc_utensilios.Delete;
end;

procedure Tcc_utensilios.DBGrid1CellClick(Column: TColumn);
begin
    if column.Field.FieldName ='limpieza' then
    begin
        if qcc_utensilioslimpieza.asinteger=1 then
         begin
           qcc_utensilios.Edit;
           qcc_utensilioslimpieza.Value:=0;
           qcc_utensilios.Post;
           dbgrid1.selectedIndex:=1;
         end else
               begin
                 qcc_utensilios.Edit;
                 qcc_utensilioslimpieza.Value:=1;
                 qcc_utensilios.Post;
                 qcc_utensilios.Refresh;
                 dbgrid1.SelectedIndex:=1;
               end;
    end;

end;

procedure Tcc_utensilios.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;
  fixRect:TRect;
begin
if (gdFocused in State) then
begin
    if (Column.Field.FieldName = 'limpieza') then
     begin
       gcrpagado.Left := Rect.Left + DBgrid1.Left + 2;
       gcrpagado.Top := Rect.Top + DBgrid1.top + 2;
       gcrpagado.Width := Rect.Right - Rect.Left;
       gcrpagado.Height := Rect.Bottom - Rect.Top;
       gcrpagado.Visible := True;
     end;
end else
     begin

       if (Column.Field.FieldName = 'limpieza') then
       begin
         DrawRect:=Rect;
         InflateRect(DrawRect,-1,-1);
         if column.Field.Asinteger=0  then DrawState := ischecked[false];
         if column.Field.Asinteger=1  then DrawState := ischecked[true];
      //   DrawState := ISChecked[Column.Field.Asboolean];
         DBgrid1.Canvas.FillRect(Rect);
         DrawFrameControl(DBgrid1.Canvas.Handle, DrawRect,DFC_BUTTON, DrawState);
       end;
    end;
    gcrpagado.visible:=false;

end;

procedure Tcc_utensilios.DBGrid1TitleClick(Column: TColumn);
var
  st:TFDQuerySortType;
begin
  st:=qcc_utensilios.SortType;
  qcc_utensilios.SortedFields:=Column.FieldName;
  If st = stAscending then qcc_utensilios.SortType:=stDescending else qcc_utensilios.SortType:=stAscending;
  dsqccutensilios.DataSet.First;
end;

procedure Tcc_utensilios.dsqcampanyasDataChange(Sender: TObject; Field: TField);
begin
    qinsertar.Close;
    qinsertar.Prepare;
    qinsertar.ParamByName('FECHAINICIO').AsDate:=qcampanyasfechainicio.AsDateTime;
    qinsertar.ParamByName('FECHAFIN').AsDate:=qcampanyasfechafin.AsDateTime;
    qinsertar.ExecSQL;
    qcc_utensilios.Close;
    qcc_utensilios.Prepare;
    qcc_utensilios.ParamByName('FECHAINICIO').AsDate:=qcampanyasfechainicio.AsDateTime;
    qcc_utensilios.ParamByName('FECHAFIN').AsDate:=qcampanyasfechafin.AsDateTime;
    qcc_utensilios.Open;
end;

procedure Tcc_utensilios.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 Tcc_utensilios.FormShow(Sender: TObject);
begin
    qcampanyas.Open;
    qcontroladores.Open;
    combocampanyas.Keyvalue:=qcampanyasid.asstring;
    comboencargado.Keyvalue:=qcontroladoresnombre.asstring;
end;

end.
