unit uViewMontajes;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewGrid, uViewPreview, cxStyles, cxCustomData, cxGraphics,
  cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl,
  dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider,
  dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, cxTextEdit, ImgList,
  PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  dxPSCore, dxPScxCommon, dxPScxGridLnk, ActnList, uDADataTable,
  cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,
  cxImage, Grids, DBGrids, uBizMontajes, cxGridCustomPopupMenu,
  cxGridPopupMenu, cxCalendar, cxCurrencyEdit;

type
  IViewMontajes = interface(IViewGrid)
  ['{59F7D2BD-F3BC-461F-8CDF-5F99D2188644}']
    function GetMontajes: IBizMontaje;
    procedure SetMontajes(const Value: IBizMontaje);
    property Montajes: IBizMontaje read GetMontajes write SetMontajes;
  end;

  TfrViewMontajes = class(TfrViewGrid, IViewMontajes)
    cxGridViewNOMBRE: TcxGridDBColumn;
    cxGridViewSITUACION: TcxGridDBColumn;
    cxGridViewICONO: TcxGridDBColumn;
    cxGridViewFECHA_INICIO: TcxGridDBColumn;
    cxStylePagada: TcxStyle;
    PngImageList: TPngImageList;
    cxGridLevelPendientes: TcxGridLevel;
    cxGridLevelEjecucion: TcxGridLevel;
    cxGridLevelTerminados: TcxGridLevel;
    cxGridLevelPagado: TcxGridLevel;
    cxGridViewFECHA_FIN: TcxGridDBColumn;
    procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView;
      ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
      var ADone: Boolean);
    procedure cxGridActiveTabChanged(Sender: TcxCustomGrid;
      ALevel: TcxGridLevel);
  protected
    FNivelFiltrado : TcxFilterCriteriaItemList;
    FMontajes: IBizMontaje;
    function GetMontajes: IBizMontaje;
    procedure SetMontajes(const Value: IBizMontaje);
    procedure FilterChanged(Sender : TObject); override;
  public
    property Montajes: IBizMontaje read GetMontajes write SetMontajes;
  end;


implementation
{$R *.dfm}

uses
  uDataModuleMontajes, DateUtils;

{ TfrViewMontajes }

procedure TfrViewMontajes.cxGridActiveTabChanged(Sender: TcxCustomGrid;
  ALevel: TcxGridLevel);
begin
  inherited;
  FreeAndNil(FNivelFiltrado);
  FilterChanged(self);
end;

procedure TfrViewMontajes.cxGridViewICONOCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  R : TRect;
begin
  inherited;
  R := AViewInfo.ContentBounds;
  ACanvas.FillRect(R);
  ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0);
  ADone := True;
end;

procedure TfrViewMontajes.FilterChanged(Sender: TObject);
var
  AItemList: TcxFilterCriteriaItemList;
  AItemList2: TcxFilterCriteriaItemList;
begin
  inherited;

  cxGridView.DataController.Filter.BeginUpdate;

  AItemList := cxGridView.DataController.Filter.Root;
  AItemList2 := AItemList.AddItemList(fboAnd);
  FNivelFiltrado := AItemList2;

  case cxGrid.ActiveLevel.Index of
    1   : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_MONTAJE_PENDIENTE, SITUACION_MONTAJE_PENDIENTE);
    2   : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_MONTAJE_EJECUCION, SITUACION_MONTAJE_EJECUCION);
    3   : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_MONTAJE_TERMINADO, SITUACION_MONTAJE_TERMINADO);
    4   : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_MONTAJE_PAGADO, SITUACION_MONTAJE_PAGADO);
  end;
  AItemList := AItemList2;

  if cxGridView.DataController.Filter.IsEmpty
  then cxGridView.DataController.Filter.Active := False
  else cxGridView.DataController.Filter.Active := True;

  cxGridView.DataController.Filter.EndUpdate;
  cxGrid.ActiveLevel.GridView := cxGridView;
end;

function TfrViewMontajes.GetMontajes: IBizMontaje;
begin
  Result := FMontajes;
end;

procedure TfrViewMontajes.SetMontajes(const Value: IBizMontaje);
begin
  FMontajes := Value;
  if Assigned(FMontajes) then
    dsDataSource.DataTable := FMontajes.DataTable;
end;

end.
