unit uViewMontajes; 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, uBizMontajes, ActnList, Menus, cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, uViewFiltroBase; type IViewMontajes = interface(IViewGrid) ['{78CB7E94-7AE3-4445-9A9C-C4CE27A8A21F}'] function GetMontajes: IBizMontaje; procedure SetMontajes(const Value: IBizMontaje); property Montajes: IBizMontaje read GetMontajes write SetMontajes; end; TfrViewMontajes = class(TfrViewGrid, IViewMontajes) PngImageList: TPngImageList; cxGridViewRecID: TcxGridDBColumn; cxGridViewCODIGOEMPRESA: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewFECHAALTA: TcxGridDBColumn; cxGridViewUSUARIO: TcxGridDBColumn; cxGridViewFECHAINICIO: TcxGridDBColumn; cxGridViewFECHAFIN: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewOBSERVACIONES: TcxGridDBColumn; cxGridViewCODIGOPRESUPUESTO: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewCODIGOCONTACTO: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxGridLevel2: TcxGridLevel; cxGridViewOPCION: TcxGridDBColumn; procedure cxGridViewCODIGOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); private //Filtros relativos a la vista procedure AnadirFiltroSituaciones; procedure AnadirFiltroFechas; protected FMontajes: IBizMontaje; function GetMontajes: IBizMontaje; virtual; procedure SetMontajes(const Value: IBizMontaje); virtual; procedure AnadirOtrosFiltros; override; public property DataSet: IBizMontaje read GetMontajes write SetMontajes; end; var frViewMontajes: TfrViewMontajes; implementation uses uDataModuleMontajes; {$R *.dfm} { TfrViewClientes } { ******************************* TfrViewMontajes ******************************* } function TfrViewMontajes.GetMontajes: IBizMontaje; begin Result := FMontajes; end; procedure TfrViewMontajes.SetMontajes(const Value: IBizMontaje); begin FMontajes := Value; if Assigned(FMontajes) then DADataSource.DataTable := FMontajes.DataTable; end; procedure TfrViewMontajes.cxGridViewCODIGOCustomDrawCell( 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.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; RefrescarFiltro; end; procedure TfrViewMontajes.AnadirFiltroSituaciones; var FFiltro : TcxFilterCriteriaItemList; begin FFiltro := AddFilterGrid(fboAnd); case cxGrid.ActiveLevel.Index of 1 : FFiltro.AddItem(cxGridViewSITUACION, foNotEqual, SITUACION_PAGADO, SITUACION_PAGADO); 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PAGADO, SITUACION_PAGADO); end; end; procedure TfrViewMontajes.AnadirOtrosFiltros; begin inherited; AnadirFiltroSituaciones; 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 TfrViewMontajes.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('FECHAINICIO'); FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); end; end; end.