unit uEditorElegirArticulos; 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, uViewArticulos, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uViewBarraSeleccion, StdCtrls, uEditorArticulos, uBizArticulos, uIEditorElegirArticulos, JvExComCtrls, JvStatusBar, uDAInterfaces, uEditorGridBase, uArticulosController; type TfEditorElegirArticulos = class(TfEditorGridBase, IEditorElegirArticulos) frViewBarraSeleccion1: TfrViewBarraSeleccion; lblTitle: TLabel; lblComments: TLabel; 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); private FArticulos: IBizArticulo; FController : IArticulosController; protected function GetArticulos: IBizArticulo; procedure SetArticulos(const Value: IBizArticulo); function GetController : IArticulosController; virtual; procedure SetController (const Value : IArticulosController); virtual; procedure SetMultiSelect (AValue : Boolean); function GetMultiSelect : Boolean; function GetArticulosSeleccionados: IBizArticulo; procedure SetViewGrid(const Value: IViewGridBase); override; procedure SetMensaje (const AValue: String); function GetMensaje: String; procedure NuevoInterno; override; procedure ModificarInterno; override; public property Mensaje : String read GetMensaje write SetMensaje; property ArticulosSeleccionados: IBizArticulo read GetArticulosSeleccionados; property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; property Articulos: IBizArticulo read GetArticulos write SetArticulos; property Controller : IArticulosController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils, uGridStatusUtils, uEditorBase; {$R *.dfm} { TfEditorElegirArticulos } procedure TfEditorElegirArticulos.actAnchoAuto2Execute(Sender: TObject); begin inherited; actAnchoAuto.Execute; end; procedure TfEditorElegirArticulos.actQuitarFiltro2Execute(Sender: TObject); begin inherited; actQuitarFiltro.Execute; end; constructor TfEditorElegirArticulos.Create(AOwner: TComponent); begin inherited; end; destructor TfEditorElegirArticulos.Destroy; begin FArticulos := NIL; FController := NIl; inherited; end; procedure TfEditorElegirArticulos.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Articulos) then raise Exception.Create('No hay ningún articulo asignado'); Articulos.DataTable.Active := True; // EditorActionList.State := asSuspended; end; procedure TfEditorElegirArticulos.frViewBarraSeleccion1actCancelarExecute( Sender: TObject); begin inherited; Close; end; procedure TfEditorElegirArticulos.frViewBarraSeleccion1actSeleccionarExecute( Sender: TObject); begin inherited; ModalResult := mrOk; end; procedure TfEditorElegirArticulos.frViewBarraSeleccion1actSeleccionarUpdate( Sender: TObject); begin inherited; (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) end; function TfEditorElegirArticulos.GetArticulos: IBizArticulo; begin Result := FArticulos; end; function TfEditorElegirArticulos.GetArticulosSeleccionados: IBizArticulo; begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords); // En SelectedRecords tengo los ID de las filas seleccionadas del grid Result := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo; end; function TfEditorElegirArticulos.GetController: IArticulosController; begin Result := FController; end; function TfEditorElegirArticulos.GetMensaje: String; begin Result := lblComments.Caption; end; function TfEditorElegirArticulos.GetMultiSelect: Boolean; begin Result := ViewGrid.MultiSelect; end; procedure TfEditorElegirArticulos.ModificarInterno; var AArticulo: IBizArticulo; begin inherited; AArticulo := FController.Buscar(Articulos.ID); FController.Ver(AArticulo); RefrescarInterno; end; procedure TfEditorElegirArticulos.NuevoInterno; var AArticulo: IBizArticulo; begin inherited; AArticulo := FController.Nuevo; if not AArticulo.DataTable.Active then AArticulo.DataTable.Active := True; FController.Ver(AArticulo); RefrescarInterno; end; procedure TfEditorElegirArticulos.SetArticulos(const Value: IBizArticulo); begin FArticulos := Value; dsDataTable.DataTable := FArticulos.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewArticulos).Articulos := FArticulos; end; procedure TfEditorElegirArticulos.SetController(const Value: IArticulosController); begin FController := Value; if Assigned(ViewGrid) then (ViewGrid as IViewArticulos).Controller := FController; end; procedure TfEditorElegirArticulos.SetMensaje(const AValue: String); begin lblComments.Caption := AValue; end; procedure TfEditorElegirArticulos.SetMultiSelect(AValue: Boolean); begin ViewGrid.MultiSelect := AValue; end; procedure TfEditorElegirArticulos.SetViewGrid(const Value: IViewGridBase); begin inherited; ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; end; end.