unit uViewAlbaranesCliente; 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, uBizAlbaranesCliente; type IViewAlbaranesCliente = interface(IViewGrid) ['{C0B0D9D9-2E0E-4CA5-88C8-B8C71CFAD59B}'] function GetAlbaranes: IBizAlbaranCliente; procedure SetAlbaranes(const Value: IBizAlbaranCliente); property Albaranes: IBizAlbaranCliente read GetAlbaranes write SetAlbaranes; end; TfrViewAlbaranesCliente = class(TfrViewGrid, IViewAlbaranesCliente) PngImageList: TPngImageList; cxGridViewID: TcxGridDBColumn; cxGridViewREF_FACTURA: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewFECHA_ALBARAN: TcxGridDBColumn; cxGridViewINCIDENCIAS_ACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewSITUACION: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewPERSONA_CONTACTO: TcxGridDBColumn; cxGridViewTELEFONO: TcxGridDBColumn; cxGridViewFECHA_ENVIO: TcxGridDBColumn; cxGridViewFECHA_RECEPCION: TcxGridDBColumn; cxGridViewREF_PEDIDO: TcxGridDBColumn; cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn; cxGridLevelPendientes: TcxGridLevel; cxGridLevelEnviados: TcxGridLevel; cxGridLevelServidos: TcxGridLevel; cxGridLevelProximosAEnviar: TcxGridLevel; cxStyleProximosAEnviar: 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; FAlbaranes: IBizAlbaranCliente; function GetAlbaranes: IBizAlbaranCliente; procedure SetAlbaranes(const Value: IBizAlbaranCliente); procedure FilterChanged(Sender : TObject); override; public property Albaranes: IBizAlbaranCliente read GetAlbaranes write SetAlbaranes; end; implementation uses SysUtils, windows, uDataModuleAlbaranesCliente, schAlbaranesClienteClient_Intf; {$R *.dfm} procedure TfrViewAlbaranesCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; procedure TfrViewAlbaranesCliente.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 TfrViewAlbaranesCliente.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 TfrViewAlbaranesCliente.FilterChanged(Sender: TObject); var AItemList: TcxFilterCriteriaItemList; AItemList2: TcxFilterCriteriaItemList; begin inherited; cxGridView.DataController.Filter.BeginUpdate; try AItemList := cxGridView.DataController.Filter.Root; AItemList2 := AItemList.AddItemList(fboAnd); FNivelFiltrado := AItemList2; case cxGrid.ActiveLevel.Index of 1 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_PENDIENTE, SITUACION_ALBARAN_PENDIENTE); 2 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_ENVIADO, SITUACION_ALBARAN_ENVIADO); 3 : AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_SERVIDO, SITUACION_ALBARAN_SERVIDO); 4 : begin AItemList2.BoolOperatorKind := fboAnd; AItemList2.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_PENDIENTE, SITUACION_ALBARAN_PENDIENTE); AItemList2.AddItem(cxGridViewFECHA_ALBARAN, foGreaterEqual, Date, 'A ENVIAR'); end; end; cxGridView.DataController.Filter.Active := not cxGridView.DataController.Filter.IsEmpty; finally cxGridView.DataController.Filter.EndUpdate; cxGrid.ActiveLevel.GridView := cxGridView; end; end; function TfrViewAlbaranesCliente.GetAlbaranes: IBizAlbaranCliente; begin Result := FAlbaranes; end; procedure TfrViewAlbaranesCliente.SetAlbaranes(const Value: IBizAlbaranCliente); begin FAlbaranes := Value; if Assigned(FAlbaranes) then dsDataSource.DataTable := FAlbaranes.DataTable; end; end.