unit uViewPedidosCliente; interface uses uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, ImgList, Controls, PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGridLnk, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes, cxGrid, uBizPedidosCliente, cxCurrencyEdit; type IViewPedidosCliente = interface(IViewGrid) ['{96821714-55CF-4BC1-A0C1-16E027B2EF16}'] function GetPedidos: IBizPedidoCliente; procedure SetPedidos(const Value: IBizPedidoCliente); property Pedidos: IBizPedidoCliente read GetPedidos write SetPedidos; end; TfrViewPedidosCliente = class(TfrViewGrid, IViewPedidosCliente) cxGridDBTableView1: TcxGridDBTableView; PngImageList: TPngImageList; cxGridViewID: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewFECHA_PEDIDO: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewPERSONA_CONTACTO: TcxGridDBColumn; cxGridViewTELEFONO: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; cxGridLevelPendientes: TcxGridLevel; cxGridLevelEnProceso: TcxGridLevel; cxGridLevelServidor: TcxGridLevel; cxStylePENDIENTES: TcxStyle; cxStyleENPROCESO: TcxStyle; cxStyleSERVIDOS: TcxStyle; 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; FPedidos: IBizPedidoCliente; function GetPedidos: IBizPedidoCliente; procedure SetPedidos(const Value: IBizPedidoCliente); procedure FilterChanged(Sender : TObject); override; public property Pedidos: IBizPedidoCliente read GetPedidos write SetPedidos; end; implementation uses SysUtils, variants, windows, uDataModulePedidosCliente, schPedidosClienteClient_Intf; {$R *.dfm} procedure TfrViewPedidosCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.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_PedidosClienteSITUACION).Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if ASituacion = SITUACION_PEDIDO_PENDIENTE then AStyle := cxStylePENDIENTES else if ASituacion = SITUACION_PEDIDO_ENPROCESO then AStyle := cxStyleENPROCESO else if ASituacion = SITUACION_PEDIDO_SERVIDO then AStyle := cxStyleSERVIDOS; end; end; procedure TfrViewPedidosCliente.FilterChanged(Sender: TObject); var AItemList: TcxFilterCriteriaItemList; ANuevoItemList: TcxFilterCriteriaItemList; begin inherited; cxGridView.DataController.Filter.BeginUpdate; try AItemList := cxGridView.DataController.Filter.Root; ANuevoItemList := AItemList.AddItemList(fboAnd); FNivelFiltrado := ANuevoItemList; case cxGrid.ActiveLevel.Index of 1 : ANuevoItemList.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_PENDIENTE, SITUACION_PEDIDO_PENDIENTE); 2 : ANuevoItemList.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_ENPROCESO, SITUACION_PEDIDO_ENPROCESO); 3 : ANuevoItemList.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_SERVIDO, SITUACION_PEDIDO_SERVIDO); end; cxGridView.DataController.Filter.Active := not cxGridView.DataController.Filter.IsEmpty; finally cxGridView.DataController.Filter.EndUpdate; cxGrid.ActiveLevel.GridView := cxGridView; end; end; function TfrViewPedidosCliente.GetPedidos: IBizPedidoCliente; begin Result := FPedidos; end; procedure TfrViewPedidosCliente.SetPedidos(const Value: IBizPedidoCliente); begin FPedidos := Value; if Assigned(FPedidos) then dsDataSource.DataTable := FPedidos.DataTable; end; end.