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; cxGridViewFECHAPEDIDO: TcxGridDBColumn; cxGridViewFECHACONFIRMACION: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewFECHAENTREGA: TcxGridDBColumn; cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: 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; 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, 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_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 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.