unit uEditarFichaForzamientos;


interface

uses
  {$IFDEF WINDOWS}
  Windows,
  {$ENDIF}
  Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, uBaseEditoresFichas, uFechas, Grids, utilidades,
  ExtCtrls, Menus, Buttons, uCosaConNombre, xMatDefs,
  uFichasLPD,
  uForzamientos,
  uActores, uverdoc;

type

  { TEditarFichaForzamientos }

  TEditarFichaForzamientos = class(TBaseEditoresFichas)
    cbActivarForzamiento: TCheckBox;
    CBfijar_P: TCheckBox;
    CB_Pmax_forzamiento: TCheckBox;
    CB_Pmin_forzamiento: TCheckBox;
    e_P_min_forzamiento: TEdit;
    e_P_max_forzamiento: TEdit;
    gbParametrosForzamiento: TGroupBox;
    LDesde: TLabel;
    BGuardar: TButton;
    BCancelar: TButton;
    LNMaquinas_t1: TLabel;
    MainMenu1: TMainMenu;
    e_P_Forzamiento: TEdit;
    BAyuda: TButton;
    Panel1: TPanel;
    procedure BCancelarClick(Sender: TObject);
    procedure BGuardarClick(Sender: TObject); override;
    procedure cbActivarForzamientoChange(Sender: TObject);
    procedure CBfijar_PChange(Sender: TObject);
    procedure CB_Pmax_forzamientoChange(Sender: TObject);
    procedure CB_Pmin_forzamientoChange(Sender: TObject);
    procedure EditEnter(Sender: TObject);
    procedure EditExit(Sender: TObject);
    procedure gbParametrosForzamientoClick(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure sgChequearCambios(Sender: TObject);
    procedure sgGetEditText(Sender: TObject; ACol, ARow: integer; var Value: string);
    procedure sgChequearCambiosKeyDown(Sender: TObject; var Key: word;
      Shift: TShiftState);
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure DTPChange(Sender: TObject);
    procedure cambiosForm(Sender: TObject);
    procedure BAyudaClick(Sender: TObject);
  protected
    function validarFormulario: boolean; override;
  public

    constructor Create(AOwner: TComponent; cosaConNombre: TCosaConNombre;
      ficha: TFichaLPD; fechaIni: TFecha); reintroduce; overload;

  end;

var
  EditarFichaForzamientos: TEditarFichaForzamientos;

implementation

{$R *.lfm}

uses
  SimSEEEditMain;

{
constructor TEditarFichaForzamientos.Create(AOwner: TComponent;
  cosaConNombre: TCosaConNombre; ficha: TFichaLPD; fechaIni: TFecha);
begin
  inherited Create(AOwner, cosaConNombre, ficha, sala);
  cuantasForzamientos := 1;

  if cosaConNombre <> nil then
    self.Caption := 'Editar Forzamientos de ' + cosaConNombre.nombre;

  if fechaIni <> nil then
    self.EFIni.Text := FSimSEEEdit.fechaIniToString(fechaIni);

  if ficha <> nil then
  begin
    self.EFIni.Text := FSimSEEEdit.fechaIniToString(ficha.fecha);
    e_P_Forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P, ';' );//    FloatToStr(TFichaForzamientos(ficha).P[0]);
    e_P_max_forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P_max, ';' ); //FloatToStr(TFichaForzamientos(ficha).P_max);
    e_P_min_forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P_min, ';' ); //FloatToStr(TFichaForzamientos(ficha).P_min);
  end;
end;
 }
constructor TEditarFichaForzamientos.Create(AOwner: TComponent;
  cosaConNombre: TCosaConNombre; ficha: TFichaLPD; fechaIni: TFecha );
begin
  inherited Create(AOwner, cosaConNombre, ficha, sala);

  if cosaConNombre <> nil then
    self.Caption := 'Editar Forzamientos de ' + cosaConNombre.nombre;

  if fechaIni <> nil then
    self.EFIni.Text := FSimSEEEdit.fechaIniToString(fechaIni);


  self.cbActivarForzamiento.Checked := False;


  if ficha <> nil then
  begin
    self.EFIni.Text := FSimSEEEdit.fechaIniToString(ficha.fecha);

    self.cbActivarForzamiento.Checked := TFichaForzamientos(ficha).activar_forzamiento;
    self.CBfijar_P.Checked := TFichaForzamientos(ficha).flg_fijarP;
    self.CB_Pmax_forzamiento.Checked := TFichaForzamientos(ficha).activar_Pmax;
    self.CB_Pmin_forzamiento.Checked := TFichaForzamientos(ficha).activar_Pmin;

    {
    e_P_Forzamiento.Text := FloatToStr(TFichaForzamientos(ficha).P[0]);
    e_P_max_forzamiento.Text := FloatToStr(TFichaForzamientos(ficha).P_min);
    e_P_min_forzamiento.Text := FloatToStr(TFichaForzamientos(ficha).P_min);
     }
    e_P_Forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P, ';' );//    FloatToStr(TFichaForzamientos(ficha).P[0]);
    e_P_max_forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P_max, ';' ); //FloatToStr(TFichaForzamientos(ficha).P_max);
    e_P_min_forzamiento.Text := DAOfNRealToStr_( TFichaForzamientos(ficha).P_min, ';' ); //FloatToStr(TFichaForzamientos(ficha).P_min);

  end;

