unit uEditarTRestriccionErogados;

  {$MODE Delphi}

interface

uses
  {$IFDEF WINDOWS}
  Windows,
  {$ENDIF}
  Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids, Buttons,
  uEditarActorConFichas,
  uFichasLPD,
  uBaseEditoresActores,
  uBaseEditoresCosasConNombre,
  uSalasDeJuego,
  uCosaConNombre,
  utilidades,
  uOpcionesSimSEEEdit,
  uverdoc,
  uConstantesSimSEE,
  xMatDefs,
//  uresourcestring,
  {$IFDEF RESTRICCIONES_EROGADOS}
  uRestriccionErogados;
  {$ENDIF}
type

  { TEditarTRestriccionErogados }

  TEditarTRestriccionErogados = class(TEditarActorConFichas)
    BAgregarFicha: TButton;
    BAyuda: TButton;
    BCancelar: TButton;
    BGuardar: TButton;
    BVerExpandida: TButton;
    CBBorne: TComboBox;
    CBFuente: TComboBox;
    CBNodo: TComboBox;
    EditNombre: TEdit;
    e_H0: TEdit;
    e_NDisc: TEdit;
    e_Hmin: TEdit;
    e_Hmax: TEdit;
    e_K0: TEdit;
    e_Kmem: TEdit;
    gbFichas: TGroupBox;
    gbFuente: TGroupBox;
    GBoxParamsCota: TGroupBox;
    GBoxParamsSys: TGroupBox;
    LBorne: TLabel;
    lbo_H0: TLabel;
    lbo_Hmin: TLabel;
    lbo_Hmax: TLabel;
    lbo_K0: TLabel;
    lbo_Kmem: TLabel;
    LFuenteDeAportes: TLabel;
    LFuenteDeRuido: TLabel;
    LNodo: TLabel;
    LNDiscretizaciones: TLabel;
    LNombre: TLabel;
    Panel1: TPanel;
    panelLateral: TPanel;
    penelIzquierdo: TPanel;
    sgFichas: TStringGrid;
    procedure btNubeseableClick(Sender: TObject);
    procedure EditEnter(Sender: TObject);
    procedure EditExit(Sender: TObject);
    procedure BAyudaClick(Sender: TObject);
    procedure CBNodoChange(Sender: TObject);
    procedure CBFuenteChange(Sender: TObject);
    procedure CBBorneChange(Sender: TObject);
    procedure BCancelarClick(Sender: TObject);
    procedure sgGetEditText(Sender: TObject; ACol, ARow: integer;
      var Value: string);
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure BGuardarClick(Sender: TObject); override;
    procedure EnabledForm(xenabled:Boolean); override;
  private
    { Private declarations }
  public
    constructor Create(AOwner: TComponent; sala: TSalaDeJuego;
      tipoCosa: TClass; cosaConNombre: TCosaConNombre); override;
    function validarFormulario: boolean; override;
  end;

implementation

uses SimSEEEditMain;

  {$R *.lfm}

constructor TEditarTRestriccionErogados.Create(AOwner: TComponent;
  sala: TSalaDeJuego; tipoCosa: TClass; cosaConNombre: TCosaConNombre);
var
  actor: TRestriccionErogados;
begin
  inherited Create(AOwner, sala, tipoCosa, cosaConNombre);

  inicializarCBNodos(CBNodo, False);
  inicializarCBFuente(CBFuente, CBBorne, False);

  if cosaConNombre <> nil then
  begin
    actor := TRestriccionErogados(cosaConNombre);
    inicializarComponentesLPD(actor.lpd, TFichaRestriccionErogados, sgFichas,
      BAgregarFicha, BVerExpandida, BGuardar, BCancelar);

    EditNombre.Text := actor.nombre;
    setCBNodo(CBNodo, actor.Nodo);
    setCBFuente(CBFuente, CBBorne, actor.fuenteDeRuido, actor.nombreBorne);
    e_Kmem.Text:= FloatToStr( actor.K_m );
    e_K0.Text:= FloatToStr( actor.K_0 );
    e_H0.Text:= FloatToStr( actor.hini );
    e_Hmin.Text:= FloatToStr( actor.hMinimo );
    e_Hmax.Text:= FloatToStr( actor.hMaximo );
    e_NDisc.Text:= FloatToStr( actor.NumDisc );
    EnabledForm(not(actor.flg_nubeseable));
    guardado := True;
  end
  else
  begin
    inicializarComponentesLPD(nil, TFichaRestriccionErogados, sgFichas,
      BAgregarFicha, BVerExpandida, BGuardar, BCancelar);
    e_Kmem.Text := '0';
    e_K0.Text := '0';
    e_H0.Text := '0';
    e_NDisc.Text := '1';
    e_Hmax.Text := '0';
    e_Hmin.Text := '0';
    guardado := False;
  end;

