unit uViewInfVentasAlbArticuloGrid; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewInformeBaseGrid, DB, uDADataTable, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, dxPgsDlg, cxDropDownEdit, StdCtrls, cxSpinEdit, cxCalc; type IViewInfVentasAlbArticuloGrid = interface(IViewInformeBaseGrid) ['{17FAC839-1CCF-4534-B4E1-32374D0CA77E}'] end; TfrViewInfVentasAlbArticuloGrid = class(TfrViewInformeBaseGrid, IViewInfVentasAlbArticuloGrid) cxGrid: TcxGrid; cxGridView: TcxGridDBTableView; cxGridLevel: TcxGridLevel; cxStyleRepository1: TcxStyleRepository; cxStyleRed: TcxStyle; cxStyleBlue: TcxStyle; cxStyleFilterBox: TcxStyle; cxGridViewRecID: TcxGridDBColumn; cxGridViewID_ALBARAN: TcxGridDBColumn; cxGridViewID_EMPRESA: TcxGridDBColumn; cxGridViewREFERENCIA_ALBARAN: TcxGridDBColumn; cxGridViewFECHA_ALBARAN: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL_ALBARAN: TcxGridDBColumn; cxGridViewID_ARTICULO: TcxGridDBColumn; cxGridViewFAMILIA: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewREFERENCIA_PROV: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewCOMISIONABLE: TcxGridDBColumn; cxGridViewINVENTARIABLE: TcxGridDBColumn; cxGridViewIMPORTE_UNIDAD_COSTE: TcxGridDBColumn; cxGridViewDESCUENTO_PROVEEDOR_COSTE: TcxGridDBColumn; cxGridViewIMPORTE_NETO_COSTE: TcxGridDBColumn; cxGridViewIMPORTE_PORTE_COSTE: TcxGridDBColumn; cxGridViewCANTIDAD: TcxGridDBColumn; cxGridViewIMPORTE_UNIDAD_VENTA: TcxGridDBColumn; cxGridViewDESCUENTO_CLIENTE_VENTA: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL_VENTA: TcxGridDBColumn; cxGridViewNIF_CIF_PROVEEDOR: TcxGridDBColumn; cxGridViewNOMBRE_PROVEEDOR: TcxGridDBColumn; cxGridViewNIF_CIF_CLIENTE: TcxGridDBColumn; cxGridViewNOMBRE_CLIENTE: TcxGridDBColumn; cxGridViewNOMBRE_COMERCIAL_CLIENTE: TcxGridDBColumn; cxGridViewNIF_CIF_AGENTE: TcxGridDBColumn; cxGridViewNOMBRE_AGENTE: TcxGridDBColumn; cxGridViewCOMISION_AGENTE: TcxGridDBColumn; cxGridViewIMPORTE_COMISION_AGENTE: TcxGridDBColumn; cxGridViewIMPORTE_NETO_VENTA: TcxGridDBColumn; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridViewColumnPosChanged(Sender: TcxGridTableView; AColumn: TcxGridColumn); procedure cxGridViewColumnSizeChanged(Sender: TcxGridTableView; AColumn: TcxGridColumn); procedure cxGridViewDataControllerGroupingChanged(Sender: TObject); procedure cxGridViewDataControllerSortingChanged(Sender: TObject); procedure cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary); procedure cxGridViewDataControllerFilterChanged(Sender: TObject); protected procedure ActivarEventos; override; procedure DesactivarEventos; override; function GetFocusedView : TcxGridDBTableView; override; public procedure Refresh; override; constructor Create(AOwner: TComponent); override; end; implementation uses cxVariants, uDateUtils; {$R *.dfm} { TfrInfVentasAlbArticuloGrid } function TfrViewInfVentasAlbArticuloGrid.GetFocusedView: TcxGridDBTableView; begin Result := cxGridView; end; procedure TfrViewInfVentasAlbArticuloGrid.Refresh; var FocusedRow, TopRow, i : Integer; begin inherited; { Refrescar las filas del grid a partir del dataset y colocar la fila seleccionada donde estaba } if FocusedView.DataController.DataSource.DataSet.State = dsBrowse then begin TopRow := FocusedView.Controller.TopRowIndex; FocusedRow := FocusedView.DataController.FocusedRowIndex; FocusedView.DataController.UpdateItems(False); // <- Refresco FocusedView.DataController.FocusedRowIndex := FocusedRow; FocusedView.Controller.TopRowIndex := TopRow; //Para que el usuario pueda ocultar y desocultar columnas sin afectar al informe for i := 0 to FocusedView.ColumnCount - 1 do FocusedView.Columns[i].Hidden := not FocusedView.Columns[i].Visible; end; end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var AColumn : TcxGridDBColumn; AFecha : TDateTime; begin inherited; // La fila es la cabecera de un grupo { if ARecord.Expandable then Exit; AColumn := FocusedView.GetColumnByFieldName('FECHA'); if Assigned(AColumn) and (AColumn.Visible) then begin try AFecha := VarToDateTime(ARecord.Values[AColumn.Index]); except on Exception do ShowMessage(VarToStr(ARecord.Values[AColumn.Index])); end; if DaysBetween(Now, AFecha) > 14 then AStyle := cxStyleRed else if DaysBetween(Now, AFecha) > 7 then AStyle := cxStyleBlue end; } end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewColumnPosChanged( Sender: TcxGridTableView; AColumn: TcxGridColumn); begin inherited; if Assigned(FOnViewChanged) then FOnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewColumnSizeChanged( Sender: TcxGridTableView; AColumn: TcxGridColumn); begin inherited; if Assigned(FOnViewChanged) then FOnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewDataControllerGroupingChanged( Sender: TObject); begin inherited; if Assigned(FOnViewChanged) then FOnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewDataControllerSortingChanged( Sender: TObject); begin inherited; if Assigned(FOnViewChanged) then FOnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewDataControllerSummaryAfterSummary( ASender: TcxDataSummary); begin inherited; if Assigned(FOnViewChanged) then FOnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticuloGrid.cxGridViewDataControllerFilterChanged( Sender: TObject); begin if Assigned(FOnFilterChanged) then FOnFilterChanged(Self); end; constructor TfrViewInfVentasAlbArticuloGrid.Create(AOwner: TComponent); begin inherited; end; procedure TfrViewInfVentasAlbArticuloGrid.ActivarEventos; begin inherited; with cxGridView do begin DataController.Filter.OnChanged := cxGridViewDataControllerFilterChanged; DataController.Summary.OnAfterSummary := cxGridViewDataControllerSummaryAfterSummary; DataController.OnGroupingChanged := cxGridViewDataControllerGroupingChanged; DataController.OnSortingChanged := cxGridViewDataControllerSortingChanged; OnColumnPosChanged := cxGridViewColumnPosChanged; OnColumnSizeChanged := cxGridViewColumnSizeChanged; end; end; procedure TfrViewInfVentasAlbArticuloGrid.DesactivarEventos; begin inherited; with cxGridView do begin DataController.Filter.OnChanged := nil; DataController.Summary.OnAfterSummary := nil; DataController.OnGroupingChanged := nil; DataController.OnSortingChanged := nil; OnColumnPosChanged := nil; OnColumnSizeChanged := nil; end; end; end.