end;

function TEditarFichaForzamientos.validarFormulario: boolean;
begin
  Result := inherited validarEditFecha(EFIni) and
    inherited validarEditDAOfNReal(e_P_Forzamiento, -1e-20, 1e20, ';') and
    inherited validarEditDAOfNReal(e_P_max_forzamiento, -1e-20, 1e20, ';') and
    inherited validarEditDAOfNReal(e_P_min_forzamiento, -1e-20, 1e20, ';') and
    inherited validarPeriodicidad(CBPeriodicidad, CBLargoPeriodo,
    ELargoPeriodo, EFIniPeriodo, EFFinPeriodo, sgPeriodicidad);
end;

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

procedure TEditarFichaForzamientos.BGuardarClick(Sender: TObject);
var
  periodicidad: TPeriodicidad;
begin
  if validarFormulario then
  begin
    if CBPeriodicidad.Checked then
      periodicidad := inherited darPeriodicidad(CBLargoPeriodo,
        ELargoPeriodo, EFIniPeriodo, EFFinPeriodo, sgPeriodicidad)
    else
      periodicidad := nil;


    ficha := TFichaForzamientos.Create(
      capa, StrToFecha(EFIni.Text),
      periodicidad, cbActivarForzamiento.Checked,
      StrToDAOfNReal_( e_P_Forzamiento.text, ';'),
      CB_Pmax_forzamiento.Checked, CB_Pmin_forzamiento.Checked, CBfijar_P.Checked,
      StrToDAOfNReal_( e_P_max_forzamiento.Text, ';'),
      StrToDAOfNReal_( e_P_min_forzamiento.Text, ';') );

    ModalResult := mrOk;
  end;
end;

procedure TEditarFichaForzamientos.cbActivarForzamientoChange(Sender: TObject);
begin

end;

procedure TEditarFichaForzamientos.CBfijar_PChange(Sender: TObject);
begin
  if TCheckBox(Sender).Checked then
  begin
    e_P_max_forzamiento.Enabled := not (TCheckBox(Sender).Checked);
    e_P_min_forzamiento.Enabled := not (TCheckBox(Sender).Checked);
  end
  else
  begin
    e_P_max_forzamiento.Enabled := (TCheckBox(CB_Pmax_forzamiento).Checked);
    e_P_min_forzamiento.Enabled := (TCheckBox(CB_Pmin_forzamiento).Checked);
  end;

  CB_Pmax_forzamiento.Enabled := not (TCheckBox(Sender).Checked);
  CB_Pmin_forzamiento.Enabled := not (TCheckBox(Sender).Checked);
  e_P_Forzamiento.Enabled := TCheckBox(Sender).Checked;

  guardado := False;
end;

procedure TEditarFichaForzamientos.CB_Pmax_forzamientoChange(Sender: TObject);
begin
  e_P_max_forzamiento.Enabled := TCheckBox(Sender).Checked;
end;

procedure TEditarFichaForzamientos.CB_Pmin_forzamientoChange(Sender: TObject);
begin
  e_P_min_forzamiento.Enabled := TCheckBox(Sender).Checked;
end;

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

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

procedure TEditarFichaForzamientos.gbParametrosForzamientoClick(Sender: TObject);
begin

end;

procedure TEditarFichaForzamientos.Panel1Click(Sender: TObject);
begin

end;

procedure TEditarFichaForzamientos.sgChequearCambios(Sender: TObject);
begin
  inherited sgChequearCambios(TStringGrid(Sender));
end;

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

procedure TEditarFichaForzamientos.sgChequearCambiosKeyDown(Sender: TObject;
  var Key: word; Shift: TShiftState);
begin
  inherited sgChequearCambiosKeyDown(Sender, Key, Shift);
end;

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


procedure TEditarFichaForzamientos.DTPChange(Sender: TObject);
begin
  inherited DTPChange(Sender);
end;

procedure TEditarFichaForzamientos.cambiosForm(Sender: TObject);
begin
  inherited cambiosForm(Sender);
end;

procedure TEditarFichaForzamientos.BAyudaClick(Sender: TObject);
begin
  verdoc( 3826, TFichaForzamientos);
end;

end.
