unit ueditarfichafuenteoperacionmultifuente;

interface

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

type

  { TEditarFichaFuenteOperacionMultiFuente }

  TEditarFichaFuenteOperacionMultiFuente = class(TBaseEditoresFichas)
    BAyuda: TButton;
    BCancelar: TButton;
    BGuardar: TButton;
    GroupBox1: TGroupBox;
    Panel2: TPanel;
    eExpresion: TSynEdit;
    SynPasSyn1: TSynPasSyn;
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure FormCreate(Sender: TObject);
    procedure BAyudaClick(Sender: TObject);
    procedure EditIntExit(Sender: TObject);
    procedure sgChequearCambios(Sender: TObject);
    procedure BCancelarClick(Sender: TObject);
    procedure BGuardarClick(Sender: TObject); override;
    procedure cambiosForm(Sender: TObject);
    procedure CBBorneBChange(Sender: TObject);
  private
  protected

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

  end;

implementation

  {$R *.lfm}

procedure TEditarFichaFuenteOperacionMultiFuente.BAyudaClick(Sender: TObject);
begin
  verdoc( 3827, TFuenteOperacionMultiFuente);
end;

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

procedure TEditarFichaFuenteOperacionMultiFuente.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 := TFichaFuenteOperacionMultiFuente.Create(
      capa, TFecha.Create_Str(EFIni.Text), periodicidad,
      eExpresion.Lines.DelimitedText);

    modalResult := mrOk;
  end;
end;

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

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

constructor TEditarFichaFuenteOperacionMultiFuente.Create(AOwner: TComponent;
  cosaConNombre: TCosaConNombre; ficha: TFichaLPD; sala: TSalaDeJuego);
var
  s: string;
  k: integer;
begin
  inherited Create(AOwner, cosaConNombre, ficha, sala);
  eExpresion.Lines.Delimiter:= '|';
  if ficha <> nil then
  begin
    eExpresion.Lines.Assign( TFichaFuenteOperacionMultiFuente(ficha).getLines );
    EFIni.Text := ficha.fecha.AsStr;
  end
  else
  begin
    EFIni.Text := 'auto';
    eExpresion.Text := '';
  end;
end;


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


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


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


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

function TEditarFichaFuenteOperacionMultiFuente.validarFormulario: boolean;
begin
  Result := inherited validarFormulario;
  // aquí podríamos testear que estén definidas todas las salidas y avisar si
  // alguna entrada no está utilizada.
end;

end.
