unit uEditorElegirPresupuestos;

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,
  uViewPresupuestos, ComCtrls, TB2ExtItems, TBXExtItems, TBX,
  TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
  JvNavigationPane, uIEditorElegirPresupuestos, uViewBarraSeleccion, JvgWizardHeader,
  StdCtrls, uBizPresupuestos, uEditorPresupuestos, JvExComCtrls, JvStatusBar;

type
  TfEditorElegirPresupuestos = class(TfEditorPresupuestos, IEditorElegirPresupuestos)
    frViewBarraSeleccion1: TfrViewBarraSeleccion;
    JvgWizardHeader1: TJvgWizardHeader;
    procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
    procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
    procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
  protected
    procedure SetMultiSelect (AValue : Boolean);
    function GetMultiSelect : Boolean;
    function GetPresupuestosSeleccionados: IBizPresupuesto;
    procedure SetViewGrid(const Value: IViewGridBase); override;
    procedure SetMensaje (const AValue: String);
    function GetMensaje: String;
  public
    property Mensaje : String read GetMensaje write SetMensaje;
    property PresupuestosSeleccionados: IBizPresupuesto read GetPresupuestosSeleccionados;
    property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
  end;

implementation

uses
  uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, 
  uGridUtils, uEditorBase;

{$R *.dfm}

{ TfEditorElegirPresupuestos }

procedure TfEditorElegirPresupuestos.FormShow(Sender: TObject);
begin
  inherited;
  EditorActionList.State := asSuspended;
  frViewPresupuestos1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := [];
end;

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

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

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

function TfEditorElegirPresupuestos.GetPresupuestosSeleccionados: IBizPresupuesto;
begin
  SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, Presupuestos.SelectedRecords.SelectedRecordsObj);
  // En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid
  Result := Controller.ExtraerSeleccionados(Presupuestos);
end;

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

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

procedure TfEditorElegirPresupuestos.SetMensaje(const AValue: String);
begin
  JvgWizardHeader1.Comments.CommaText := AValue;
end;

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

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

end.
