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

208 lines
6.1 KiB
ObjectPascal
Raw Permalink Blame History

unit U_ArchRoomParams;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, siComp, siLngLnk, ExtCtrls, RzPanel, RzButton,
U_BaseCommon, U_BaseConstants, U_BaseSettings, U_ArchCommon, Mask, RzEdit,
RzRadChk;
type
TF_ArchRoomParams = class(TForm)
lng_Forms: TsiLangLinked;
RzPanel1: TRzPanel;
pnOkCancel: TRzPanel;
btOk: TRzBitBtn;
btCancel: TRzBitBtn;
gbSizes: TRzGroupBox;
gbThickness: TRzGroupBox;
lbLength: TLabel;
lbWidth: TLabel;
lbThicknessFront: TLabel;
lbThicknessLeft: TLabel;
lbThicknessRight: TLabel;
lbThicknessBack: TLabel;
fLength: TRzNumericEdit;
fWidth: TRzNumericEdit;
fThicknessFront: TRzNumericEdit;
fThicknessLeft: TRzNumericEdit;
fThicknessRight: TRzNumericEdit;
fThicknessBack: TRzNumericEdit;
lbHeightWall: TLabel;
fHeightWall: TRzNumericEdit;
fBasement: TRzCheckBox;
procedure pnOkCancelResize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
GForm: TForm;
FPropsUOM: TStringList;
FType: Integer;
procedure SetCaptions;
public
Constructor Create(AOwner: TComponent; AForm: TForm);
Destructor Destroy; override;
function Execute(AType: Integer; aBasement: Boolean): TArchRoomInfo;
published
property PropMainForm: TForm read GForm;
property PropsUOM: TStringList read FPropsUOM;
end;
function ShowArchRoomParams(AType: Integer; aBasement: Boolean): TArchRoomInfo;
var
F_ArchRoomParams: TF_ArchRoomParams;
implementation
Uses U_Main;
{$R *.dfm}
constructor TF_ArchRoomParams.Create(AOwner: TComponent; AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
end;
destructor TF_ArchRoomParams.Destroy;
begin
inherited;
end;
procedure TF_ArchRoomParams.pnOkCancelResize(Sender: TObject);
begin
SetMiddleControlChilds(TControl(Sender), TControl(Self));
end;
procedure TF_ArchRoomParams.SetCaptions;
begin
if FType = ctArhRoom then
Caption := cArchRoomParams_Msg01
else if FType = ctArhBrickWall then
Caption := cArchRoomParams_Msg02
else if FType = ctArhRoofSeg then
Caption := cArchRoomParams_Msg03;
gbSizes.Caption := cArchParams_Msg25;
lbLength.Caption := cArchParams_Msg01 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbWidth.Caption := cArchParams_Msg02 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbHeightWall.Caption := cArchParams_Msg03 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbThicknessFront.Caption := cArchParams_Msg04_01 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbThicknessLeft.Caption := cArchParams_Msg04_02 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbThicknessRight.Caption := cArchParams_Msg04_03 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
lbThicknessBack.Caption := cArchParams_Msg04_04 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
if FType = ctArhRoofSeg then
begin
lbHeightWall.Caption := cArchParams_Msg06 +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
gbSizes.Caption := cDimensionsB;
end;
end;
function TF_ArchRoomParams.Execute(AType: Integer; aBasement: Boolean): TArchRoomInfo;
var
RoomInfo: TArchRoomInfo;
begin
Result := nil;
FType := AType;
SetCaptions;
{fLength.Value := RoundCP(FloatInUOM(4, umMetr, TF_Main(GForm).FUOM));
fWidth.Value := RoundCP(FloatInUOM(2, umMetr, TF_Main(GForm).FUOM));
fHeightWall.Value := RoundCP(FloatInUOM(3, umMetr, TF_Main(GForm).FUOM));
fThicknessFront.Value := RoundCP(FloatInUOM(0.5, umMetr, TF_Main(GForm).FUOM));
fThicknessLeft.Value := RoundCP(FloatInUOM(0.5, umMetr, TF_Main(GForm).FUOM));
fThicknessRight.Value := RoundCP(FloatInUOM(0.5, umMetr, TF_Main(GForm).FUOM));
fThicknessBack.Value := RoundCP(FloatInUOM(0.5, umMetr, TF_Main(GForm).FUOM));}
RoomInfo := TArchRoomInfo.Create(nil);
if LoadArchObjDefaultParams(RoomInfo, AType) = nil then
begin
RoomInfo.Length := 4;
RoomInfo.Width := 2;
RoomInfo.HeightWall := ctDefWallHeight;
if AType <> ctArhRoofSeg then
begin
RoomInfo.ThicknessFront := 0.4;
RoomInfo.ThicknessLeft := 0.4;
RoomInfo.ThicknessRight := 0.4;
RoomInfo.ThicknessBack := 0.4;
end
else
begin
RoomInfo.HeightWall := ctDefRoofHipHeight;
RoomInfo.ThicknessFront := 0.01;
RoomInfo.ThicknessLeft := 0.01;
RoomInfo.ThicknessRight := 0.01;
RoomInfo.ThicknessBack := 0.01;
end;
end;
ObjectPropsToForm(RoomInfo, Self);
RoomInfo.Free;
fBasement.Checked := aBasement; //04.07.2012
gbThickness.Visible := FType <> ctArhRoofSeg;
fBasement.Visible := FType <> ctArhRoofSeg;
if FType <> ctArhRoofSeg then
Height := 354
else
Height := 180;
if ShowModal = mrOk then
begin
if AType = ctArhRoofSeg then
Result := TArchRoofSegInfo.Create(nil)
else
Result := TArchRoomInfo.Create(nil);
ObjectPropsFromForm(Result, Self);
// <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;
function ShowArchRoomParams(AType: Integer; aBasement: Boolean): TArchRoomInfo;
begin
Result := nil;
try
if F_ArchRoomParams = nil then
F_ArchRoomParams := TF_ArchRoomParams.Create(F_ProjMan, F_ProjMan);
Result := F_ArchRoomParams.Execute(AType, aBasement);
except
on E: Exception do AddExceptionToLogEx('ShowArchRoomParams', E.Message);
end;
end;
procedure TF_ArchRoomParams.FormCreate(Sender: TObject);
begin
pnOkCancelResize(pnOkCancel);
GetClassPropList(TArchRoomInfo);
FPropsUOM := TStringList.Create;
//FPropsUOM.Add(fLength.Name);
//FPropsUOM.Add(fWidth.Name);
//FPropsUOM.Add(fHeightWall.Name);
//FPropsUOM.Add(fThicknessFront.Name);
//FPropsUOM.Add(fThicknessLeft.Name);
//FPropsUOM.Add(fThicknessRight.Name);
//FPropsUOM.Add(fThicknessBack.Name);
SetFormControlDisplayFormat(Self);
end;
procedure TF_ArchRoomParams.FormDestroy(Sender: TObject);
begin
FPropsUOM.Free;
end;
end.