expertcad/SRC/Main/U_DimLineDialog.pas
2025-05-12 10:07:51 +03:00

133 lines
3.8 KiB
ObjectPascal

unit U_DimLineDialog;
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_DimLineDialog = class(TForm)
edDimValue: TcxMaskEdit;
bOK: TcxButton;
bCancel: TcxButton;
Label1: TLabel;
lbMessage: TLabel;
lng_Forms: TsiLangLinked;
procedure bCancelClick(Sender: TObject);
procedure edDimValueExit(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure edDimValueKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
ResValM: Double;
function Execute(const aCaption, aPrompt: string; AValM: Double): Boolean;
end;
var
F_DimLineDialog: TF_DimLineDialog;
implementation
uses U_BaseCommon, U_Constants, U_Common;
{$R *.dfm}
procedure TF_DimLineDialog.bCancelClick(Sender: TObject);
begin
try
Close;
except
on E: Exception do AddExceptionToLogEx('TF_DimLineDialog.bCancelClick', E.Message);
end;
end;
procedure TF_DimLineDialog.edDimValueExit(Sender: TObject);
begin
try
if edDimValue.Text = '' then
edDimValue.Text := '0';
except
on E: Exception do AddExceptionToLogEx('TF_DimLineDialog.edDimValueExit', E.Message);
end;
end;
procedure TF_DimLineDialog.FormShow(Sender: TObject);
begin
try
//Tolik 21/01/2022 -- òóò âìåñòî îáîçíà÷åíèÿ âûâåäåì íàèìåíîâàíèå åäèíèöû èçìåðåíèÿ
// (Ðîìà ñêàçàë, à òî îáîçíà÷åíèÿ ôóòà, íàïðèìåð êàà àïîñòðîô - íè õðåíà íå âèäíî
// è íå èíôîðìàòèâíî äëÿ ïîëüçîâàòåëÿ)
// ñèñòåìà èçìåðåíèé
{
if GCurrProjUnitOfMeasure = umSM then
Label1.Caption := cMetric_sm;
if GCurrProjUnitOfMeasure = umM then
Label1.Caption := cMetric_m;
if GCurrProjUnitOfMeasure = umIn then
Label1.Caption := cWhitworth_in;
if GCurrProjUnitOfMeasure = umFt then
Label1.Caption := cWhitworth_ft;
}
{
if GCurrProjUnitOfMeasure = umSM then
Label1.Caption := fMetric_sm;
if GCurrProjUnitOfMeasure = umM then
Label1.Caption := fMetric_m;
if GCurrProjUnitOfMeasure = umIn then
Label1.Caption := fWhitworth_in;
if GCurrProjUnitOfMeasure = umFt then
Label1.Caption := fWhitworth_ft;
}
Label1.Caption := GetNormalSTRUom;
//
// EditMask
edDimValue.Properties.EditMask := '\d?\d?\d?\d?\d?' + DecimalSeparator + '\d?\d?\d?';
edDimValue.SetFocus;
edDimValue.SelStart := 0;
edDimValue.SelLength := Length(edDimValue.Text) + 1;
except
on E: Exception do AddExceptionToLogEx('TF_DimLineDialog.FormShow', E.Message);
end;
end;
procedure TF_DimLineDialog.edDimValueKeyPress(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_DimLineDialog.edDimValueKeyPress', E.Message);
end;
end;
function TF_DimLineDialog.Execute(const aCaption, aPrompt: string; AValM: Double): Boolean;
begin
Result := false;
ResValM := 0;
Caption := aCaption;
lbMessage.Caption := aPrompt;
//Tolik 13/10/2020 --
//edDimValue.Properties.EditMask := '\d?\d?\d?' + DecimalSeparator + '\d?\d?';
edDimValue.Properties.EditMask := '\d?\d?\d?\d?\d?\d?' + DecimalSeparator + '\d?\d?\d?';
//edDimValue.Text := FormatFloat(ffMask, MetreToUOM(AValM));
edDimValue.Text := FormatFloat('0.000', MetreToUOM(AValM));
//
if ShowModal = mrOk then
begin
Result := true;
ResValM := UOMToMetre(StrToFloat_My(edDimValue.Text));
end;
end;
end.