unit flibros;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.DBCtrls, Data.DB,
  Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, ZAbstractRODataset, ZAbstractDataset,
  ZDataset;

type
  Tlibros = class(TForm)
    qlibros: TZQuery;
    dsqlibros: TDataSource;
    DBGrid1: TDBGrid;
    Panel9: TPanel;
    qlibrosid: TWideStringField;
    qlibroside: TIntegerField;
    qlibrostipo: TWideStringField;
    qlibrosfecha_alta: TDateField;
    qlibrosfecha_baja: TDateField;
    qlibrostitulo: TWideStringField;
    qlibroseditorial: TWideStringField;
    qlibrosautor: TWideStringField;
    qlibrosnivel: TWideStringField;
    qlibroscds: TSmallintField;
    qlibrosnum_cds: TIntegerField;
    qlibrosprestado: TSmallintField;
    qlibrosmp3: TSmallintField;
    qlibrosarchivomp3: TWideStringField;
    qlibrostipo_libro: TWideStringField;
    qlibrosgramatica_otros: TSmallintField;
    qlibrosisbn: TWideStringField;
    tbuscarclientesrecibos: TEdit;
    Label129: TLabel;
    gcrpagado: TDBCheckBox;
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormShow(Sender: TObject);
    procedure tbuscarclientesrecibosEnter(Sender: TObject);
    procedure tbuscarclientesrecibosChange(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  libros: Tlibros;
const
  rojo=$00AAAAFF;
  amarillo=$00B9FFFF;
  verde=$00C7FBAA;
  azul=$00FFFFBB;

implementation

{$R *.dfm}

procedure Tlibros.DBGrid1CellClick(Column: TColumn);
begin
    if column.Field.FieldName ='prestado' then
    begin
        if qlibrosprestado.asinteger=1 then
         begin
           qlibros.Edit;
           qlibrosprestado.Value:=0;
           qlibros.Post;
           dbgrid1.selectedIndex:=1;
         end else
               begin
                 qlibros.Edit;
                 qlibrosprestado.Value:=1;
                 qlibros.Post;
                 qlibros.Refresh;
                 dbgrid1.SelectedIndex:=1;
               end;
    end;
end;

procedure Tlibros.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: Integer;
  DrawRect: TRect;
begin
//    dm.recibos.MasterSource:=nil;
if qlibros.Active=false then qlibros.Open;
    if dbgrid1.DataSource=dsqlibros then
        begin
        if qlibrosprestado.Asinteger=0 then
        begin
            DBgrid1.Canvas.brush.Color := verde;
        end;
        DBgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
        if qlibrosprestado.Asinteger=1 then
        begin
            DBgrid1.Canvas.brush.Color := rojo;
        end;
        DBgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;

    if (gdFocused in State) then
    begin
      if (Column.Field.FieldName = 'prestado') 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 = 'prestado') 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 Tlibros.FormShow(Sender: TObject);
var filtro:string;
begin
   filtro:='%';
   qlibros.Prepare;
   qlibros.ParamByName('FILTRO').AsString:=filtro;
   qlibros.Open;
end;

procedure Tlibros.tbuscarclientesrecibosChange(Sender: TObject);
var filtro:string;
begin
    if tbuscarclientesrecibos.text<>'' then
    begin
        filtro:='%'+tbuscarclientesrecibos.Text+'%';

    end else filtro:='%';
//   qlibros.Close;
   qlibros.Prepare;
   qlibros.ParamByName('FILTRO').AsString:=filtro;
   qlibros.refresh;
end;

procedure Tlibros.tbuscarclientesrecibosEnter(Sender: TObject);
begin
   tbuscarclientesrecibos.Text:='';
end;

end.
