unit uDireccionesContactoController; interface uses Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, uBizContactos, uBizDireccionesContacto, uIDataModuleContactos; type IDireccionesContactoController = interface ['{9B6CB172-F32C-414F-A0E2-99920CAF88FB}'] procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True); procedure Ver(ADireccion : IBizDireccionesContacto); function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean; end; TDireccionesContactoController = class(TInterfacedObject, IDireccionesContactoController) private FDataModule : IDataModuleContactos; public procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True); procedure Ver(ADireccion : IBizDireccionesContacto); function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean; constructor Create; virtual; destructor Destroy; override; end; implementation { TDireccionesContactoController } uses uDataModuleContactos, schContactosClient_Intf, uIEditorDireccionContacto, uEditorRegistryUtils, cxControls; procedure TDireccionesContactoController.CopiarDireccionFiscal( AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir: Boolean); begin if not Assigned(AContacto) then raise Exception.Create ('Contacto no asignado (CopiarDireccionFiscal)'); if not Assigned(ADireccion) then raise Exception.Create ('Dirección no asignada (CopiarDireccionFiscal)'); if AAnadir then ADireccion.DataTable.Insert else ADireccion.DataTable.Edit; try with ADireccion do begin NOMBRE := 'Dirección de entrega'; CALLE := AContacto.CALLE; POBLACION := AContacto.POBLACION; PROVINCIA := AContacto.PROVINCIA; CODIGO_POSTAL := AContacto.CODIGO_POSTAL; TELEFONO := AContacto.TELEFONO_1; EMAIL := AContacto.EMAIL_1; end; finally ADireccion.DataTable.Post; end; end; constructor TDireccionesContactoController.Create; begin inherited; FDataModule := TDataModuleContactos.Create(Nil); end; destructor TDireccionesContactoController.Destroy; begin FDataModule := Nil; inherited; end; function TDireccionesContactoController.Localizar( ADirecciones: IBizDireccionesContacto; const ID: Integer): Boolean; begin Result := True; ShowHourglassCursor; try with ADirecciones.DataTable do begin DisableControls; First; if not Locate(fld_DireccionesContactoID, ID, []) then Result := False; EnableControls; end; finally HideHourglassCursor; end; end; procedure TDireccionesContactoController.Ver( ADireccion: IBizDireccionesContacto); var AEditor : IEditorEditorDireccion; begin AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorDireccion', IEditorEditorDireccion, AEditor); if Assigned(AEditor) then with AEditor do begin Direccion := ADireccion; Controller := Self; ShowModal; Release; end; finally AEditor := NIL; HideHourglassCursor; end; end; end.