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.