unit uEditorElegirCuentasEspeciales;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage,
  JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns,
  ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid,
  ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar,
  pngimage, ExtCtrls, JvExControls, JvComponent,
  JvNavigationPane, uViewBarraSeleccion, JvgWizardHeader, StdCtrls,
  uBizCuentasEspeciales, uIEditorElegirCuentasEspeciales,
  JvExComCtrls, JvStatusBar, uEditorCuentasEspeciales, uViewCuentasEspeciales,
  JSDialog, uDAInterfaces;

type
  TfEditorElegirCuentasEspeciales = class(TfEditorCuentasEspeciales, IEditorElegirCuentasEspeciales)
    frViewBarraSeleccion1: TfrViewBarraSeleccion;
    JvgWizardHeader1: TJvgWizardHeader;
    EditorSeleccionActionList: TActionList;
    actBuscar2: TAction;
    actQuitarFiltro2: TAction;
    actAnchoAuto2: TAction;
    procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
    procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
    procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure actAnchoAuto2Execute(Sender: TObject);
    procedure actQuitarFiltro2Execute(Sender: TObject);
  protected
    procedure SetMultiSelect (AValue : Boolean);
    function GetMultiSelect : Boolean;
    function GetCuentasEspecialesSeleccionados: IBizCuentaEspecial;
    procedure SetViewGrid(const Value: IViewGridBase); override;
    procedure SetMensaje (const AValue: String);
    function GetMensaje: String;
  public
    property Mensaje : String read GetMensaje write SetMensaje;
    property CuentasEspecialesSeleccionados: IBizCuentaEspecial read GetCuentasEspecialesSeleccionados;
    property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
  end;

implementation

uses
  uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils,
  uGridUtils, uEditorBase, uCuentasEspecialesController;

{$R *.dfm}

{ TfEditorElegirCuentasEspeciales }

procedure TfEditorElegirCuentasEspeciales.actAnchoAuto2Execute(Sender: TObject);
begin
  inherited;
  actAnchoAuto.Execute;
end;

procedure TfEditorElegirCuentasEspeciales.actQuitarFiltro2Execute(Sender: TObject);
begin
  inherited;
  actQuitarFiltro.Execute;
end;

procedure TfEditorElegirCuentasEspeciales.FormShow(Sender: TObject);
begin
  inherited;
  EditorActionList.State := asSuspended;
end;

procedure TfEditorElegirCuentasEspeciales.frViewBarraSeleccion1actCancelarExecute(
  Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfEditorElegirCuentasEspeciales.frViewBarraSeleccion1actSeleccionarExecute(
  Sender: TObject);
begin
  inherited;
  ModalResult := mrOk;
end;

procedure TfEditorElegirCuentasEspeciales.frViewBarraSeleccion1actSeleccionarUpdate(
  Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0)
end;

function TfEditorElegirCuentasEspeciales.GetCuentasEspecialesSeleccionados: IBizCuentaEspecial;
begin
  SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (CuentasEspeciales as ISeleccionable).SelectedRecords);
  // En SelectedRecords tengo los ID de las filas seleccionadas del grid
  Result := (Controller as ICuentasEspecialesController).ExtraerSeleccionados(CuentasEspeciales) as IBizCuentaEspecial;
end;

function TfEditorElegirCuentasEspeciales.GetMensaje: String;
begin
  Result := JvgWizardHeader1.Comments.Text;
end;

function TfEditorElegirCuentasEspeciales.GetMultiSelect: Boolean;
begin
  Result := ViewGrid.MultiSelect;
end;

procedure TfEditorElegirCuentasEspeciales.SetMensaje(const AValue: String);
begin
  JvgWizardHeader1.Comments.Text := AValue;
end;

procedure TfEditorElegirCuentasEspeciales.SetMultiSelect(AValue: Boolean);
begin
  ViewGrid.MultiSelect := AValue;
end;

procedure TfEditorElegirCuentasEspeciales.SetViewGrid(const Value: IViewGridBase);
begin
  inherited;
  ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute;
end;

end.
