unit uEditarFichaRestriccionErogados;

interface

uses
  {$IFDEF WINDOWS}
  Windows,
  Messages,
   {$ELSE}
  LCLType,
   {$ENDIF}
  SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
  uBaseEditoresFichas, StdCtrls, ExtCtrls, Grids, Buttons, uFichasLPD,
  uCosaConNombre, usalasdejuego, uBaseEditoresFichasGeneradores,
  ufechas,
//  usalasDeJuegoParaEditor,
  {$IFDEF RESTRICCIONES_EROGADOS}
  urestriccionerogados,
  {$ENDIF}
  uGeneradores,
  uEditarCentralesEncadenadas, utilidades, uconstantesSimSEE,
  xMatDefs,
  uverdoc, uOpcionesSimSEEEdit;

resourcestring
  rsAreaCuenca_ha = 'Area de la cuenca [há]';
  rsCotaDeDescarga = 'Cota de descarga[m]';
  rsCotaDeToma = 'Cota de toma[m]';
  rsCostoVariableAgua = 'Costo variable del agua[USD/Hm3]';
  rsCoeficientesCaudalArogadoCAQE =
    'Coeficientes de afectación del salto por caudal erogado(caQE)';
  rsCoeficientesCaudalArogadoCBQE =
    'Coeficientes de afectación del salto por caudal erogado(cbQE)';
  rsRendimientoPU = 'Rendimiento[p.u.]';
  rsPotenciaMaximaGenerableMW = 'Potencia máxima generable[MW]';
  rsCaudalMaximoTurbinableM3S = 'Caudal máximo turbinable[m3/s]';
  rsFactorDeDisponibilidadPU = 'Factor de disponibilidad[p.u.]';
  rsTiempoDeReparacionH = 'Tiempo de reparación[horas]';

type

  { TEditarFichaRestriccionErogados }

  TEditarFichaRestriccionErogados = class(TBaseEditoresFichasGeneradores)
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    BGuardar: TButton;
    BCancelar: TButton;
    BEditarCentralesAguasArriba: TButton;
    CBRestrEMax: TCheckBox;
    ePenalidad: TLabeledEdit;
    BAyuda: TButton;
    eAlturaMaxima : TEdit;
    lbAlturaMaxima: TLabel;
    procedure CambiosForm(Sender: TObject);
    procedure sgGetEditText(Sender: TObject; ACol, ARow: integer;
      var Value: string);
    procedure BEditarCentralesAguasArribaClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure FormCreate(Sender: TObject);
    procedure BGuardarClick(Sender: TObject); override;
    procedure BAyudaClick(Sender: TObject);
  protected
    function validarFormulario: boolean; override;
  private
    Restriccion: TRestriccionErogados;
    centralesAguasArriba: TListaCentralesAguasArriba;
    centralDescarga: TGeneradorHidraulico;
  public
    constructor Create(AOwner: TComponent; cosaConNombre: TCosaConNombre;
      ficha: TFichaLPD; sala: TSalaDeJuego); override;
  end;

var
  EditarFichaRestriccionErogados: TEditarFichaRestriccionErogados;

implementation

uses SimSEEEditMain, uBaseAltasEditores;

  {$R *.lfm}

constructor TEditarFichaRestriccionErogados.Create(AOwner: TComponent;
  cosaConNombre: TCosaConNombre; ficha: TFichaLPD; sala: TSalaDeJuego);
var
  fichaAux: TFichaRestriccionErogados;
  i: integer;
begin
  inherited Create(AOwner, cosaConNombre, ficha, sala);
  Restriccion := cosaConNombre as TRestriccionErogados;

  if (ficha <> nil) then
  begin
    fichaAux := ficha as TFichaRestriccionErogados;
    self.EFIni.Text := FSimSEEEdit.fechaIniToString(fichaAux.fecha);
    self.eAlturaMaxima.text := FloatToStr( fichaAux.hPen );
    self.ePenalidad.text := FloatToStr( fichaAux.CVpen );
    centralesAguasArriba := rbtEditorSala.Clonar_Y_ResolverReferencias(
      fichaAux.centralesAguasArriba) as TListaCentralesAguasArriba;
  end
  else
  begin
    self.EFIni.Text := '';
    self.eAlturaMaxima.text := '';
    self.ePenalidad.text := '';
    centralDescarga := nil;
    centralesAguasArriba := TListaCentralesAguasArriba.Create(0);
  end;
  guardado := True;
end;

function TEditarFichaRestriccionErogados.validarFormulario(): boolean;
begin
  inherited validarFormulario;
  Result := inherited validarEditFecha(EFIni) and
    inherited validarPeriodicidad(CBPeriodicidad, CBLargoPeriodo,
    ELargoPeriodo, EFIniPeriodo, EFFinPeriodo, sgPeriodicidad);
end;


procedure TEditarFichaRestriccionErogados.CambiosForm(Sender: TObject);
begin
  guardado := False;
end;


procedure TEditarFichaRestriccionErogados.sgGetEditText(Sender: TObject;
  ACol, ARow: integer; var Value: string);
begin
  inherited sgGetEditText(Sender, ACol, ARow, Value);
end;


procedure TEditarFichaRestriccionErogados.BEditarCentralesAguasArribaClick(Sender: TObject);
var
  form: TEditarCentralesAguasArriba;
begin
  form := TEditarCentralesAguasArriba.Create(self, Restriccion,
    centralDescarga, centralesAguasArriba, sala);
  if form.ShowModal = mrOk then
  begin
    centralesAguasArriba.Free;
    centralDescarga := form.DarCentralDescarga;
    centralesAguasArriba := form.darCentralesAguasArriba;
  end;
  form.Free;
end;

procedure TEditarFichaRestriccionErogados.FormCloseQuery(Sender: TObject;
  var CanClose: boolean);
begin
  inherited FormCloseQuery(Sender, CanClose);
end;

procedure TEditarFichaRestriccionErogados.FormCreate(Sender: TObject);
var
  fichaAux: TFichaRestriccionErogados;
begin
//  if ficha = nil then
//  begin
//    utilidades.AgregarFormatoFecha(LFIni);
//    self.eAlturaMaxima.Text:= '0';
//    self.ePenalidad.Text:= '0';
//    self.eFIni.Text:='0';
//  end
//  else
//  begin
//    fichaAux := ficha as TFichaRestriccionErogados;
//    utilidades.AgregarFormatoFecha(LFIni);
//    self.eAlturaMaxima.Text := FloatToStr( fichaAux.hMax );
//    self.ePenalidad.Text := FloatToStr( fichaAux.CVpen );
//    self.EFIni.Text := FSimSEEEdit.fechaIniToString(fichaAux.fecha);
//  end;
  utilidades.AgregarFormatoFecha(LFIni);
end;


procedure TEditarFichaRestriccionErogados.BGuardarClick(Sender: TObject);
var
  periodo: TPeriodicidad;
  restrEMax: NReal;
begin
  if validarFormulario then
  begin
    periodo := nil;
    ficha := TFichaRestriccionErogados.Create(capa, StrToFecha(EFIni.Text),
      periodo, StrToFloat( eAlturaMaxima.Text), StrToFloat( ePenalidad.Text),
      centralesAguasArriba);

    ModalResult := mrOk;
  {     end
  else
       begin
       ShowMessage(mesYaExisteFichaEnFecha);
       end     }
  end;
end;


procedure TEditarFichaRestriccionErogados.BAyudaClick(Sender: TObject);
begin
  verdoc( 3828, TRestriccionErogados);
end;

initialization
end.
