unit uViewDatosYSeleccionProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel, cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos, ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit, pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask, DBCtrls, uProveedoresController, dxLayoutControl, Buttons, uDAInterfaces; type IViewDatosYSeleccionProveedor = interface(IViewBase) ['{EE8C51BD-618D-4211-A247-6FA9BD8EBFD9}'] function GetController: IProveedoresController; procedure SetController(Value: IProveedoresController); property Controller: IProveedoresController read GetController write SetController; function GetProveedor: IBizProveedor; procedure SetProveedor(Value: IBizProveedor); property Proveedor: IBizProveedor read GetProveedor write SetProveedor; function GetID_Proveedor: integer; procedure SetID_Proveedor(const Value: integer); property ID_Proveedor: integer read GetID_Proveedor write SetID_Proveedor; function GetOnProveedorChanged : TNotifyEvent; procedure SetOnProveedorChanged (const Value : TNotifyEvent); property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged write SetOnProveedorChanged; function GetMsgElegirProveedor: String; procedure SetMsgElegirProveedor(const Value: String); property MsgElegirProveedor : String read GetMsgElegirProveedor write SetMsgElegirProveedor; end; TfrViewDatosYSeleccionProveedor = class(TfrViewBase, IViewDatosYSeleccionProveedor) DADataSource: TDADataSource; ActionList1: TActionList; actElegirContacto: TAction; actAnadirContacto: TAction; actVerContacto: TAction; PngImageList: TPngImageList; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item1: TdxLayoutItem; edtlNombre: TcxDBTextEdit; dxLayoutControl1Item2: TdxLayoutItem; edtNIFCIF: TcxDBTextEdit; dxLayoutControl1Item3: TdxLayoutItem; edtCalle: TcxDBTextEdit; dxLayoutControl1Item4: TdxLayoutItem; edtPoblacion: TcxDBTextEdit; dxLayoutControl1Item5: TdxLayoutItem; edtProvincia: TcxDBTextEdit; dxLayoutControl1Item6: TdxLayoutItem; edtCodigoPostal: TcxDBTextEdit; Button1: TBitBtn; dxLayoutControl1Item7: TdxLayoutItem; Button2: TBitBtn; dxLayoutControl1Item8: TdxLayoutItem; Button3: TBitBtn; dxLayoutControl1Item9: TdxLayoutItem; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; procedure actElegirContactoExecute(Sender: TObject); procedure actAnadirContactoExecute(Sender: TObject); procedure actVerContactoExecute(Sender: TObject); procedure actVerContactoUpdate(Sender: TObject); private FController : IProveedoresController; FProveedor : IBizProveedor; FOnProveedorChanged : TNotifyEvent; FMsgElegirProveedor : String; protected function GetController: IProveedoresController; procedure SetController(Value: IProveedoresController); function GetProveedor: IBizProveedor; procedure SetProveedor(Value: IBizProveedor); function GetOnProveedorChanged : TNotifyEvent; procedure SetOnProveedorChanged (const Value : TNotifyEvent); function GetMsgElegirProveedor: String; procedure SetMsgElegirProveedor(const Value: String); procedure SetReadOnly(Value: Boolean); override; function GetID_Proveedor: integer; procedure SetID_Proveedor(const Value: integer); procedure ElegirProveedorInternal; virtual; procedure VerFichaProveedorInternal; virtual; procedure NuevoProveedorInternal; virtual; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property MsgElegirProveedor : String read GetMsgElegirProveedor write SetMsgElegirProveedor; property Controller: IProveedoresController read GetController write SetController; property Proveedor: IBizProveedor read GetProveedor write SetProveedor; property ID_Proveedor: integer read GetID_Proveedor write SetID_Proveedor; property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged write SetOnProveedorChanged; end; implementation {$R *.dfm} uses uDataModuleProveedores, Math; procedure TfrViewDatosYSeleccionProveedor.actElegirContactoExecute(Sender: TObject); begin inherited; ElegirProveedorInternal; end; procedure TfrViewDatosYSeleccionProveedor.actAnadirContactoExecute( Sender: TObject); begin inherited; NuevoProveedorInternal end; procedure TfrViewDatosYSeleccionProveedor.actVerContactoExecute(Sender: TObject); begin inherited; VerFichaProveedorInternal; end; procedure TfrViewDatosYSeleccionProveedor.actVerContactoUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0); end; constructor TfrViewDatosYSeleccionProveedor.Create(AOwner: TComponent); begin inherited; FMsgElegirProveedor := ''; FController := NIL; end; destructor TfrViewDatosYSeleccionProveedor.Destroy; begin FController := NIL; inherited; end; procedure TfrViewDatosYSeleccionProveedor.ElegirProveedorInternal; var AProveedor : IBizProveedor; begin inherited; AProveedor := (Controller.ElegirContacto(Controller.BuscarTodos, FMsgElegirProveedor, False) as IBizProveedor); if Assigned(AProveedor) then begin Self.Update; ShowHourglassCursor; try Proveedor := AProveedor; finally HideHourglassCursor; end; end; end; function TfrViewDatosYSeleccionProveedor.GetProveedor: IBizProveedor; begin Result := FProveedor; end; procedure TfrViewDatosYSeleccionProveedor.NuevoProveedorInternal; var AProveedor : IBizProveedor; begin inherited; AProveedor := (Controller.Nuevo as IBizProveedor); Controller.Ver(AProveedor); Proveedor := AProveedor; end; function TfrViewDatosYSeleccionProveedor.GetController: IProveedoresController; begin if not Assigned(FController) then FController := TProveedoresController.Create; Result := FController; end; function TfrViewDatosYSeleccionProveedor.GetID_Proveedor: integer; begin Result := -1; if Assigned(FProveedor) then Result := FProveedor.ID; end; function TfrViewDatosYSeleccionProveedor.GetMsgElegirProveedor: String; begin Result := FMsgElegirProveedor; end; procedure TfrViewDatosYSeleccionProveedor.SetProveedor(Value: IBizProveedor); begin FProveedor := Value; if Assigned(FProveedor) then begin DADataSource.DataTable := FProveedor.DataTable; if not FProveedor.DataTable.Active then FProveedor.DataTable.Active := True; end else DADataSource.DataTable := NIL; if Assigned(FOnProveedorChanged) then FOnProveedorChanged(Self); end; procedure TfrViewDatosYSeleccionProveedor.SetReadOnly(Value: Boolean); begin inherited; if (csLoading in Self.ComponentState) then Exit; actAnadirContacto.Enabled := not ReadOnly; actElegirContacto.Enabled := not ReadOnly; end; procedure TfrViewDatosYSeleccionProveedor.VerFichaProveedorInternal; begin Controller.Ver(Proveedor); end; procedure TfrViewDatosYSeleccionProveedor.SetController(Value: IProveedoresController); begin if Assigned(FController) then FController := NIL; FController := Value; end; procedure TfrViewDatosYSeleccionProveedor.SetID_Proveedor(const Value: integer); begin Self.Proveedor := IBizProveedor(Controller.Buscar(Value)); end; procedure TfrViewDatosYSeleccionProveedor.SetMsgElegirProveedor( const Value: String); begin FMsgElegirProveedor := Value; end; function TfrViewDatosYSeleccionProveedor.GetOnProveedorChanged: TNotifyEvent; begin Result := FOnProveedorChanged; end; procedure TfrViewDatosYSeleccionProveedor.SetOnProveedorChanged( const Value: TNotifyEvent); begin FOnProveedorChanged := Value; end; end.