mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-12 00:45:40 +02:00
260 lines
7.7 KiB
ObjectPascal
260 lines
7.7 KiB
ObjectPascal
unit U_ArchBalconyParams;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, StdCtrls,
|
||
|
||
U_BaseCommon, U_BaseConstants, U_ArchCommon, RzButton, Mask, RzEdit,
|
||
RzPanel, ExtCtrls, siComp, siLngLnk, RzRadChk;
|
||
|
||
type
|
||
TF_ArchBalconyParams = class(TForm)
|
||
pnMain: TRzPanel;
|
||
pnOkCancel: TRzPanel;
|
||
btOk: TRzBitBtn;
|
||
btCancel: TRzBitBtn;
|
||
lng_Forms: TsiLangLinked;
|
||
pnGeneral: TRzPanel;
|
||
RzGroupBox1: TRzGroupBox;
|
||
fisLbWidth: TLabel;
|
||
fisLbHeight: TLabel;
|
||
fisLbDepth: TLabel;
|
||
fisWidth: TRzNumericEdit;
|
||
fisHeight: TRzNumericEdit;
|
||
fisDepth: TRzNumericEdit;
|
||
RzGroupBox2: TRzGroupBox;
|
||
fwndLbWidth: TLabel;
|
||
fwndLbHeight: TLabel;
|
||
fwndWidth: TRzNumericEdit;
|
||
fwndHeight: TRzNumericEdit;
|
||
RzGroupBox3: TRzGroupBox;
|
||
fdrLbWidth: TLabel;
|
||
fdrLbHeight: TLabel;
|
||
fdrWidth: TRzNumericEdit;
|
||
fdrHeight: TRzNumericEdit;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure pnOkCancelResize(Sender: TObject);
|
||
procedure fwndWidthChange(Sender: TObject);
|
||
procedure fdrWidthChange(Sender: TObject);
|
||
procedure fdrHeightChange(Sender: TObject);
|
||
|
||
private
|
||
GForm: TForm;
|
||
FPropsUOM: TStringList;
|
||
FType: Integer;
|
||
FIsEditing: Boolean;
|
||
|
||
function GetSlopeParams(AArchWndInfo: TArchInfoBasic; AClass: TArchInfoBasicClass; const APropPrefix: string): TArchInfoBasic;
|
||
|
||
procedure AutoCalcSlopeWidth;
|
||
procedure SetCaptions;
|
||
procedure SetControls;
|
||
procedure SetSlopeParams(ASlopeInfo: TArchInfoBasic; const APropPrefix: string);
|
||
public
|
||
Constructor Create(AOwner: TComponent; AForm: TForm);
|
||
Destructor Destroy; override;
|
||
|
||
function Execute(AType: Integer; AArchInfo: TComponent): TArchInfoBasic;
|
||
published
|
||
property PropMainForm: TForm read GForm;
|
||
property PropsUOM: TStringList read FPropsUOM;
|
||
end;
|
||
|
||
function ShowArchBalconyParams(AType: Integer; AArchInfo: TComponent): TArchInfoBasic;
|
||
|
||
var
|
||
F_ArchBalconyParams: TF_ArchBalconyParams;
|
||
|
||
implementation
|
||
Uses U_Main;
|
||
{$R *.dfm}
|
||
|
||
constructor TF_ArchBalconyParams.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_ArchBalconyParams.Destroy;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
function TF_ArchBalconyParams.Execute(AType: Integer; AArchInfo: TComponent): TArchInfoBasic;
|
||
var
|
||
Info: TArchBalconyInfo;
|
||
begin
|
||
Result := nil;
|
||
try
|
||
FType := AType;
|
||
FIsEditing := AArchInfo <> nil;
|
||
|
||
SetCaptions;
|
||
SetControls;
|
||
|
||
Info := TArchBalconyInfo.Create(nil);
|
||
if AArchInfo <> nil then
|
||
begin
|
||
Info.Assign(AArchInfo);
|
||
end
|
||
else
|
||
begin
|
||
LoadArchObjDefaultParams(TComponent(Info), AType);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Info.CreateChilds;
|
||
if LoadArchObjDefaultParams(Info.WndInfo, ctArhBalconyWnd) = nil then
|
||
//if LoadArchObjDefaultParams(TComponent(Pointer(@Info.WndInfo)^), ctArhBalconyWnd) = nil then
|
||
begin
|
||
Info.WndInfo.Height := 1.4;
|
||
Info.WndInfo.Width := 1.4;
|
||
end;
|
||
|
||
if LoadArchObjDefaultParams(Info.DoorInfo, ctArhBalconyDoor) = nil then
|
||
//if LoadArchObjDefaultParams(TComponent(Pointer(@Info.DoorInfo)^), ctArhBalconyDoor) = nil then
|
||
begin
|
||
Info.DoorInfo.Height := 2;
|
||
Info.DoorInfo.Width := 0.7;
|
||
end;
|
||
|
||
if LoadArchObjDefaultParams(Info.InnerSlope, ctArhBalconyInnerSlope) = nil then
|
||
//if LoadArchObjDefaultParams(TComponent(Pointer(@Info.InnerSlope)^), ctArhBalconyInnerSlope) = nil then
|
||
begin
|
||
Info.InnerSlope.Height := 2;
|
||
Info.InnerSlope.Width := 2.1;
|
||
Info.InnerSlope.Depth := 0.1;
|
||
end;
|
||
end;
|
||
|
||
//ObjectPropsToForm(Info, Self);
|
||
SetSlopeParams(Info.WndInfo, 'fwnd');
|
||
SetSlopeParams(Info.DoorInfo, 'fdr');
|
||
SetSlopeParams(Info.InnerSlope, 'fis');
|
||
|
||
|
||
Info.Free;
|
||
|
||
if ShowModal = mrOk then
|
||
begin
|
||
Result := TArchBalconyInfo.Create(nil);
|
||
//ObjectPropsFromForm(Result, Self);
|
||
|
||
TArchBalconyInfo(Result).WndInfo := TArchWndInfo(GetSlopeParams(Result, TArchWndInfo, 'fwnd'));
|
||
TArchBalconyInfo(Result).DoorInfo := TArchWndInfo(GetSlopeParams(Result, TArchWndInfo, 'fdr'));
|
||
TArchBalconyInfo(Result).InnerSlope := TArchSlopeInfo(GetSlopeParams(Result, TArchSlopeInfo, 'fis'));
|
||
TArchBalconyInfo(Result).Width := TArchBalconyInfo(Result).WndInfo.Width + TArchBalconyInfo(Result).DoorInfo.Width;
|
||
|
||
// <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(TArchBalconyInfo(Result), AType);
|
||
SetArchObjToDefaultParams(TArchBalconyInfo(Result).WndInfo, ctArhBalconyWnd);
|
||
SetArchObjToDefaultParams(TArchBalconyInfo(Result).DoorInfo, ctArhBalconyDoor);
|
||
SetArchObjToDefaultParams(TArchBalconyInfo(Result).InnerSlope, ctArhBalconyInnerSlope);
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogExt(ClassName, 'Execute', E.Message);
|
||
end;
|
||
end;
|
||
|
||
function TF_ArchBalconyParams.GetSlopeParams(AArchWndInfo: TArchInfoBasic; AClass: TArchInfoBasicClass; const APropPrefix: string): TArchInfoBasic;
|
||
begin
|
||
Result := AClass.Create(AArchWndInfo);
|
||
ObjectPropsFromForm(Result, Self, APropPrefix);
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.AutoCalcSlopeWidth;
|
||
begin
|
||
fisWidth.Value := fwndWidth.Value + fdrWidth.Value;
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.SetCaptions;
|
||
//var
|
||
// i: integer;
|
||
// Labl: TLabel;
|
||
// lbCaptionLen: String;
|
||
begin
|
||
//for i := 0 to ComponentCount - 1 do
|
||
// begin
|
||
// if Components[i] is TLabel then
|
||
// begin
|
||
// Labl := TLabel(Components[i]);
|
||
// lbCaptionLen := '';
|
||
// if Pos('Coordz', Labl.Name) <> 0 then
|
||
// lbCaptionLen := cArchParams_Msg05
|
||
// else if Pos('Width', Labl.Name) <> 0 then
|
||
// lbCaptionLen := cArchParams_Msg02
|
||
// else if Pos('Height', Labl.Name) <> 0 then
|
||
// lbCaptionLen := cArchParams_Msg06
|
||
// else if Pos('Depth', Labl.Name) <> 0 then
|
||
// lbCaptionLen := cArchParams_Msg07;
|
||
//
|
||
// if lbCaptionLen <> '' then
|
||
// Labl.Caption := lbCaptionLen +', '+ GetNameUOM(TF_Main(GForm).FUOM, true);
|
||
// end;
|
||
// end;
|
||
SetLableCaptions(Self, TF_Main(GForm).FUOM);
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.SetControls;
|
||
begin
|
||
//Self.AutoSize := false;
|
||
//pnMain.AutoSize := false;
|
||
//pnMain.AutoSize := true;
|
||
//Self.AutoSize := true;
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.SetSlopeParams(ASlopeInfo: TArchInfoBasic; const APropPrefix: string);
|
||
begin
|
||
if Assigned(ASlopeInfo) then
|
||
ObjectPropsToForm(ASlopeInfo, Self, APropPrefix);
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.FormCreate(Sender: TObject);
|
||
begin
|
||
pnOkCancelResize(pnOkCancel);
|
||
|
||
FPropsUOM := TStringList.Create;
|
||
SetFormControlDisplayFormat(Self);
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.FormDestroy(Sender: TObject);
|
||
begin
|
||
FreeAndNil(FPropsUOM);
|
||
end;
|
||
|
||
function ShowArchBalconyParams(AType: Integer; AArchInfo: TComponent): TArchInfoBasic;
|
||
begin
|
||
Result := nil;
|
||
try
|
||
if F_ArchBalconyParams = nil then
|
||
F_ArchBalconyParams := TF_ArchBalconyParams.Create(F_ProjMan, F_ProjMan);
|
||
|
||
Result := F_ArchBalconyParams.Execute(AType, AArchInfo);
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('ShowArchBalconyParams', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.pnOkCancelResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.fwndWidthChange(Sender: TObject);
|
||
begin
|
||
AutoCalcSlopeWidth;
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.fdrWidthChange(Sender: TObject);
|
||
begin
|
||
AutoCalcSlopeWidth;
|
||
end;
|
||
|
||
procedure TF_ArchBalconyParams.fdrHeightChange(Sender: TObject);
|
||
begin
|
||
fisHeight.Value := fdrHeight.Value;
|
||
end;
|
||
|
||
end.
|