unit uViewRecibosCliente; 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, uBizRecibosCliente, cxGridCustomPopupMenu, cxGridPopupMenu, cxCalendar, cxCurrencyEdit; type IViewRecibosCliente = interface(IViewGrid) ['{27D0229A-6340-4F03-B97A-7776E9166F2F}'] function GetRecibos: IBizRecibosCliente; procedure SetRecibos(const Value: IBizRecibosCliente); property Recibos: IBizRecibosCliente read GetRecibos write SetRecibos; end; TfrViewRecibosCliente = class(TfrViewGrid, IViewRecibosCliente) PngImageList: TPngImageList; cxStylePagada: TcxStyle; cxGridPendientes: TcxGridLevel; cxGridPagados: TcxGridLevel; cxStyleAbono: TcxStyle; cxGridViewRecID: TcxGridDBColumn; cxGridViewID: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewID_FACTURA: TcxGridDBColumn; cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewOBSERVACIONES: TcxGridDBColumn; cxGridViewIMPORTE: TcxGridDBColumn; cxGridViewFECHA_FACTURA: TcxGridDBColumn; cxGridViewFORMA_PAGO_FACTURA: TcxGridDBColumn; cxGridViewIMPORTE_FACTURA: TcxGridDBColumn; cxGridViewNOMBRE_CLIENTE: TcxGridDBColumn; cxGridViewNIF_CIF_CLIENTE: TcxGridDBColumn; cxGridViewENTIDAD_CLIENTE: TcxGridDBColumn; cxGridViewSUCURSAL_CLIENTE: TcxGridDBColumn; cxGridViewDC_CLIENTE: TcxGridDBColumn; cxGridViewCUENTA_CLIENTE: TcxGridDBColumn; cxGridViewID_EMPRESA: TcxGridDBColumn; cxGridViewFECHA_ALTA: TcxGridDBColumn; cxGridViewFECHA_MODIFICACION: TcxGridDBColumn; cxGridViewUSUARIO: TcxGridDBColumn; cxGridViewID_REMESA: TcxGridDBColumn; cxGridViewREFERENCIA_REMESA: TcxGridDBColumn; cxGridDevueltos: TcxGridLevel; procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); protected FNivelFiltrado : TcxFilterCriteriaItemList; FRecibos: IBizRecibosCliente; function GetRecibos: IBizRecibosCliente; procedure SetRecibos(const Value: IBizRecibosCliente); procedure FilterChanged(Sender : TObject); override; public property Recibos: IBizRecibosCliente read GetRecibos write SetRecibos; end; implementation uses uDataModuleRecibosCliente, DateUtils; {$R *.dfm} { TfrViewRecibosCliente } procedure TfrViewRecibosCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(Self); end; procedure TfrViewRecibosCliente.cxGridViewICONOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R : TRect; begin inherited; { R := AViewInfo.ContentBounds; ACanvas.FillRect(R); if (Pos('-', AViewInfo.GridRecord.DisplayTexts[cxGridViewIMPORTE_TOTAL.Index]) > 0) then ACanvas.DrawImage(PngImageList, R.Left, R.Top, 3) else ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); ADone := True; } end; procedure TfrViewRecibosCliente.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 TfrViewRecibosCliente.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, CTE_PENDIENTE, CTE_PENDIENTE); 2 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, CTE_COBRADO, CTE_COBRADO); 3 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, CTE_DEVUELTO, CTE_DEVUELTO); 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 TfrViewRecibosCliente.GetRecibos: IBizRecibosCliente; begin Result := FRecibos; end; procedure TfrViewRecibosCliente.SetRecibos(const Value: IBizRecibosCliente); begin FRecibos := Value; if Assigned(FRecibos) then dsDataSource.DataTable := FRecibos.DataTable; end; end.