346 lines
9.3 KiB
ObjectPascal
346 lines
9.3 KiB
ObjectPascal
|
|
{*******************************************************}
|
|||
|
|
{ }
|
|||
|
|
{ Administraci<63>n de puntos de venta }
|
|||
|
|
{ }
|
|||
|
|
{ Copyright (C) 2006 Rodax Software S.L. }
|
|||
|
|
{ }
|
|||
|
|
{*******************************************************}
|
|||
|
|
|
|||
|
|
unit uViewGridBase;
|
|||
|
|
|
|||
|
|
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, dxPScxGridLnk, dxPrnDlg,
|
|||
|
|
cxIntlPrintSys3, dxPSPrvwAdv, uGridUtils;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
IViewGridBase = interface(IViewBase)
|
|||
|
|
['{D5B9B017-2A2E-44AC-8223-E54664C6BC66}']
|
|||
|
|
procedure ExpandirTodo;
|
|||
|
|
procedure ContraerTodo;
|
|||
|
|
procedure AjustarAncho;
|
|||
|
|
|
|||
|
|
procedure Preview;
|
|||
|
|
procedure Print;
|
|||
|
|
procedure PrintSetup;
|
|||
|
|
|
|||
|
|
function IsEmpty : Boolean;
|
|||
|
|
|
|||
|
|
procedure SaveGridStatus;
|
|||
|
|
procedure RestoreGridStatus;
|
|||
|
|
|
|||
|
|
procedure GotoFirst;
|
|||
|
|
procedure GotoLast;
|
|||
|
|
|
|||
|
|
function GetFocusedView : TcxGridDBTableView;
|
|||
|
|
property _FocusedView : TcxGridDBTableView read GetFocusedView;
|
|||
|
|
|
|||
|
|
function GetGrid : TcxGrid;
|
|||
|
|
property _Grid : TcxGrid read GetGrid;
|
|||
|
|
|
|||
|
|
procedure StoreToRegistry (const Path : String);
|
|||
|
|
procedure RestoreFromRegistry (const Path : String);
|
|||
|
|
|
|||
|
|
procedure SetDblClick(const Value: TNotifyEvent);
|
|||
|
|
function GetDblClick: TNotifyEvent;
|
|||
|
|
property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick;
|
|||
|
|
|
|||
|
|
procedure SetPopupMenu(const Value: TPopupMenu);
|
|||
|
|
function GetPopupMenu: TPopupMenu;
|
|||
|
|
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
|
|||
|
|
|
|||
|
|
function GetMultiSelect: Boolean;
|
|||
|
|
procedure SetMultiSelect(const Value: Boolean);
|
|||
|
|
property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
|
|||
|
|
|
|||
|
|
procedure SetFilter(const Value: string);
|
|||
|
|
function GetFilter: string;
|
|||
|
|
property Filter: string read GetFilter write SetFilter;
|
|||
|
|
|
|||
|
|
function GetFiltered: Boolean;
|
|||
|
|
property Filtered : Boolean read GetFiltered;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
TfrViewGridBase = class(TfrViewBase, IViewGridBase)
|
|||
|
|
dsDataSource: TDADataSource;
|
|||
|
|
private
|
|||
|
|
FFilter: string;
|
|||
|
|
FOnFilterChanged : TNotifyEvent;
|
|||
|
|
procedure FiltrarGrid(TextoFiltro : String);
|
|||
|
|
protected
|
|||
|
|
FGridStatus : TcxGridStatus;
|
|||
|
|
FOnDblClick: TNotifyEvent;
|
|||
|
|
FPopupMenu: TPopupMenu;
|
|||
|
|
function GetMultiSelect: Boolean; virtual;
|
|||
|
|
procedure SetMultiSelect(const Value: Boolean); virtual;
|
|||
|
|
procedure SetPopupMenu(const Value: TPopupMenu); virtual;
|
|||
|
|
function GetPopupMenu: TPopupMenu; virtual;
|
|||
|
|
procedure SetDblClick(const Value: TNotifyEvent); virtual;
|
|||
|
|
function GetDblClick: TNotifyEvent; virtual;
|
|||
|
|
function GetGrid : TcxGrid; virtual; abstract;
|
|||
|
|
function GetFocusedView : TcxGridDBTableView; virtual; abstract;
|
|||
|
|
procedure SetFilter(const Value: string); virtual;
|
|||
|
|
function GetFilter: string; virtual;
|
|||
|
|
function GetFiltered: Boolean; virtual;
|
|||
|
|
procedure FilterChanged(Sender : TObject); virtual;
|
|||
|
|
public
|
|||
|
|
constructor Create(AOwner: TComponent); override;
|
|||
|
|
|
|||
|
|
procedure ShowEmbedded(const AParent : TWinControl); override;
|
|||
|
|
|
|||
|
|
procedure ExpandirTodo;
|
|||
|
|
procedure ContraerTodo;
|
|||
|
|
procedure AjustarAncho;
|
|||
|
|
|
|||
|
|
procedure Preview; virtual;
|
|||
|
|
procedure Print; virtual;
|
|||
|
|
procedure PrintSetup; virtual;
|
|||
|
|
|
|||
|
|
function IsEmpty : Boolean;
|
|||
|
|
|
|||
|
|
procedure SaveGridStatus;
|
|||
|
|
procedure RestoreGridStatus;
|
|||
|
|
|
|||
|
|
procedure GotoFirst;
|
|||
|
|
procedure GotoLast;
|
|||
|
|
|
|||
|
|
procedure StoreToRegistry (const Path : String);
|
|||
|
|
procedure RestoreFromRegistry (const Path : String);
|
|||
|
|
|
|||
|
|
property Filter: string read GetFilter write SetFilter;
|
|||
|
|
property Filtered : Boolean read GetFiltered;
|
|||
|
|
property _FocusedView : TcxGridDBTableView read GetFocusedView;
|
|||
|
|
property _Grid : TcxGrid read GetGrid;
|
|||
|
|
property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick;
|
|||
|
|
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
|
|||
|
|
property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure Register;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
CCReg, uDataModuleBase, uDBSelectionListUtils;
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
procedure Register;
|
|||
|
|
begin
|
|||
|
|
RegisterCustomContainer(TfrViewGridBase);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{ TfrViewGrid }
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.AjustarAncho;
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.ApplyBestFit;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.ContraerTodo;
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.ViewData.Collapse(True);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
constructor TfrViewGridBase.Create(AOwner: TComponent);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
FFilter := '';
|
|||
|
|
FOnFilterChanged := FilterChanged;
|
|||
|
|
FPopupMenu := nil;
|
|||
|
|
FOnDblClick := nil;
|
|||
|
|
FGridStatus := NIL;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.ExpandirTodo;
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.ViewData.Expand(True);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.GetDblClick: TNotifyEvent;
|
|||
|
|
begin
|
|||
|
|
Result := FOnDblClick;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.GetFilter: string;
|
|||
|
|
begin
|
|||
|
|
Result := FFilter;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.GetFiltered: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := (_FocusedView.DataController.Filter.Root.Count > 0);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.GetMultiSelect: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := _FocusedView.OptionsSelection.MultiSelect;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.GetPopupMenu: TPopupMenu;
|
|||
|
|
begin
|
|||
|
|
Result := FPopupMenu;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.GotoFirst;
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.DataController.GotoFirst;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.GotoLast;
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.DataController.GotoLast;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewGridBase.IsEmpty: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := (_FocusedView.ViewData.RowCount < 1);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.Preview;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.Print;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.PrintSetup;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.RestoreFromRegistry(const Path : String);
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + Self.Name, False, False, []);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.RestoreGridStatus;
|
|||
|
|
begin
|
|||
|
|
if Assigned(FGridStatus) then
|
|||
|
|
FGridStatus.Restore(_FocusedView);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.SaveGridStatus;
|
|||
|
|
begin
|
|||
|
|
FreeAndNil(FGridStatus);
|
|||
|
|
FGridStatus := TcxGridStatus.Create(_FocusedView);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.SetDblClick(const Value: TNotifyEvent);
|
|||
|
|
begin
|
|||
|
|
FOnDblClick := Value;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.SetFilter(const Value: string);
|
|||
|
|
begin
|
|||
|
|
if FFilter <> Value then
|
|||
|
|
begin
|
|||
|
|
FFilter := Value;
|
|||
|
|
FiltrarGrid(FFilter);
|
|||
|
|
if Assigned(FOnFilterChanged) then
|
|||
|
|
FOnFilterChanged(Self);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.SetMultiSelect(const Value: Boolean);
|
|||
|
|
begin
|
|||
|
|
_FocusedView.OptionsSelection.MultiSelect := Value;
|
|||
|
|
// _FocusedView..OnSelectionChanged := SelectionChanged;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.SetPopupMenu(const Value: TPopupMenu);
|
|||
|
|
begin
|
|||
|
|
FPopupMenu := Value;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.ShowEmbedded(const AParent: TWinControl);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
|
|||
|
|
// No activar la tabla ya por si acaso tuviera par<61>metros
|
|||
|
|
{ if not DADataSource.DataTable.Active then
|
|||
|
|
DADataSource.DataTable.Active := True;}
|
|||
|
|
|
|||
|
|
GotoFirst;
|
|||
|
|
_FocusedView.Focused := True;
|
|||
|
|
if _FocusedView.ViewData.RecordCount > 0 then
|
|||
|
|
begin
|
|||
|
|
_FocusedView.ViewData.Records[0].Selected := True;
|
|||
|
|
_FocusedView.ViewData.Records[0].Focused := True;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.StoreToRegistry(const Path : String);
|
|||
|
|
begin
|
|||
|
|
if Assigned(_FocusedView) then
|
|||
|
|
_FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + Self.Name, False, []);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.FiltrarGrid(TextoFiltro : String);
|
|||
|
|
var
|
|||
|
|
Columna: TcxGridDBColumn;
|
|||
|
|
i: Integer;
|
|||
|
|
AItemList: TcxFilterCriteriaItemList;
|
|||
|
|
begin
|
|||
|
|
with _FocusedView.DataController.Filter do
|
|||
|
|
begin
|
|||
|
|
BeginUpdate;
|
|||
|
|
try
|
|||
|
|
Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|||
|
|
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
|
|||
|
|
EndUpdate;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
procedure TfrViewGridBase.FilterChanged(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
//
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TfrViewGridBase.Destroy;
|
|||
|
|
begin
|
|||
|
|
FOnFilterChanged := Nil;
|
|||
|
|
if Assigned(FGridStatus) then
|
|||
|
|
FreeAndNil(FGridStatus);
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|
|||
|
|
|