unit uEditorDireccionEntregaAlbaranProveedor;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable,
  cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit,
  uIEditorDireccionEntregaAlbaranProveedor, uBizAlbaranesProveedor;

type
  TfEditorDireccionEntregaAlbaranProveedor = class(TForm, IEditorDireccionEntregaAlbaranProveedor)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    eDireccion: TDBEdit;
    ePoblacion: TDBEdit;
    eProvincia: TDBEdit;
    eCodigoPostal: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    dsDireccion: TDADataSource;
    Label6: TLabel;
    ePersonaContacto: TDBEdit;
    Label7: TLabel;
    eTelefono: TDBEdit;

    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    pDireccion: String;
    pPoblacion: String;
    pProvincia: String;
    pCodigoPostal: String;
    pPersonaContacto: String;
    pTelefono: String;

    FAlbaran : IBizAlbaranProveedor;
    function GetAlbaran: IBizAlbaranProveedor;
    procedure SetAlbaran(const Value: IBizAlbaranProveedor);
    property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran;
  end;

implementation
{$R *.dfm}


{ TfEditorDireccionEntrega }

procedure TfEditorDireccionEntregaAlbaranProveedor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //En el caso de cancelar se recuperan los valores iniciales
  if (Self.ModalResult <> mrOk) and (dsDireccion.DataTable.State in dsEditModes) then
  begin
    eDireccion.Field.Value := pDireccion;
    ePoblacion.Field.Value := pPoblacion;
    eProvincia.Field.Value := pProvincia;
    eCodigoPostal.Field.Value := pCodigoPostal;
    ePersonaContacto.Field.Value := pPersonaContacto;
    eTelefono.Field.Value := pTelefono;
  end;
end;

procedure TfEditorDireccionEntregaAlbaranProveedor.FormShow(Sender: TObject);
begin
  //Guardamos los valores iniciales por si al final el usuario cancela
  pDireccion := eDireccion.Text;
  pPoblacion := ePoblacion.Text;
  pProvincia := eProvincia.Text;
  pCodigoPostal := eCodigoPostal.Text;
  pPersonaContacto := ePersonaContacto.Text;
  pTelefono := eTelefono.Text;
end;

function TfEditorDireccionEntregaAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
begin
  Result := FAlbaran;
end;

procedure TfEditorDireccionEntregaAlbaranProveedor.SetAlbaran(
  const Value: IBizAlbaranProveedor);
begin
  FAlbaran := Value;
  if Assigned(FAlbaran) then
    dsDireccion.DataTable := FAlbaran.DataTable
  else
    dsDireccion.DataTable := NIL;
end;

end.
