This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Base/uEditorGrid.pas

379 lines
10 KiB
ObjectPascal

unit uEditorGrid;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, ActnList, TB2Dock, TB2Toolbar, TBX, TB2Item,
ImgList, PngImageList, StdActns, TB2ExtItems, TBXExtItems, uViewGrid,
uEditorDBBase, DB, uDADataTable, Menus, JvFormAutoSize,
uDAScriptingProvider, uDACDSDataTable, AppEvnts, JvAppStorage,
JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls,
JvComponentBase;
type
IEditorGrid = interface(IEditorDBBase)
['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}']
end;
TfEditorGrid = class(TfEditorDBBase, IEditorGrid)
tbxEditFiltro: TTBXEditItem;
tbxFiltro: TTBXToolbar;
TBXItem7: TTBXItem;
GridPopupMenu: TPopupMenu;
Modificar1: TMenuItem;
Eliminar1: TMenuItem;
N1: TMenuItem;
Nuevo1: TMenuItem;
TBXLabelItem1: TTBXLabelItem;
actQuitarFiltro: TAction;
N2: TMenuItem;
Previsualizar1: TMenuItem;
Imprimir1: TMenuItem;
TBXSeparatorItem14: TTBXSeparatorItem;
TBXItem33: TTBXItem;
actDuplicar: TAction;
TBXSeparatorItem15: TTBXSeparatorItem;
TBXItem34: TTBXItem;
Duplicar1: TMenuItem;
actAnchoAuto: TAction;
TBXItem35: TTBXItem;
actFiltrar: TAction;
TBXItem37: TTBXItem;
lblAno: TTBXLabelItem;
cbxListaAnos: TTBXComboBoxItem;
sepAno: TTBXSeparatorItem;
actPrevisualizarDocumento: TAction;
TBXItem41: TTBXItem;
actImprimirDocumento: TAction;
TBXItem42: TTBXItem;
procedure tbxEditFiltroChange(Sender: TObject; const Text: String);
procedure FormShow(Sender: TObject);
procedure actConfPaginaExecute(Sender: TObject);
procedure actQuitarFiltroExecute(Sender: TObject);
procedure actModificarExecute(Sender: TObject);
procedure actEliminarExecute(Sender: TObject);
procedure actDuplicarUpdate(Sender: TObject);
procedure actDuplicarExecute(Sender: TObject);
procedure JvFormStorageSavePlacement(Sender: TObject);
procedure JvFormStorageRestorePlacement(Sender: TObject);
procedure actRefrescarExecute(Sender: TObject);
procedure actAnchoAutoExecute(Sender: TObject);
procedure actFiltrarExecute(Sender: TObject);
procedure actFiltrarUpdate(Sender: TObject);
procedure actPrevisualizarExecute(Sender: TObject);
procedure actPrevisualizarDocumentoExecute(Sender: TObject);
procedure actPrevisualizarDocumentoUpdate(Sender: TObject);
procedure actImprimirExecute(Sender: TObject);
procedure actImprimirDocumentoExecute(Sender: TObject);
procedure actImprimirDocumentoUpdate(Sender: TObject);
private
FListaAnos: TStringList;
FViewGrid : IViewGrid;
FWhereDataTable: WideString;
function GetListaAnos: TStringList;
procedure SetListaAnos(const Value: TStringList);
function GetWhereDataTable: String;
procedure SetWhereDataTable(const Value: String);
protected
procedure SetViewGrid(const Value : IViewGrid); virtual;
function GetViewGrid: IViewGrid;
public
property ListaAnos: TStringList read GetListaAnos write SetListaAnos;
property WhereDataTable: String read GetWhereDataTable write SetWhereDataTable;
property ViewGrid: IViewGrid read GetViewGrid write SetViewGrid;
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uDataModuleBase, uCustomEditor, cxGridTableView, uBizInformesBase;
{$R *.dfm}
{
********************************* TfEditorGrid *********************************
}
destructor TfEditorGrid.Destroy;
begin
FWhereDataTable := '';
FViewGrid := NIL;
if Assigned(FListaAnos) then
FlistaAnos.Free;
inherited;
end;
function TfEditorGrid.GetViewGrid: IViewGrid;
begin
Result := FViewGrid;
end;
procedure TfEditorGrid.SetViewGrid(const Value: IViewGrid);
begin
FViewGrid := Value;
if Assigned(FViewGrid) then
begin
FViewGrid.PopupMenu := GridPopupMenu;
FViewGrid.OnDblClick := actModificar.OnExecute;
end;
end;
procedure TfEditorGrid.tbxEditFiltroChange(Sender: TObject; const Text: String);
begin
if Assigned(ViewGrid) then
ViewGrid.Filter := Text;
end;
procedure TfEditorGrid.FormShow(Sender: TObject);
begin
inherited;
cbxListaAnos.ItemIndex := 0; //OJO EL ORDEN PORQUE EL ShowEmbedded hace el open de la tabla
if Assigned(ViewGrid) then
ViewGrid.ShowEmbedded(Self);
end;
procedure TfEditorGrid.actPrevisualizarExecute(Sender: TObject);
begin
inherited;
ViewGrid.Preview;
end;
procedure TfEditorGrid.actConfPaginaExecute(Sender: TObject);
begin
inherited;
ViewGrid.PrintSetup;
end;
procedure TfEditorGrid.actImprimirExecute(Sender: TObject);
begin
inherited;
ViewGrid.Print;
end;
procedure TfEditorGrid.actQuitarFiltroExecute(Sender: TObject);
begin
if Assigned(ViewGrid) then
begin
tbxEditFiltro.Text := '';
ViewGrid.Filter := '';
end;
end;
procedure TfEditorGrid.actModificarExecute(Sender: TObject);
begin
inherited;
ViewGrid.SyncFocusedRecordsFromGrid;
end;
procedure TfEditorGrid.actEliminarExecute(Sender: TObject);
begin
ViewGrid.SyncFocusedRecordsFromGrid; // Esto va ANTES del inherited. No cambiar.
inherited;
end;
constructor TfEditorGrid.Create(AOwner: TComponent);
begin
inherited;
actModificar.ShortCut := ShortCut(VK_RETURN, []);
end;
procedure TfEditorGrid.actDuplicarUpdate(Sender: TObject);
begin
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
and not (dsDataTable.DataTable.State = dsInsert)
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorGrid.actDuplicarExecute(Sender: TObject);
begin
ViewGrid.SyncFocusedRecordsFromGrid; // Esto va ANTES del inherited. No cambiar.
inherited;
end;
procedure TfEditorGrid.JvFormStorageSavePlacement(Sender: TObject);
begin
inherited;
if Assigned(ViewGrid) then
ViewGrid.StoreToRegistry;
end;
procedure TfEditorGrid.JvFormStorageRestorePlacement(Sender: TObject);
begin
inherited;
if Assigned(ViewGrid) then
ViewGrid.RestoreFromRegistry;
end;
procedure TfEditorGrid.actRefrescarExecute(Sender: TObject);
var
FocusedRow, TopRow : Integer;
begin
ViewGrid.SyncFocusedRecordsFromGrid;
TopRow := (ViewGrid.Grid.ActiveView.Controller as TcxGridTableController).TopRowIndex;
FocusedRow := ViewGrid.Grid.ActiveView.DataController.FocusedRowIndex;
inherited;
ViewGrid.Grid.ActiveView.DataController.FocusedRowIndex := FocusedRow;
(ViewGrid.Grid.ActiveView.Controller as TcxGridTableController).TopRowIndex := TopRow;
// ViewGrid.Grid.ActiveView.Controller.TopRowIndex := TopRow;
// ViewGrid.SyncFocusedRecordsFromDataSet;
end;
procedure TfEditorGrid.actAnchoAutoExecute(Sender: TObject);
begin
inherited;
if Assigned(ViewGrid) then
ViewGrid.AjustarAncho;
end;
procedure TfEditorGrid.actFiltrarExecute(Sender: TObject);
begin
inherited;
if Assigned(ViewGrid) then
ViewGrid.ActivarDesactivarFiltros;
if Assigned(ViewGrid) then
if ViewGrid.EstanFiltrosVisible then
begin
tbxEditFiltro.Visible := False;
TBXItem7.Visible := False;
end
else
begin
tbxEditFiltro.Text := '';
tbxEditFiltro.Visible := True;
TBXItem7.Visible := True;
end;
end;
procedure TfEditorGrid.actFiltrarUpdate(Sender: TObject);
begin
inherited;
if Assigned(ViewGrid) then
(Sender as TAction).Checked := ViewGrid.EstanFiltrosVisible
end;
function TfEditorGrid.GetListaAnos: TStringList;
begin
Result := FListaAnos;
end;
function TfEditorGrid.GetWhereDataTable: String;
begin
Result := FWhereDataTable;
end;
procedure TfEditorGrid.SetListaAnos(const Value: TStringList);
var
i: Integer;
AStringAnterior: String;
begin
AStringAnterior := '';
if Assigned(FListaAnos) then
begin
AStringAnterior := FListaAnos.ValueFromIndex[cbxListaAnos.ItemIndex];
FListaAnos.Free;
end;
//Se asigna el nuevo TStringList
FListaAnos := Value;
if Assigned(FListaAnos) then
begin
cbxListaAnos.Strings.BeginUpdate;
cbxListaAnos.Strings.Clear;
for i := 0 to FListaAnos.Count - 1 do
cbxListaAnos.Strings.Append(FListaAnos.Names[i]);
//Se posiciona en el elemento que habia anteriormente
if Length(AStringAnterior) > 0 then
begin
if FListaAnos.IndexOfName(AStringAnterior) <> -1 then
cbxListaAnos.ItemIndex := FListaAnos.IndexOfName(AStringAnterior)
else
cbxListaAnos.ItemIndex := 0;
end;
cbxListaAnos.Strings.EndUpdate;
end;
end;
procedure TfEditorGrid.SetWhereDataTable(const Value: String);
begin
FWhereDataTable := Value;
end;
procedure TfEditorGrid.actPrevisualizarDocumentoExecute(Sender: TObject);
var
aInf : IBizInformesAware;
begin
inherited;
ViewGrid.SyncFocusedRecordsFromGrid;
if Assigned(dsDataTable.DataTable) and
Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then
aInf.Preview;
end;
procedure TfEditorGrid.actPrevisualizarDocumentoUpdate(Sender: TObject);
begin
inherited;
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
and not (dsDataTable.DataTable.State = dsInsert)
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorGrid.actImprimirDocumentoExecute(Sender: TObject);
var
aInf : IBizInformesAware;
begin
inherited;
ViewGrid.SyncFocusedRecordsFromGrid;
if Assigned(dsDataTable.DataTable) and
Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then
aInf.Print;
end;
procedure TfEditorGrid.actImprimirDocumentoUpdate(Sender: TObject);
begin
inherited;
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
and not (dsDataTable.DataTable.State = dsInsert)
else
(Sender as TAction).Enabled := False;
end;
initialization
RegisterClass(TfEditorGrid);
finalization
UnRegisterClass(TfEditorGrid);
end.