{*******************************************************} { } { Administración de puntos de venta } { } { Copyright (C) 2006 Rodax Software S.L. } { } {*******************************************************} unit uViewGrid; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPrnDlg, cxIntlPrintSys3, dxPSPrvwAdv, uViewGridBase, cxGridCustomPopupMenu, cxGridPopupMenu, uViewFiltroBase, ComCtrls, cxPC, ImgList, PngImageList, TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg, uDAInterfaces, dxPScxGrid6Lnk, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinCaramel, dxSkinCoffee, dxSkinGlassOceans, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinSilver, dxSkinStardust, dxSkinsDefaultPainters, dxSkinValentine, dxSkinXmas2008Blue, dxSkinscxPCPainter; type IViewGrid = interface(IViewGridBase) ['{7EA40980-AD73-4590-A53A-932316C7B121}'] end; TfrViewGrid = class(TfrViewGridBase, IViewGrid) cxGrid: TcxGrid; cxGridLevel: TcxGridLevel; cxGridView: TcxGridDBTableView; dxComponentPrinter: TdxComponentPrinter; dxPSEngineController1: TdxPSEngineController; cxStyleRepository1: TcxStyleRepository; cxStyleSelection: TcxStyle; dxComponentPrinterLink: TdxGridReportLink; frViewFiltroBase1: TfrViewFiltroBase; ActionList1: TActionList; actQuitarAgrupaciones: TAction; pnlAgrupaciones: TTBXDockablePanel; TBXAlignmentPanel1: TTBXAlignmentPanel; TBXToolbar1: TTBXToolbar; TBXItem1: TTBXItem; cxStyleRepositoryInforme: TcxStyleRepository; cxStyleContentInforme: TcxStyle; cxStyleFooterInforme: TcxStyle; cxStyleGroupInforme: TcxStyle; cxStyleHeaderInforme: TcxStyle; cxStyleSelectionInforme: TcxStyle; cxStyle_NORMAL_PAR: TcxStyle; cxStyle_NORMAL_IMPAR: TcxStyle; cxStyle_ORDENADO_PAR: TcxStyle; cxStyle_ORDENADO_IMPAR: TcxStyle; cxStyle_FILTRADO_PAR: TcxStyle; cxStyle_FILTRADO_IMPAR: TcxStyle; cxStyle_FILTRADO_ORDENADO_PAR: TcxStyle; cxStyle_FILTRADO_ORDENADO_IMPAR: TcxStyle; GridPNGImageList: TPngImageList; cxViewGridPopupMenu: TcxGridPopupMenu; procedure cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridViewDblClick(Sender: TObject); procedure actQuitarAgrupacionesExecute(Sender: TObject); procedure actQuitarAgrupacionesUpdate(Sender: TObject); procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridViewICONOCustomDrawHeader(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean); protected function GetGrid : TcxGrid; override; function GetFocusedView : TcxGridDBTableView; override; procedure SetPopupMenu(const Value: TPopupMenu); override; procedure OnChangeValoresFiltro(Sender: TObject); procedure SetViewFiltros(const Value: IViewFiltroBase); override; function AddFilterGrid(const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; public function EsSeleccionCeldaDatos: Boolean; override; procedure Preview; override; procedure Print; override; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uDMBase, uDBSelectionListUtils, dxOffice11, cxGridCommon; {$R *.dfm} { ********************************* TfrViewGrid ********************************** } { TfrViewGrid } function TfrViewGrid.GetFocusedView: TcxGridDBTableView; begin Result := cxGridView; end; function TfrViewGrid.GetGrid: TcxGrid; begin Result := cxGrid; end; procedure TfrViewGrid.OnChangeValoresFiltro(Sender: TObject); begin cxGridView.DataController.Filter.BeginUpdate; RefrescarFiltro; cxGridView.DataController.Filter.EndUpdate; end; procedure TfrViewGrid.Preview; begin inherited; dxComponentPrinter.Preview; end; procedure TfrViewGrid.Print; begin inherited; dxComponentPrinter.Print(True, nil, nil); end; procedure TfrViewGrid.SetPopupMenu(const Value: TPopupMenu); begin inherited; cxViewGridPopupMenu.PopupMenus[0].PopupMenu := FPopupMenu; end; procedure TfrViewGrid.SetViewFiltros(const Value: IViewFiltroBase); begin inherited; if Assigned(ViewFiltros) then ViewFiltros.OnFiltrosChange := OnChangeValoresFiltro end; procedure TfrViewGrid.actQuitarAgrupacionesExecute(Sender: TObject); var Columna: TcxGridDBColumn; i,j: Integer; begin inherited; for j := 0 to cxGrid.ViewCount - 1 do begin for i := 0 to (cxGrid.Views[j] as tcxGridDBTableView).ColumnCount - 1 do begin Columna := (cxGrid.Views[j] as TcxGridDBTableView).Columns[i]; if not (Columna.GroupIndex < 0) then begin Columna.GroupIndex := -1; Columna.Visible := True; end; end; end; end; procedure TfrViewGrid.actQuitarAgrupacionesUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := (cxGridView.GroupedColumnCount > 0); end; function TfrViewGrid.AddFilterGrid(const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; var AItemList: TcxFilterCriteriaItemList; begin AItemList := cxGridView.DataController.Filter.Root; Result := AItemList.AddItemList(Operacion); end; constructor TfrViewGrid.Create(AOwner: TComponent); begin inherited; ViewFiltros := frViewFiltroBase1; end; procedure TfrViewGrid.cxGridViewDblClick(Sender: TObject); begin inherited; if Assigned(FOnDblClick) then FOnDblClick(Sender); end; procedure TfrViewGrid.cxGridViewICONOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R : TRect; begin inherited; R := AViewInfo.ContentBounds; ACanvas.FillRect(R); ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top + 2, 1); ADone := True; end; procedure TfrViewGrid.cxGridViewICONOCustomDrawHeader(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean); var R : TRect; begin inherited; with AViewInfo do begin LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors, Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine, False, '', Params.Font, Params.TextColor, Params.Color); R := AViewInfo.ContentBounds; ACanvas.FillRect(R); ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top + 2, 0); end; ADone := True; end; procedure TfrViewGrid.cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin inherited; if Assigned(AItem) then begin if Odd(ARecord.Index) then AStyle := cxStyle_NORMAL_PAR else AStyle := cxStyle_NORMAL_IMPAR; if (AItem.SortOrder <> soNone) then begin if Odd(ARecord.Index) then AStyle := cxStyle_ORDENADO_PAR else AStyle := cxStyle_ORDENADO_IMPAR; end; if Filtered then begin if Odd(ARecord.Index) then AStyle := cxStyle_FILTRADO_PAR else AStyle := cxStyle_FILTRADO_IMPAR; if (AItem.SortOrder <> soNone) then begin if Odd(ARecord.Index) then AStyle := cxStyle_FILTRADO_ORDENADO_PAR else AStyle := cxStyle_FILTRADO_ORDENADO_IMPAR; end; end; end; end; destructor TfrViewGrid.Destroy; begin ViewFiltros := Nil; inherited; end; function TfrViewGrid.esSeleccionCeldaDatos: Boolean; begin Result := not (cxGridView.Controller.FocusedRecord is TcxGridGroupRow); end; end.