unit uViewPresupuestos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxGridCustomPopupMenu, cxGridPopupMenu, uBizPresupuestos, cxCalendar, cxCurrencyEdit; type IViewPresupuestos = interface(IViewGrid) ['{8C0A5647-E0E7-40CD-80EC-88DD46383368}'] function GetPresupuestos: IBizPresupuesto; procedure SetPresupuestos(const Value: IBizPresupuesto); property Presupuestos: IBizPresupuesto read GetPresupuestos write SetPresupuestos; end; TfrViewPresupuestos = class(TfrViewGrid, IViewPresupuestos) cxGridLevelPendientes: TcxGridLevel; cxGridLevelAceptados: TcxGridLevel; cxGridLevelRechazados: TcxGridLevel; cxGridViewICONO: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn; PngImageList: TPngImageList; cxStyleRechazado: TcxStyle; cxStyleAceptado: TcxStyle; cxGridViewNIF_CIF: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewTELEFONO_1: TcxGridDBColumn; cxGridViewTELEFONO_2: TcxGridDBColumn; cxGridViewFAX: TcxGridDBColumn; cxGridViewMOVIL_1: TcxGridDBColumn; cxGridViewMOVIL_2: TcxGridDBColumn; cxGridViewEMAIL_1: TcxGridDBColumn; cxGridViewEMAIL_2: TcxGridDBColumn; cxGridViewFECHA_PRESUPUESTO: TcxGridDBColumn; cxGridViewVIGENCIA: TcxGridDBColumn; cxGridViewFECHA_DECISION: TcxGridDBColumn; cxGridViewBASE_IMPONIBLE: TcxGridDBColumn; cxGridViewDESCUENTO: TcxGridDBColumn; cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn; cxGridViewIVA: TcxGridDBColumn; cxGridViewIMPORTE_IVA: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); protected FNivelFiltrado : TcxFilterCriteriaItemList; FPresupuestos: IBizPresupuesto; function GetPresupuestos: IBizPresupuesto; procedure SetPresupuestos(const Value: IBizPresupuesto); procedure FilterChanged(Sender : TObject); override; public property Presupuestos: IBizPresupuesto read GetPresupuestos write SetPresupuestos; end; implementation uses uDataModulePresupuestos, schPresupuestosClient_Intf; {$R *.dfm} procedure TfrViewPresupuestos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; procedure TfrViewPresupuestos.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, 2); ADone := True; end; procedure TfrViewPresupuestos.cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; ASituacion: string; begin inherited; if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if ASituacion = SITUACION_ACEPTADO then AStyle := cxStyleAceptado else if ASituacion = SITUACION_RECHAZADO then AStyle := cxStyleRechazado; end; end; procedure TfrViewPresupuestos.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_ACEPTADO, SITUACION_ACEPTADO); 3 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_RECHAZADO, SITUACION_RECHAZADO); 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 TfrViewPresupuestos.GetPresupuestos: IBizPresupuesto; begin Result := FPresupuestos; end; procedure TfrViewPresupuestos.SetPresupuestos(const Value: IBizPresupuesto); begin FPresupuestos := Value; if Assigned(FPresupuestos) then dsDataSource.DataTable := FPresupuestos.DataTable; end; end.