unit U_Scale;

interface

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

type
  TF_Scale = class(TForm)
    bOK: TcxButton;
    bCancel: TcxButton;
    edScale: TcxMaskEdit;
    lng_Forms: TsiLangLinked;
    procedure bOKClick(Sender: TObject);
    procedure bCancelClick(Sender: TObject);
    procedure edScaleKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure edScaleExit(Sender: TObject);
  private
    { Private declarations }
  public
    CurrentMapScale: string;
    { Public declarations }
  end;

var
  F_Scale: TF_Scale;

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

procedure TF_Scale.bOKClick(Sender: TObject);
var
  Val: Integer;
begin
  try
    Val := StrToInt(edScale.Text);
    if Val < 50 then
      Val := 50;
    //16.12.2011 if Val > 3000 then
    //16.12.2011   Val := 3000;
    if Val > GCadForm.PCad.MaxScale then //16.12.2011
      Val := GCadForm.PCad.MaxScale;
    GCadForm.PCad.MapScale := Val;
    if not GProjectChanged then // Tolik 28/08/2019 --
      SetProjectChanged(True);
  except
    on E: Exception do AddExceptionToLogEx('TF_Scale.bOKClick', E.Message);
  end;
end;

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

procedure TF_Scale.edScaleKeyPress(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_Scale.edScaleKeyPress', E.Message);
  end;
end;

procedure TF_Scale.FormShow(Sender: TObject);
begin
  try
    // MaskEdit
    edScale.Properties.EditMask := '\d?\d?\d?\d?';
    edScale.Text := FloatToStr(GCadForm.PCad.MapScale);
    CurrentMapScale := edScale.Text;
    edScale.SetFocus;
    edScale.SelStart := 0;
    edScale.SelLength := Length(edScale.Text) + 1;
  except
    on E: Exception do AddExceptionToLogEx('TF_Scale.FormShow', E.Message);
  end;
end;

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

procedure TF_Scale.edScaleExit(Sender: TObject);
begin
  try
    if edScale.Text = '' then
      edScale.Text := CurrentMapScale;
  except
    on E: Exception do AddExceptionToLogEx('TF_Scale.edScaleExit', E.Message);
  end;
end;

end.
