unit uforzamientos;

interface

uses
  Classes, SysUtils, xmatdefs, ufichasLPD, ucosa,
  ufechas;


type

{ TFichaForzamientos }

  TFichaForzamientos = class(TFichaLPD)
  public
    activar_forzamiento: boolean;
    P: TDAofNReal;

    activar_Pmax, activar_Pmin, flg_fijarP: Boolean;
    P_max, P_min: TDAofNReal;

    constructor Create(capa: integer; fecha: TFecha; periodicidad: TPeriodicidad;
      activar_forzamiento: boolean; P: TDAOfNReal;
      activar_Pmax, activar_Pmin, flg_fijarP: Boolean;
      P_max, P_min: TDAofNReal );
    destructor destroy; override;
    function Rec: TCosa_RecLnk; override;
    procedure AfterRead(f: TArchiTexto); override;
    function InfoAd_: string; override;
    procedure generarLineaResumen(var archi: TextFile); override;

  private
    P_max_OLD, P_min_OLD: NReal;
  end;


procedure AlInicio;
procedure AlFinal;

resourcestring
  rsForzamientoInactivo = 'Inactivo';
  rsForzamientoActivo = 'Activo';

implementation

//-------------------------
//Metodos de TFichaForzamientos
//=========================
constructor TFichaForzamientos.Create(capa: integer; fecha: TFecha;
  periodicidad: TPeriodicidad; activar_forzamiento: boolean; P: TDAOfNReal;
  activar_Pmax, activar_Pmin, flg_fijarP: Boolean; P_max, P_min: TDAofNReal);
begin
  inherited Create(capa, fecha, periodicidad);
  self.activar_forzamiento:= activar_forzamiento;
  self.P:= P;
  self.activar_Pmax:=activar_Pmax;
  self.activar_Pmin:=activar_Pmin;
  self.flg_fijarP:=flg_fijarP;
  self.P_max:=P_max;
  self.P_min:=P_min;
end;

destructor TFichaForzamientos.destroy;
begin
  setlength(P, 0);
  setlength( P_min, 0 );
  setlength( P_max, 0 );
  inherited destroy;
end;

function TFichaForzamientos.Rec: TCosa_RecLnk;
begin
  result:= inherited Rec;
  result.addCampoDef('activo', activar_forzamiento );
  result.addCampoDef('P', P);
  result.addCampoDef('activar_Pmax', activar_Pmax,165);
  result.addCampoDef('activar_Pmin', activar_Pmin,165);
  result.addCampoDef('flg_fijarP', flg_fijarP,165);
  result.addCampoDef('P_max', P_max_OLD,165,202);
  result.addCampoDef('P_min', P_min_OLD,165,202);
  result.addCampoDef('P_Max', P_Max,202);
  result.addCampoDef('P_Min', P_Min,202);
end;

procedure TFichaForzamientos.AfterRead(f: TArchiTexto);
begin
  inherited AfterRead(f);
  if f.Version < 202 then
  begin
    setlength( P_max, length( P ) );
    setlength( P_min, length(P) );
    P_Max[0]:= P_max_OLD;
    P_Min[0]:= P_min_OLD;
  end;
end;



function TFichaForzamientos.InfoAd_: string;
begin
  if activar_forzamiento then
   Result := inherited infoAd_ +rsForzamientoActivo+', '+ DAOfNRealToStr_(self.P, 12, 2, ';')
  else
   Result := inherited infoAd_ +rsForzamientoInactivo+', '+ DAOfNRealToStr_(self.P, 12, 2, ';')
end;

procedure TFichaForzamientos.generarLineaResumen(var archi: TextFile);
begin
  Write(archi, infoAd_, #9);  //NUnidades
end;



procedure AlInicio;
begin
  registrarClaseDeCosa(TFichaForzamientos.ClassName, TFichaForzamientos);
end;

procedure AlFinal;
begin
end;


end.

