unit uClientesController; interface uses uCustomEditor, uContactosController, uBizContactos, uIEditorClientes, uIEditorCliente, uIDataModuleContactos, uIDataModuleClientes; type IClientesController = interface(IContactosController) end; TClientesController = class(TContactosController, IClientesController) public constructor Create; override; function Buscar(const ID: Integer): IBizContacto; override; function BuscarTodos: IBizContacto; override; function Nuevo : IBizContacto; override; procedure Ver(AContacto : IBizContacto); override; procedure VerTodos(AContactos: IBizContacto); override; function ElegirContacto(AContactos : IBizContacto; AMensaje: String; AMultiSelect: Boolean): IBizContacto; override; end; implementation uses SysUtils, Controls, cxControls, Dialogs, uDataModuleClientes, uEditorRegistryUtils, uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uIEditorElegirClientes; { TClientesController } function TClientesController.Buscar(const ID: Integer): IBizContacto; begin Result := (FDataModule as IDataModuleClientes).GetItem(ID); FiltrarEmpresa(Result); end; function TClientesController.BuscarTodos: IBizContacto; begin Result := (FDataModule as IDataModuleClientes).GetItems; FiltrarEmpresa(Result); end; constructor TClientesController.Create; begin inherited; FDataModule := TDataModuleClientes.Create(Nil); end; function TClientesController.ElegirContacto(AContactos : IBizContacto; AMensaje: String; AMultiSelect: Boolean): IBizContacto; var AEditor : IEditorElegirClientes; begin Result := NIL; CreateEditor('EditorElegirClientes', IEditorElegirClientes, AEditor); try with AEditor do begin Contactos := AContactos; Controller := Self; MultiSelect := AMultiSelect; Mensaje := AMensaje; if IsPositiveResult(ShowModal) then Result := ContactosSeleccionados; end; finally AEditor := NIL; end; end; function TClientesController.Nuevo: IBizContacto; var AContacto : IBizCliente; begin AContacto := (FDataModule as IDataModuleClientes).NewItem; FiltrarEmpresa(AContacto); AContacto.DataTable.Active := True; AContacto.Insert; Result := AContacto; end; procedure TClientesController.Ver(AContacto: IBizContacto); var AEditor : IEditorCliente; begin CreateEditor('EditorCliente', IEditorCliente, AEditor); with AEditor do begin Contacto := AContacto; Controller := Self; ShowModal; end; end; procedure TClientesController.VerTodos(AContactos: IBizContacto); var AEditor : IEditorClientes; begin CreateEditor('EditorClientes', IEditorClientes, AEditor); with AEditor do begin Contactos := AContactos; Controller := Self; ShowEmbedded; end; end; end.