unit uEditorElegirProveedores;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uEditorProveedores, DB, uDADataTable, Menus, JvAppStorage,
  JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
  StdActns, ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid,
  uViewContactos, uViewProveedores, ComCtrls, TB2ExtItems, TBXExtItems, TBX,
  TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
  JvNavigationPane, uIEditorElegirProveedores, uViewBarraSeleccion, JvgWizardHeader,
  StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar;

type
  TfEditorElegirProveedores = class(TfEditorProveedores, IEditorElegirProveedores)
    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 GetContactosSeleccionados: IBizContacto;
    procedure SetViewGrid(const Value: IViewGridBase); override;
    procedure SetMensaje (const AValue: String);
    function GetMensaje: String;
  public
    property Mensaje : String read GetMensaje write SetMensaje;
    property ContactosSeleccionados: IBizContacto read GetContactosSeleccionados;
    property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
  end;

implementation

uses
  uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uEditorContactos,
  uGridUtils, uEditorBase, cxControls;

{$R *.dfm}

{ TfEditorElegirProveedores }

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

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

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

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

function TfEditorElegirProveedores.GetContactosSeleccionados: IBizContacto;
begin
  ShowHourglassCursor;
  try
    SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, Contactos.SelectedRecords.SelectedRecordsObj);
    // En Contactos.SelectedRecords tengo los ID de las filas seleccionadas del grid
    Result := Controller.ExtraerSeleccionados(Contactos);
  finally
    HideHourglassCursor;
  end;
end;

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

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

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

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

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

end.
