unit uEditarFichaFuenteCombinacion;

interface

uses
  {$IFDEF WINDOWS}
   Windows,
   {$ELSE}
   LCLType,
   {$ENDIF}
 SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls, Grids, Buttons, uBaseEditoresFichas, uCosaConNombre,
 uFichasLPD, uSalasDeJuego, uFuenteCombinacion, uConstantesSimSEE,
 utilidades, uVerdoc, uFechas;

type

  { TEditarFichaFuenteCombinacion }

  TEditarFichaFuenteCombinacion = class(TBaseEditoresFichas)
    BAyuda: TButton;
    BCancelar: TButton;
    BGuardar: TButton;
    CBBorneA: TComboBox;
    CBBorneB: TComboBox;
    CBFuenteA: TComboBox;
    CBFuenteB: TComboBox;
    e_a: TLabeledEdit;
    e_b: TLabeledEdit;
    l_a: TLabel;
    LBorneA: TLabel;
    LBorneB: TLabel;
    LFuenteA: TLabel;
    LFuenteB: TLabel;
    l_b: TLabel;
    Panel1: TPanel;
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure FormCreate(Sender: TObject);
    procedure BAyudaClick(Sender: TObject);
    procedure EditIntExit(Sender: TObject);
    procedure sgChequearCambios(Sender: TObject);
    procedure CBFuenteAChange(Sender: TObject);
    procedure CBFuenteBChange(Sender: TObject);
    procedure BCancelarClick(Sender: TObject);
    procedure BGuardarClick(Sender: TObject); override;
    procedure CBLargoPeriodoChange(Sender: TObject);
    procedure cambiosForm(Sender: TObject);
    procedure CBBorneBChange(Sender: TObject);
  private
  protected
    function validarCoeficientes: boolean;

    function validarFormulario: boolean; override;
  public
    constructor Create(AOwner: TComponent; cosaConNombre: TCosaConNombre;
      ficha: TFichaLPD; sala: TSalaDeJuego); override;
  end;

implementation

  {$R *.lfm}

procedure TEditarFichaFuenteCombinacion.BAyudaClick(Sender: TObject);
begin
  verdoc( 3827, TFuenteCombinacion);
end;

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

procedure TEditarFichaFuenteCombinacion.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 := TFichaFuenteCombinacion.Create(capa, TFecha.Create_Str(EFIni.Text),
      periodicidad, StrToFloat( e_a.text ),
      StrToFloat( e_b.text ),
      valorCBFuente(CBFuenteA),
      valorCBFuente(CBFuenteB), valorCBString(
      CBBorneA), valorCBString(CBBorneB));
    modalResult := mrOk;
  end;
end;

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

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

procedure TEditarFichaFuenteCombinacion.CBFuenteAChange(Sender: TObject);
begin
  inherited cbFuenteChange(CBFuenteA, CBBorneA);
end;

procedure TEditarFichaFuenteCombinacion.CBFuenteBChange(Sender: TObject);
begin
  inherited cbFuenteChange(CBFuenteB, CBBorneB);
end;

procedure TEditarFichaFuenteCombinacion.CBLargoPeriodoChange(Sender: TObject);
begin
  guardado := False;
end;

constructor TEditarFichaFuenteCombinacion.Create(AOwner: TComponent;
  cosaConNombre: TCosaConNombre; ficha: TFichaLPD; sala: TSalaDeJuego);
begin
  inherited Create(AOwner, cosaConNombre, ficha, sala);

  inicializarCBFuente(CBFuenteA, CBBorneA, False);
  inicializarCBFuente(CBFuenteB, CBBorneB, False);

  if ficha <> nil then
  begin
    EFIni.Text := ficha.fecha.AsStr;
    e_a.text := FloatToStrF(TFichaFuenteCombinacion(ficha).a,
      ffGeneral, CF_PRECISION, CF_DECIMALES);
    e_b.text := FloatToStrF(TFichaFuenteCombinacion(ficha).b,
      ffGeneral, CF_PRECISION, CF_DECIMALES);

    inherited setCBFuente(CBFuenteA, CBBorneA, TFichaFuenteCombinacion(ficha).fuenteA,
      TFichaFuenteCombinacion(ficha).borneA);
    inherited setCBFuente(CBFuenteB, CBBorneB, TFichaFuenteCombinacion(ficha).fuenteB,
      TFichaFuenteCombinacion(ficha).borneB);
  end;
end;

procedure TEditarFichaFuenteCombinacion.EditIntExit(Sender: TObject);
begin
  inherited EditIntExit(Sender, 1, MAXINT);
end;

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

procedure TEditarFichaFuenteCombinacion.FormCreate(Sender: TObject);
begin
  utilidades.AgregarFormatoFecha(LFIni);
end;


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

function TEditarFichaFuenteCombinacion.validarCoeficientes: boolean;
begin
  Result := inherited validarEditFloat( e_a ) and validarEditFloat( e_b );
end;

function TEditarFichaFuenteCombinacion.validarFormulario: boolean;
begin
  Result := inherited validarFormulario and validarEditFecha(EFIni) and
    inherited validarPeriodicidad(CBPeriodicidad, CBLargoPeriodo,
    ELargoPeriodo, EFIniPeriodo, EFFinPeriodo, sgPeriodicidad) and
    validarCoeficientes and inherited validarCBFuente(
    CBFuenteA, CBBorneA, 0) and inherited validarCBFuente(CBFuenteB, CBBorneB, 0);
end;

end.
