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; 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; procedure cxGridViewCODIGOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); protected FNivelFiltrado : TcxFilterCriteriaItemList; FMontajes: IBizMontaje; function GetMontajes: IBizMontaje; virtual; procedure SetMontajes(const Value: IBizMontaje); virtual; procedure FilterChanged(Sender : TObject); 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; FreeAndNil(FNivelFiltrado); FilterChanged(self); 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, foNotEqual, SITUACION_PAGADO, SITUACION_PAGADO); 2 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PAGADO, SITUACION_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; end.