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, cxGridCustomPopupMenu, cxGridPopupMenu, cxCalendar, cxCurrencyEdit; type IViewFacturasCliente = interface(IViewGrid) ['{927A005F-5D71-4C37-B9E7-10292F9D467C}'] function GetFacturas: IBizFacturaCliente; procedure SetFacturas(const Value: IBizFacturaCliente); property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas; end; TfrViewFacturasCliente = class(TfrViewGrid, IViewFacturasCliente) PngImageList: TPngImageList; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewICONO: TcxGridDBColumn; cxGridViewFECHA_FACTURA: TcxGridDBColumn; cxGridViewVENCIMIENTO: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewBASE_IMPONIBLE: TcxGridDBColumn; cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn; cxGridViewDESCUENTO: TcxGridDBColumn; cxGridViewIMPORTE_IVA: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; cxGridViewIVA: TcxGridDBColumn; cxGridViewNIF_CIF: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn; cxStylePagada: TcxStyle; cxGridPendientes: TcxGridLevel; cxGridPagadas: TcxGridLevel; cxStyleAbono: TcxStyle; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); protected FNivelFiltrado : TcxFilterCriteriaItemList; FFacturas: IBizFacturaCliente; function GetFacturas: IBizFacturaCliente; procedure SetFacturas(const Value: IBizFacturaCliente); procedure FilterChanged(Sender : TObject); override; public property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas; end; implementation uses uDataModuleFacturasCliente, DateUtils; {$R *.dfm} { TfrViewFacturasCliente } procedure TfrViewFacturasCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(Self); end; procedure TfrViewFacturasCliente.cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; ASituacion: string; begin inherited; if Assigned(ARecord) then begin IndiceCol := cxGridViewSITUACION.Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if ASituacion = SITUACION_PAGADO then AStyle := cxStylePagada; IndiceCol := cxGridViewIMPORTE_TOTAL.Index; if (Pos('-', ARecord.DisplayTexts[IndiceCol]) > 0) then AStyle := cxStyleAbono; end; 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 1 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); 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; function TfrViewFacturasCliente.GetFacturas: IBizFacturaCliente; begin Result := FFacturas; end; procedure TfrViewFacturasCliente.SetFacturas(const Value: IBizFacturaCliente); begin FFacturas := Value; if Assigned(FFacturas) then dsDataSource.DataTable := FFacturas.DataTable; end; end.