unit uViewPedidosProveedor; 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, uBizPedidosProveedor; type IViewPedidosProveedor = interface(IViewGrid) ['{DF3B0989-5449-4F3A-8EF3-69CE35A62AAA}'] function GetPedidos: IBizPedidoProveedor; procedure SetPedidos(const Value: IBizPedidoProveedor); property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos; end; TfrViewPedidosProveedor = class(TfrViewGrid, IViewPedidosProveedor) cxGridDBTableView1: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridLevel2: TcxGridLevel; cxGridLevel3: TcxGridLevel; PngImageList: TPngImageList; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewFECHA_PEDIDO: TcxGridDBColumn; cxGridViewFECHA_CONFIRMACION: TcxGridDBColumn; cxGridViewFECHA_ENTREGA: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewPERSONA_CONTACTO: TcxGridDBColumn; cxGridViewTELEFONO: TcxGridDBColumn; cxGridViewFECHA_ENVIO: TcxGridDBColumn; cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn; cxGridViewREF_PED_CLIENTE: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxStylePendientes: TcxStyle; cxStyleParciales: TcxStyle; cxStyleRecibidos: 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: IBizPedidoProveedor; function GetPedidos: IBizPedidoProveedor; procedure SetPedidos(const Value: IBizPedidoProveedor); procedure FilterChanged(Sender : TObject); override; public property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos; end; implementation uses SysUtils, variants, windows, uDataModulePedidosProveedor, schPedidosProveedorClient_Intf; {$R *.dfm} procedure TfrViewPedidosProveedor.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; procedure TfrViewPedidosProveedor.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 TfrViewPedidosProveedor.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_PedidosProveedorSITUACION).Index; ASituacion := UPPERCASE(VarToStr(ARecord.DisplayTexts[IndiceCol])); if (ASituacion = SITUACION_PEDIDO_PENDIENTE) then AStyle := cxStylePendientes else if (ASituacion = SITUACION_PEDIDO_PARCIAL) then AStyle := cxStyleParciales else if (ASituacion = SITUACION_PEDIDO_RECIBIDO) then AStyle := cxStyleRecibidos; end; end; procedure TfrViewPedidosProveedor.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_PEDIDO_PENDIENTE, SITUACION_PEDIDO_PENDIENTE); 2 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_PARCIAL, SITUACION_PEDIDO_PARCIAL); 3 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_RECIBIDO, SITUACION_PEDIDO_RECIBIDO); 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 TfrViewPedidosProveedor.GetPedidos: IBizPedidoProveedor; begin Result := FPedidos; end; procedure TfrViewPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor); begin FPedidos := Value; if Assigned(FPedidos) then dsDataSource.DataTable := FPedidos.DataTable; end; end.