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

235 lines
6.4 KiB
ObjectPascal
Raw Blame History

unit U_ArchWallParams;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
U_BaseCommon, U_BaseConstants, U_ArchCommon, RzButton, ExtCtrls, RzPanel,
siComp, siLngLnk, Mask, RzEdit, RzRadChk;
type
TF_ArchWallParams = class(TForm)
pnOkCancel: TRzPanel;
btOk: TRzBitBtn;
btCancel: TRzBitBtn;
lng_Forms: TsiLangLinked;
pnParams: TRzPanel;
lbCoordz: TLabel;
lbHeight: TLabel;
fCoordz: TRzNumericEdit;
fHeight: TRzNumericEdit;
lbThickness: TLabel;
fThickness: TRzNumericEdit;
lbWidth: TLabel;
fWidth: TRzNumericEdit;
lbWidthOut: TLabel;
fWidthOut: TRzNumericEdit;
pnBasement: TRzPanel;
fBasement: TRzCheckBox;
gbBasement: TRzGroupBox;
lbBasementThickness: TLabel;
fBasementThickness: TRzNumericEdit;
lbBasementDepth: TLabel;
fBasementDepth: TRzNumericEdit;
RzGroupBox2: TRzGroupBox;
lbPlinthThickness: TLabel;
fPlinthThickness: TRzNumericEdit;
lbPlinthHeight: TLabel;
fPlinthHeight: TRzNumericEdit;
RzGroupBox3: TRzGroupBox;
lbBasementColumnCount: TLabel;
fBasementColumnCount: TRzNumericEdit;
lbBasementColumnH: TLabel;
fBasementColumnH: TRzNumericEdit;
lbBasementColumnW: TLabel;
fBasementColumnW: TRzNumericEdit;
lbBasementColumnL: TLabel;
fBasementColumnL: TRzNumericEdit;
pnMain: TRzPanel;
lbGroupName: TLabel;
fGroupName: TRzEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure pnOkCancelResize(Sender: TObject);
procedure fBasementClick(Sender: TObject);
private
GForm: TForm;
FPropsUOM: TStringList;
FType: Integer;
procedure SetCaptions;
procedure SetControls;
public
Constructor Create(AOwner: TComponent; AForm: TForm);
Destructor Destroy; override;
function Execute(AType: Integer; AArchWndInfo: TComponent; AIsArc: Boolean): TArchInfoBasic;
published
property PropMainForm: TForm read GForm;
property PropsUOM: TStringList read FPropsUOM;
end;
function ShowArchWallParams(AType: Integer; AArchWndInfo: TComponent; AIsArc: Boolean): TArchInfoBasic;
var
F_ArchWallParams: TF_ArchWallParams;
implementation
Uses U_Main;
{$R *.dfm}
constructor TF_ArchWallParams.Create(AOwner: TComponent; AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
end;
destructor TF_ArchWallParams.Destroy;
begin
inherited;
end;
function TF_ArchWallParams.Execute(AType: Integer; AArchWndInfo: TComponent; AIsArc: Boolean): TArchInfoBasic;
var
Info: TArchInfoBasic;
begin
Result := nil;
FType := AType;
lbWidth.Visible := True;
fWidth.Visible := true;
fWidth.Enabled := true;
SetCaptions;
SetControls;
fWidth.ReadOnly := AIsArc;
fWidthOut.ReadOnly := AIsArc;
Info := CreateArchSegmentInfo(AType);
if AArchWndInfo <> nil then
Info.Assign(AArchWndInfo)
else
begin
if Info is TArchWallInfo then
begin
TArchWallInfo(Info).Height := 1.5;
TArchWallInfo(Info).Width := 1;
TArchWallInfo(Info).Thickness := 0.4;
if Info is TArchWallDivInfo then
TArchWallDivInfo(Info).Coordz := 0;
end
else if Info is TArchRoofHipInfo then
begin
TArchRoofHipInfo(Info).Height := 2;
TArchRoofHipInfo(Info).Length := 1;
end;
end;
ObjectPropsToForm(Info, Self);
if Info is TArchRoofHipInfo then
begin
lbWidth.Caption := cArchParams_Msg01 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
fWidth.Value := FloatInUOM(TArchRoofHipInfo(Info).LengthProj, umM, TF_Main(GForm).FUOM);
lbWidth.Visible := false; //10.05.2012 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
fWidth.Visible := false; //10.05.2012 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
end;
Info.Free;
if ShowModal = mrOk then
begin
Result := CreateArchSegmentInfo(AType);
ObjectPropsFromForm(Result, Self);
if Result is TArchRoofHipInfo then
TArchRoofHipInfo(Result).LengthProj := FloatInUOM(fWidth.Value, TF_Main(GForm).FUOM, umM);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetArchObjToDefaultParams(Result, AType);
end;
end;
procedure TF_ArchWallParams.SetCaptions;
begin
if FType = ctArhWall then
Caption := cArchWallParams_Msg01
else if FType = ctArhWallDivision then
Caption := cArchWallParams_Msg02
else if FType = ctArhRoofHip then
Caption := cArchWallParams_Msg03;
//lbHeight.Caption := cArchParams_Msg06 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
//lbThickness.Caption := cArchParams_Msg09 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
//lbCoordz.Caption := cArchParams_Msg05 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
//lbLength.Caption := cArchParams_Msg10 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
SetLableCaptions(Self, TF_Main(GForm).FUOM);
end;
procedure TF_ArchWallParams.SetControls;
begin
lbWidthOut.Visible := FType <> ctArhRoofHip;
fWidthOut.Visible := lbWidthOut.Visible;
lbThickness.Visible := FType <> ctArhRoofHip;
fThickness.Visible := lbThickness.Visible;
lbCoordz.Visible := FType = ctArhWallDivision;
fCoordz.Visible := lbCoordz.Visible;
pnBasement.Visible := FType = ctArhWall;
if FType <> ctArhRoofHip then
pnParams.Height := 129
else
pnParams.Height := 65;
Self.AutoSize := false;
pnMain.AutoSize := false;
pnMain.AutoSize := true;
Self.AutoSize := true;
end;
procedure TF_ArchWallParams.FormCreate(Sender: TObject);
begin
pnOkCancelResize(pnOkCancel);
fBasementClick(fBasement);
FPropsUOM := TStringList.Create;
SetFormControlDisplayFormat(Self);
end;
procedure TF_ArchWallParams.FormDestroy(Sender: TObject);
begin
FPropsUOM.Free;
end;
function ShowArchWallParams(AType: Integer; AArchWndInfo: TComponent; AIsArc: Boolean): TArchInfoBasic;
begin
Result := nil;
try
if F_ArchWallParams = nil then
F_ArchWallParams := TF_ArchWallParams.Create(F_ProjMan, F_ProjMan);
Result := F_ArchWallParams.Execute(AType, AArchWndInfo, AIsArc);
except
on E: Exception do AddExceptionToLogEx('ShowArchWallParams', E.Message);
end;
end;
procedure TF_ArchWallParams.pnOkCancelResize(Sender: TObject);
begin
SetMiddleControlChilds(TControl(Sender), TControl(Self));
end;
procedure TF_ArchWallParams.fBasementClick(Sender: TObject);
begin
//
EnableControl(gbBasement, fBasement.Checked);
end;
end.