unit uEditorElegirClientes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorClientes, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid, uViewContactos, uViewClientes, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorElegirClientes, uViewBarraSeleccion, StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces; type TfEditorElegirClientes = class(TfEditorClientes, IEditorElegirClientes) frViewBarraSeleccion1: TfrViewBarraSeleccion; lblTitle: TLabel; lblComments: TLabel; JsClienteBloqueadoDialog: TJSDialog; 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 actQuitarFiltro2Execute(Sender: TObject); procedure actAnchoAuto2Execute(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, uGridStatusUtils, uEditorBase, cxControls, uDBSelectionListUtils, uDialogUtils; {$R *.dfm} { TfEditorElegirClientes } procedure TfEditorElegirClientes.actAnchoAuto2Execute(Sender: TObject); begin inherited; actAnchoAuto.Execute; end; procedure TfEditorElegirClientes.actQuitarFiltro2Execute(Sender: TObject); begin inherited; actQuitarFiltro.Execute; end; procedure TfEditorElegirClientes.FormShow(Sender: TObject); begin inherited; EditorActionList.State := asSuspended; frViewClientes1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := []; end; procedure TfEditorElegirClientes.frViewBarraSeleccion1actCancelarExecute(Sender: TObject); begin inherited; Close; end; procedure TfEditorElegirClientes.frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); var Respuesta : Integer; begin inherited; // ¿El cliente seleccionado está bloqueado? if (FContactos as IBizCliente).BLOQUEADO = 1 then begin JsClienteBloqueadoDialog.Content.Text := 'Motivo: ' + (FContactos as IBizCliente).MOTIVO_BLOQUEO; Respuesta := JsClienteBloqueadoDialog.Execute; if Respuesta <> IDCANCEL then begin case JsClienteBloqueadoDialog.CustomButtonResult of 200 : begin // Utilizarlo aunque esté bloqueado ModalResult := mrOk; Exit; end; 100 : begin // Elegir otro Exit; end; end; end; end else // El cliente no está bloqueado. Puedo continuar. ModalResult := mrOk; end; procedure TfEditorElegirClientes.frViewBarraSeleccion1actSeleccionarUpdate( Sender: TObject); begin inherited; (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) end; function TfEditorElegirClientes.GetContactosSeleccionados: IBizContacto; begin ShowHourglassCursor; try SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); // En Contactos.SelectedRecords tengo los ID de las filas seleccionadas del grid Result := Controller.ExtraerSeleccionados(Contactos); finally HideHourglassCursor; end; end; function TfEditorElegirClientes.GetMensaje: String; begin Result := lblComments.Caption; end; function TfEditorElegirClientes.GetMultiSelect: Boolean; begin Result := ViewGrid.MultiSelect; end; procedure TfEditorElegirClientes.SetMensaje(const AValue: String); begin lblComments.Caption := AValue; end; procedure TfEditorElegirClientes.SetMultiSelect(AValue: Boolean); begin ViewGrid.MultiSelect := AValue; end; procedure TfEditorElegirClientes.SetViewGrid(const Value: IViewGridBase); begin inherited; ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; end; end.