AlonsoYSal_FactuGES2/Source/GUIBase/uViewGrid.pas
2019-11-18 10:36:42 +00:00

290 lines
8.5 KiB
ObjectPascal

{*******************************************************}
{ }
{ 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,
uViewGridBase, cxGridCustomPopupMenu,
cxGridPopupMenu, uViewFiltroBase, ComCtrls, cxPC, ImgList, PngImageList,
TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg, uDAInterfaces,
dxPScxGrid6Lnk, uCustomView;
type
IViewGrid = interface(IViewGridBase)
['{7EA40980-AD73-4590-A53A-932316C7B121}']
end;
TfrViewGrid = class(TfrViewGridBase, IViewGrid)
cxGrid: TcxGrid;
cxGridLevel: TcxGridLevel;
cxGridView: TcxGridDBTableView;
dxComponentPrinter: TdxComponentPrinter;
dxPSEngineController1: TdxPSEngineController;
cxViewGridPopupMenu: TcxGridPopupMenu;
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;
GridPNGImageList: TPngImageList;
cxStyleRepository1: TcxStyleRepository;
cxStyleSelection: 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;
procedure cxGridViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
procedure cxGridViewDblClick(Sender: TObject);
procedure actQuitarAgrupacionesExecute(Sender: TObject);
procedure actQuitarAgrupacionesUpdate(Sender: TObject);
procedure cxGridViewICONOCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
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;
{$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;
try
RefrescarFiltro;
finally
cxGridView.DataController.Filter.EndUpdate;
end;
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);
var
AFiltrado : Boolean;
AOrdenado : Boolean;
AFilaPar : Boolean;
begin
inherited;
if Assigned(AItem) then
begin
AFilaPar := Odd(ARecord.Index);
AFiltrado := Filtered;
AOrdenado := AItem.SortOrder <> soNone;
if AFilaPar then
begin
if AFiltrado then
begin
if AOrdenado then
AStyle := cxStyle_FILTRADO_ORDENADO_PAR
else
AStyle := cxStyle_FILTRADO_PAR
end
else // No filtrado
if AOrdenado then
AStyle := cxStyle_ORDENADO_PAR
else
AStyle := cxStyle_NORMAL_PAR
end
else begin
if AFiltrado then
begin
if AOrdenado then
AStyle := cxStyle_FILTRADO_ORDENADO_IMPAR
else
AStyle := cxStyle_FILTRADO_IMPAR
end
else // No filtrado
if AOrdenado then
AStyle := cxStyle_ORDENADO_IMPAR
else
AStyle := cxStyle_NORMAL_IMPAR
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.