unit uViewFacturasCliente; 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, uBizFacturasCliente; type IViewFacturasCliente = interface(IViewGrid) ['{0B893BAC-967F-45BD-BD74-B1B78662FCFC}'] function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; TfrViewFacturasCliente = class(TfrViewGrid, IViewFacturasCliente) PngImageList: TPngImageList; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewFECHAFACTURA: TcxGridDBColumn; cxGridViewNIFCIF: TcxGridDBColumn; cxGridViewIMPORTETOTAL: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewICONO: TcxGridDBColumn; cxGridViewCLASEFACTURA: TcxGridDBColumn; cxGridViewPAGADA: TcxGridDBColumn; cxGridViewFECHAVENCIMIENTO: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxGridLevel2: TcxGridLevel; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure CustomViewShow(Sender: TObject); protected FNivelFiltrado : TcxFilterCriteriaItemList; FFacturasCliente: IBizFacturasCliente; function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); procedure FilterChanged(Sender : TObject); override; public property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; var frViewFacturasCliente: TfrViewFacturasCliente; implementation uses uDataModuleFacturasCliente; {$R *.dfm} { TfrViewFacturasCliente } function TfrViewFacturasCliente.GetFacturasCliente: IBizFacturasCliente; begin Result := FFacturasCliente; end; procedure TfrViewFacturasCliente.SetFacturasCliente( const Value: IBizFacturasCliente); begin FFacturasCliente := Value; if Assigned(FFacturasCliente) then DADataSource.DataTable := FFacturasCliente.DataTable; end; procedure TfrViewFacturasCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; procedure TfrViewFacturasCliente.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 0 : begin AItemList2.AddItem(cxGridViewCLASEFACTURA, foNotEqual, CTE_PROFORMA, CTE_PROFORMA); AItemList2.BoolOperatorKind := fboAnd; AItemList2.AddItem(cxGridViewPAGADA, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); cxGridViewPAGADA.Visible := True; end; 1 : begin AItemList2.AddItem(cxGridViewCLASEFACTURA, foNotEqual, CTE_PROFORMA, CTE_PROFORMA); AItemList2.BoolOperatorKind := fboAnd; AItemList2.AddItem(cxGridViewPAGADA, foEqual, SITUACION_PAGADO, SITUACION_PAGADO); cxGridViewPAGADA.Visible := True; end; 2 : begin AItemList2.AddItem(cxGridViewCLASEFACTURA, foEqual, CTE_PROFORMA, CTE_PROFORMA); cxGridViewPAGADA.Visible := False; end; end; 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; procedure TfrViewFacturasCliente.CustomViewShow(Sender: TObject); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; end.