unit U_GridStep;

interface

uses
  Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, cxControls,
  cxContainer, cxEdit, cxTextEdit, cxMaskEdit, siComp, siLngLnk, cxGraphics,
  cxLookAndFeels, Menus;

type
  TF_GridStep = class(TForm)
    bOK: TcxButton;
    bCancel: TcxButton;
    edStepGrid: TcxMaskEdit;
    Label1: TLabel;
    lng_Forms: TsiLangLinked;
    procedure bCancelClick(Sender: TObject);
    procedure bOKClick(Sender: TObject);
    procedure edStepGridKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure edStepGridExit(Sender: TObject);
  private
    { Private declarations }
  public
    CurrentGridStep: string;
    { Public declarations }
  end;

var
  F_GridStep: TF_GridStep;

implementation
uses USCS_Main, U_CAD, U_Common, U_BaseCommon, U_Constants;
{$R *.dfm}

procedure TF_GridStep.bCancelClick(Sender: TObject);
begin
  try
    Close;
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.bCancelClick', E.Message);
  end;
end;

procedure TF_GridStep.bOKClick(Sender: TObject);
var
  Val: Double;
begin
  try
    Val := StrToFloat_My(edStepGrid.Text);
    if Val = 0 then
      Val := 0.1;
    GCadForm.PCad.GridStep := Val;
    if not GProjectChanged then // Tolik 28/08/2019 --
      SetProjectChanged(True);
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.bOKClick', E.Message);
  end;
end;

procedure TF_GridStep.edStepGridKeyPress(Sender: TObject; var Key: Char);
begin
  try
    if (Key = '.') or (Key = ',') then
      if Key <> DecimalSeparator then
        Key := #0;

    if Key = #13 then
    begin
      bOK.SetFocus;
      bOK.Click;
    end;
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.edStepGridKeyPress', E.Message);
  end;
end;

procedure TF_GridStep.FormShow(Sender: TObject);
begin
  try
    // EditMask
    edStepGrid.Properties.EditMask := '[0-4]' + DecimalSeparator + '[1-9]|[1-5]' + DecimalSeparator + '[0]';
    edStepGrid.Text := FormatFloat(ffMask, GCadForm.PCad.GridStep);
    CurrentGridStep := edStepGrid.Text;
    edStepGrid.SetFocus;
    edStepGrid.SelStart := 0;
    edStepGrid.SelLength := Length(edStepGrid.Text) + 1;
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.FormShow', E.Message);
  end;
end;

procedure TF_GridStep.FormKeyPress(Sender: TObject; var Key: Char);
begin
  try
    if Key = #27 then
      Close;
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.FormKeyPress', E.Message);
  end;
end;

procedure TF_GridStep.edStepGridExit(Sender: TObject);
begin
  try
    if edStepGrid.Text = '' then
      edStepGrid.Text := CurrentGridStep;
  except
    on E: Exception do AddExceptionToLogEx('TF_GridStep.edStepGridExit', E.Message);
  end;
end;

end.
