git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@102 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
251 lines
7.3 KiB
ObjectPascal
251 lines
7.3 KiB
ObjectPascal
unit uViewInformeBase;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms,
|
|
Dialogs, uViewBase, TBXDkPanels, StdCtrls, ComCtrls, TB2Dock,
|
|
uViewAgrupaciones, uCustomView, uViewColumnas, ImgList, PngImageList,
|
|
ActnList, uViewInformeBaseGrid, uBizInformes, uViewSumarios, uViewGridBase,
|
|
uViewInformeBaseParametros, uViewFiltros, cxStyles, Controls, uViewFiltroBase,
|
|
DB, uDADataTable, uDAInterfaces;
|
|
|
|
type
|
|
IViewInformeBase = interface(IViewGridBase)
|
|
['{D716BE6B-1F41-4825-9385-0231D2AEF819}']
|
|
function GetModificable: Boolean;
|
|
procedure SetModificable(const Value: Boolean);
|
|
property Modificable : Boolean read GetModificable write SetModificable;
|
|
|
|
function GetInforme: IBizInforme;
|
|
procedure SetInforme(const Value: IBizInforme);
|
|
property Informe: IBizInforme read GetInforme write SetInforme;
|
|
|
|
function GetOnViewChanged : TNotifyEvent;
|
|
procedure SetOnViewChanged(const Value : TNotifyEvent);
|
|
property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged;
|
|
end;
|
|
|
|
TfrViewInformeBase = class(TfrViewGridBase, IViewInformeBase)
|
|
TBXMultiDock1: TTBXMultiDock;
|
|
pnlParametros: TTBXDockablePanel;
|
|
TBXAlignmentPanel2: TTBXAlignmentPanel;
|
|
TBXLink1: TTBXLink;
|
|
TBXLink5: TTBXLink;
|
|
TBXLink2: TTBXLink;
|
|
pcParametros: TPageControl;
|
|
TabSheet5: TTabSheet;
|
|
tsColumnas: TTabSheet;
|
|
tsAgrupacion: TTabSheet;
|
|
pnlTareas: TTBXDockablePanel;
|
|
TBXPageScroller1: TTBXPageScroller;
|
|
TBXAlignmentPanel1: TTBXAlignmentPanel;
|
|
bFiltros: TTBXLink;
|
|
bSumarios: TTBXLink;
|
|
pcTareas: TPageControl;
|
|
tsSumarios: TTabSheet;
|
|
tsFiltros: TTabSheet;
|
|
frViewColumnas1: TfrViewColumnas;
|
|
frViewAgrupaciones1: TfrViewAgrupaciones;
|
|
SmallImages: TPngImageList;
|
|
LargeImages: TPngImageList;
|
|
EditorActionList: TActionList;
|
|
actAgrupaciones: TAction;
|
|
actColumnas: TAction;
|
|
actSumarios: TAction;
|
|
actFiltros: TAction;
|
|
frViewSumarios1: TfrViewSumarios;
|
|
actRefrescar: TAction;
|
|
frViewFiltros1: TfrViewFiltros;
|
|
TBXMultiDock2: TTBXMultiDock;
|
|
pnlIntervaloFechas: TTBXDockablePanel;
|
|
TBXAlignmentPanel3: TTBXAlignmentPanel;
|
|
bRefrescar: TButton;
|
|
procedure actColumnasExecute(Sender: TObject);
|
|
procedure actSumariosExecute(Sender: TObject);
|
|
procedure actFiltrosExecute(Sender: TObject);
|
|
procedure actAgrupacionesExecute(Sender: TObject);
|
|
|
|
private
|
|
procedure ComprobarPrivilegios;
|
|
|
|
protected
|
|
FInforme : IBizInforme;
|
|
FOnViewChanged : TNotifyEvent;
|
|
FModificable : Boolean;
|
|
procedure ActivarTarea (const ATarea : Integer); virtual;
|
|
function GetInforme: IBizInforme; virtual;
|
|
procedure SetInforme(const Value: IBizInforme); virtual;
|
|
function GetOnViewChanged : TNotifyEvent; virtual;
|
|
procedure SetOnViewChanged(const Value : TNotifyEvent); virtual;
|
|
function GetModificable: Boolean; virtual;
|
|
procedure SetModificable(const Value: Boolean); virtual;
|
|
|
|
procedure FiltrarGrid(TextoFiltro : String); override;
|
|
|
|
public
|
|
property Modificable : Boolean read GetModificable write SetModificable;
|
|
property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged;
|
|
property Informe: IBizInforme read GetInforme write SetInforme;
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure Refresh; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses cxGridDBTableView, cxFilter, uFactuGES_App;
|
|
|
|
const
|
|
COLUMNAS = 1;
|
|
AGRUPACIONES = 2;
|
|
SUMARIOS = 3;
|
|
FILTROS = 4;
|
|
|
|
procedure TfrViewInformeBase.actColumnasExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
ActivarTarea(COLUMNAS);
|
|
frViewColumnas1.Refresh;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.ActivarTarea(const ATarea: Integer);
|
|
begin
|
|
case ATarea of
|
|
COLUMNAS : pcParametros.ActivePage := tsColumnas;
|
|
AGRUPACIONES : pcParametros.ActivePage := tsAgrupacion;
|
|
SUMARIOS : pcTareas.ActivePage := tsSumarios;
|
|
FILTROS : pcTareas.ActivePage := tsFiltros;
|
|
end;
|
|
end;
|
|
|
|
function TfrViewInformeBase.GetInforme: IBizInforme;
|
|
begin
|
|
Result := FInforme;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.SetInforme(const Value: IBizInforme);
|
|
begin
|
|
FInforme := Value;
|
|
frViewColumnas1.Refresh;
|
|
frViewAgrupaciones1.Refresh;
|
|
|
|
ComprobarPrivilegios;
|
|
// ¿Es modificable el InformeBase?
|
|
// Self.Modificable := FInformeBase.EsModificable;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.actSumariosExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
ActivarTarea(SUMARIOS);
|
|
frViewSumarios1.Refresh;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.actFiltrosExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
ActivarTarea(FILTROS);
|
|
frViewFiltros1.Refresh;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.actAgrupacionesExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
ActivarTarea(AGRUPACIONES);
|
|
frViewAgrupaciones1.Refresh;
|
|
end;
|
|
|
|
function TfrViewInformeBase.GetOnViewChanged: TNotifyEvent;
|
|
begin
|
|
Result := FOnViewChanged;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.Refresh;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
inherited;
|
|
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.SetOnViewChanged(const Value: TNotifyEvent);
|
|
begin
|
|
FOnViewChanged := Value;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.ComprobarPrivilegios;
|
|
begin
|
|
if (AppFactuGES.UsuarioActivo.LOGIN <> 'admin') then
|
|
TBXMultiDock1.Visible := False;
|
|
end;
|
|
|
|
constructor TfrViewInformeBase.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
FModificable := False;
|
|
pcParametros.ActivePage := tsColumnas;
|
|
pcTareas.ActivePage := tsSumarios;
|
|
FOnViewChanged := nil;
|
|
end;
|
|
|
|
destructor TfrViewInformeBase.Destroy;
|
|
begin
|
|
ViewFiltros := Nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.FiltrarGrid(TextoFiltro: String);
|
|
var
|
|
Columna: TcxGridDBColumn;
|
|
i: Integer;
|
|
AItemList: TcxFilterCriteriaItemList;
|
|
begin
|
|
with _FocusedView.DataController.Filter do
|
|
begin
|
|
BeginUpdate;
|
|
try
|
|
Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
// Hemos tenido que sobreescribir este metodo porque hemos tenido que cambiar el orden a aplicar los filtros
|
|
// en el caso de los informes debemos aplicar el filtro del campo de texto siempre despues del filtro
|
|
// establecido para el informe, por ello este método nunca limpiará el filtro que tenga ya establecido el grid
|
|
// sino que se añadirá al filtro existente
|
|
// Root.Clear;
|
|
if Length(TextoFiltro) > 0 then
|
|
begin
|
|
AItemList := Root.AddItemList(fboAnd);
|
|
AItemList.BoolOperatorKind := fboOr;
|
|
for i:=0 to (_FocusedView as TcxGridDBTableView).ColumnCount - 1 do
|
|
begin
|
|
Columna := (_FocusedView as TcxGridDBTableView).Columns[i];
|
|
if (Length(Columna.Caption) > 0) and (Columna.Caption <> 'RecID') then
|
|
AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i));
|
|
end;
|
|
Active := True;
|
|
end
|
|
else
|
|
Active := False;
|
|
finally
|
|
ExpandirTodo;
|
|
EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrViewInformeBase.GetModificable: Boolean;
|
|
begin
|
|
Result := FModificable;
|
|
end;
|
|
|
|
procedure TfrViewInformeBase.SetModificable(const Value: Boolean);
|
|
begin
|
|
FModificable := Value;
|
|
|
|
frViewColumnas1.Modificable := FModificable;
|
|
frViewAgrupaciones1.Modificable := FModificable;
|
|
end;
|
|
|
|
end.
|