unit uViewPagos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, uBizPagos, uViewFiltroBase; type IViewPagos = interface(IViewGrid) ['{A407C7DD-49D2-4710-97AC-FA76AA91CEA6}'] function GetPagos: IBizPagos; procedure SetPagos(const Value: IBizPagos); property Pagos: IBizPagos read GetPagos write SetPagos; end; TfrViewPagos = class(TfrViewGrid, IViewPagos) PngImageList: TPngImageList; cxGridViewRecID: TcxGridDBColumn; cxGridViewCODIGOEMPRESA: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewFECHAALTA: TcxGridDBColumn; cxGridViewUSUARIO: TcxGridDBColumn; cxGridViewCUENTA: TcxGridDBColumn; cxGridViewIMPORTE: TcxGridDBColumn; cxGridViewFORMAPAGO: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewFECHAPAGO: TcxGridDBColumn; cxGridViewFECHAMODIFICACION: TcxGridDBColumn; cxGridViewCODIGOCONTACTO: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewCODIGOCATEGORIA: TcxGridDBColumn; cxGridViewCATEGORIA: TcxGridDBColumn; cxGridViewICONO: TcxGridDBColumn; procedure cxGridViewICONOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); private private //Filtros relativos a la vista procedure AnadirFiltroFechas; protected FPagos: IBizPagos; function GetPagos: IBizPagos; virtual; procedure SetPagos(const Value: IBizPagos); virtual; procedure AnadirOtrosFiltros; override; public property DataSet: IBizPagos read GetPagos write SetPagos; end; var frViewPagos: TfrViewPagos; implementation uses uDataModulePagos; {$R *.dfm} { TfrViewClientes } { ******************************* TfrViewPagos ******************************* } function TfrViewPagos.GetPagos: IBizPagos; begin Result := FPagos; end; procedure TfrViewPagos.SetPagos(const Value: IBizPagos); begin FPagos := Value; if Assigned(FPagos) then DADataSource.DataTable := FPagos.DataTable; end; procedure TfrViewPagos.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 TfrViewPagos.AnadirOtrosFiltros; begin inherited; AnadirFiltroFechas; //Finalmente activamos el filtro si tenemos algo if cxGridView.DataController.Filter.IsEmpty then cxGridView.DataController.Filter.Active := False else cxGridView.DataController.Filter.Active := True; cxGrid.ActiveLevel.GridView := cxGridView; end; procedure TfrViewPagos.AnadirFiltroFechas; var Columna: TcxGridDBColumn; Fecha1, Fecha2: Variant; FFiltro : TcxFilterCriteriaItemList; begin Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue; Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue; if not VarIsNull(Fecha1) and not VarIsNull(Fecha2) then begin cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare]; FFiltro := AddFilterGrid(fboAnd); Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHAPAGO'); FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); end; end; end.