end;

function TEditarTRestriccionErogados.validarFormulario: boolean;
begin
  Result := inherited validarFormulario and inherited  validarNombre(EditNombre) and
    inherited validarCBNodo(CBNodo) and inherited validarCBFuente(
    CBFuente, CBBorne, 0);
end;

procedure TEditarTRestriccionErogados.BAyudaClick(Sender: TObject);
begin
  uverdoc.verdoc( 3828, tipoCosa);
end;

procedure TEditarTRestriccionErogados.BCancelarClick(Sender: TObject);
begin
  inherited BCancelarClick(Sender);
end;

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

procedure TEditarTRestriccionErogados.BGuardarClick(Sender: TObject);
var
  actor: TRestriccionErogados;
begin
  if validarFormulario then
  begin
    if cosaConNombre = nil then
    begin
      cosaConNombre := TRestriccionErogados.Create(capa, EditNombre.Text, nil,
        nil, lpdUnidades, lpd, valorCBNodo(CBNodo),valorCBFuente(CBFuente),
        valorCBString(CBBorne), StrToFloat(e_Kmem.text), StrToFloat(e_K0.Text),
        StrToFloat(e_H0.Text), StrToInt(e_NDisc.Text), StrToFloat(e_Hmin.Text),
        StrToFloat(e_Hmax.Text));

      actor := TRestriccionErogados(cosaConNombre);
    end
    else
    begin
      actor := TRestriccionErogados(cosaConNombre);
      actor.hini := StrToFloat(e_H0.Text);
      actor.K_m := StrToFloat(e_Kmem.text);
      actor.K_0 := StrToFloat(e_K0.text);
      actor.hMaximo := StrToFloat(e_Hmax.text);
      actor.hMinimo := StrToFloat(e_Hmin.text);
      actor.NumDisc := StrToInt(e_NDisc.text);
      actor.nombre := EditNombre.Text;
      actor.lpdUnidades.Free;
      actor.lpdUnidades := lpdUnidades;
      actor.lpd.Free;
      actor.lpd := lpd;
      actor.nodo := valorCBNodo(CBNodo);
      actor.flg_CalcularGradienteDeInversion := false;
      actor.fuenteDeRuido := valorCBFuente(CBFuente);
      actor.nombreBorne := valorCBString(CBBorne);
      actor.LowCostMustRun_ := false;
      actor.CleanDevelopmentMechanism := false;
      actor.fuenteInidicePrecios := nil;
      actor.nombreBorneIndicePrecios := '';
    end;
    actor.lpdForzamientos := lpdForzamientos_;
    ModalResult := mrOk;
  end;
end;


procedure TEditarTRestriccionErogados.EnabledForm(xenabled: Boolean);
begin
  inherited EnabledForm(xenabled);

    BGuardar.Enabled:=xenabled;
end;

procedure TEditarTRestriccionErogados.CBBorneChange(Sender: TObject);
begin
  inherited CBBorneChange(CBFuente, CBBorne);
end;

procedure TEditarTRestriccionErogados.CBFuenteChange(Sender: TObject);
begin
  inherited CBFuenteChange(Sender, CBBorne);
end;

procedure TEditarTRestriccionErogados.CBNodoChange(Sender: TObject);
begin
  inherited CBNodoChange(Sender, True);
end;

procedure TEditarTRestriccionErogados.EditEnter(Sender: TObject);
begin
  inherited EditEnter(Sender);
end;

procedure TEditarTRestriccionErogados.btNubeseableClick(Sender: TObject);
begin
  inherited btNubeseableClick(Sender);
  EnabledForm(not(indice_icono_nubeseable=9));
  if indice_icono_nubeseable=9 then
  begin
    BGuardarClick(Sender);
    guardado:=true;
  end;
end;

procedure TEditarTRestriccionErogados.EditExit(Sender: TObject);
begin
  inherited EditExit(Sender);
end;

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


end.
