unit fcc_utensilios;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, frxClass, frxExportBaseDialog,
  frxExportPDF, frxDBSet, ZAbstractDataset, ZDataset, Data.DB,
  ZAbstractRODataset, 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: TZReadOnlyQuery;
    qcontroladoresnombre: TWideStringField;
    qcontroladoreside: TIntegerField;
    qcontroladoresid: TSmallintField;
    qcontroladoresfirma: TBlobField;
    qcampanyas: TZReadOnlyQuery;
    qcampanyasid: TIntegerField;
    qcampanyasidempresa: TIntegerField;
    qcampanyasid_anterior: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qcampanyasult_pesada: TIntegerField;
    dsqcampanyas: TDataSource;
    qcc_utensilios: TZQuery;
    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_maņana: TTimeField;
    qcc_utensiliosentrega_tarde: TTimeField;
    qcc_utensiliosdevolucion_maņana: TTimeField;
    qcc_utensiliosdevolucion_tarde: TTimeField;
    qcc_utensilioslimpieza: TIntegerField;
    qcc_utensiliosobservaciones: TWideStringField;
    gcrpagado: TDBCheckBox;
    qinsertar: TZQuery;
    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:ZAbstractRODataset.TSortType;
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.
