//kt -- Modified with SourceScanner on 7/15/2007
unit fDateRange;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  fAutoSz, ORCtrls, StdCtrls, ORFn, ORDtTm, DKLang;

type
  TfrmDateRange = class(TfrmAutoSz)
    txtStart: TORDateBox;
    txtStop: TORDateBox;
    lblStart: TLabel;
    lblStop: TLabel;
    cmdOK: TButton;
    cmdCancel: TButton;
    lblInstruct: TOROffsetLabel;
    DKLanguageController2: TDKLanguageController;
    procedure cmdOKClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    //kt Begin Mod (change Consts to Vars) 7/15/2007
    TX_INVALID_DATE  : string;  //kt
    TC_INVALID_DATE  : string;  //kt
    //kt End Mod -------------------
    OKPressed: Boolean;
    Flags: string;
    procedure SetupVars;  //kt 7-15-07
  end;

function ExecuteDateRange(var Start, Stop: string; const AFlag, ATitle, Instruct,
  StartLabel, StopLabel: string): Boolean;

implementation

{$R *.DFM}

uses rCore;

//const
//TX_INVALID_DATE = 'The date/time entered could not be validated.';  <-- original line.  //kt 7/15/2007
//TC_INVALID_DATE = 'Unable to interpret date/time entry.';  <-- original line.  //kt 7/15/2007

procedure TfrmDateRange.SetupVars;
//kt Added entire function to replace constant declarations 7/15/2007
begin
  TX_INVALID_DATE := DKLangConstW('fDateRange_The_datetime_entered_could_not_be_validated'); 
  TC_INVALID_DATE := DKLangConstW('fDateRange_Unable_to_interpret_datetime_entry'); 
end;
 
function ExecuteDateRange(var Start, Stop: string; const AFlag, ATitle, Instruct,
  StartLabel, StopLabel: string): Boolean;
var
  frmDateRange: TfrmDateRange;
begin
  Result := False;
  frmDateRange := TfrmDateRange.Create(Application);
  try
    ResizeFormToFont(TForm(frmDateRange));
    with frmDateRange do
    begin
      if Flags      <> '' then Flags := AFlag;
      if ATitle     <> '' then Caption := ATitle;
      if Instruct   <> '' then lblInstruct.Caption := Instruct;
      if StartLabel <> '' then lblStart.Caption := StartLabel;
      if StopLabel  <> '' then lblStop.Caption := StopLabel;
      txtStart.Text := Start;
      txtStop.Text  := Stop;
      ShowModal;
      if OKPressed then
      begin
        Start := txtStart.Text;
        Stop  := txtStop.Text;
        Result := True;
      end;
    end;
  finally
    frmDateRange.Release;
  end;
end;

procedure TfrmDateRange.FormCreate(Sender: TObject);
begin
  inherited;
  OKPressed := False;
end;

procedure TfrmDateRange.cmdOKClick(Sender: TObject);
//const
//TX_BAD_START   = 'The start date is not valid.';  <-- original line.  //kt 7/15/2007
//TX_BAD_STOP    = 'The stop date is not valid.';  <-- original line.  //kt 7/15/2007
//TX_STOPSTART   = 'The stop date must be after the start date.';  <-- original line.  //kt 7/15/2007
var
  x, ErrMsg: string;
  TX_BAD_START   : string;
  TX_BAD_STOP    : string;
  TX_STOPSTART   : string;

begin
  SetupVars;  //kt added 7/15/2007 to replace constants with vars.
  TX_BAD_START   := DKLangConstW('fDateRange_The_start_date_is_not_valid'); //kt added 7/15/2007
  TX_BAD_STOP    := DKLangConstW('fDateRange_The_stop_date_is_not_valid'); //kt added 7/15/2007
  TX_STOPSTART   := DKLangConstW('fDateRange_The_stop_date_must_be_after_the_start_date'); //kt added 7/15/2007
  inherited;
  ErrMsg := '';
  txtStart.Validate(x);
  if Length(x) > 0   then ErrMsg := ErrMsg + TX_BAD_START + CRLF;
  with txtStop do
  begin
    Validate(x);
    if Length(x) > 0 then ErrMsg := ErrMsg + TX_BAD_STOP + CRLF;
    if (Length(Text) > 0) and (FMDateTime <= txtStart.FMDateTime)
                     then ErrMsg := ErrMsg + TX_STOPSTART;
  end;
  if Length(ErrMsg) > 0 then
  begin
    InfoBox(ErrMsg, TC_INVALID_DATE, MB_OK);
    Exit;
  end;

//  if ((Length(txtStart.Text) > 0) and (ValidDateTimeStr(txtStart.Text, Flags) < 0))
//  or ((Length(txtStop.Text)  > 0) and (ValidDateTimeStr(txtStop.Text, Flags)  < 0)) then
//  begin
//    InfoBox(TX_INVALID_DATE, TC_INVALID_DATE, MB_OK);
//    Exit;
//  end;

  OKPressed := True;
  Close;
end;

procedure TfrmDateRange.cmdCancelClick(Sender: TObject);
begin
  inherited;
  Close;
end;

end.
