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

1981 lines
60 KiB
ObjectPascal
Raw Blame History

unit U_BlockParams;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, PCPanel, PCDrawBox, PCDrawing, PowerCad, PCTypesUtils, DrawObjects,
PCgui, GuiStrings, DrawEngine, ExtCtrls, RzPanel, cxLookAndFeelPainters,
StdCtrls, cxButtons, cxControls, cxContainer, cxEdit, cxTextEdit,
cxMaskEdit, cxSpinEdit, cxCheckBox, siComp, siLngLnk, RzButton, RzRadChk,
ComCtrls, ActnList, Buttons, Spin{Tolik 17/07/2017 -- }, Math, RzLabel,
cxGraphics, cxLookAndFeels, Menus;
type
TF_BlockParams = class(TForm)
pnMain: TRzPanel;
lng_Forms: TsiLangLinked;
pnAddition: TPanel;
lbAddition: TLabel;
edAddition: TcxSpinEdit;
lbAdditionUOM: TLabel;
edAdditionProcent: TcxSpinEdit;
lbAdditionProcent: TLabel;
pnConfirm: TPanel;
bOK: TcxButton;
bCancel: TcxButton;
pnDimensions: TPanel;
Label5: TLabel;
lbHeight: TLabel;
lbHeightProcent: TLabel;
lbWidthProcent: TLabel;
Label3: TLabel;
Label4: TLabel;
edWidth: TcxSpinEdit;
edHeight: TcxSpinEdit;
edWidthProcent: TcxSpinEdit;
edHeightProcent: TcxSpinEdit;
pnProportion: TPanel;
lbRotateTo: TLabel;
lbRotateToGrad: TLabel;
cbProportions: TRzCheckBox;
edRotateTo: TcxSpinEdit;
Transparency_Bar: TTrackBar;
Label1: TLabel;
BitBtn1: TBitBtn;
PnPieProp: TPanel;
Label2: TLabel;
Label6: TLabel;
Label7: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
ActionList1: TActionList;
aDefFigureFillColor: TAction;
cbAutoApply: TRzCheckBox;
ApplyLabel: TRzLabel;
cbSizeToAngle: TRzCheckBox;
edPieRadius: TcxSpinEdit;
//Tolik -- 30/09/2017 -*-
procedure ScaleRichText(px,py: Double; aFigure: TFigure{rPoint: TDoublepoint});
Procedure ScaleBlockToNormalSize;
Procedure ScaleBlockToValues;
//
procedure edWidthPropertiesChange(Sender: TObject);
procedure edHeightPropertiesChange(Sender: TObject);
procedure edWidthProcentPropertiesChange(Sender: TObject);
procedure edHeightProcentPropertiesChange(Sender: TObject);
procedure edWidthKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edHeightKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure edAdditionProcentPropertiesChange(Sender: TObject);
procedure aDefFigureFillColorExecute(Sender: TObject);
procedure Transparency_BarChange(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure bCancelClick(Sender: TObject);
procedure edRotateToPropertiesChange(Sender: TObject);
procedure ApplyLabelClick(Sender: TObject);
procedure bOKClick(Sender: TObject);
procedure cbAutoApplyClick(Sender: TObject);
Procedure RecalcSizeToAngle;
Procedure SetValuesToBounds(aWithPercentage: Boolean = False);
procedure cbSizeToAngleClick(Sender: TObject);
procedure edPieRadiusPropertiesChange(Sender: TObject);
procedure CalcPercentValues(CalcWidth, CalcHeight: Boolean);
// procedure SpinEdit3Change(Sender: TObject);
private
{ Private declarations }
BaseW: Double;
BaseH: Double;
// Tolik -- 09/10/2017 --
ZeroAngleW, ZeroAngleH: Double; // <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
BaseWProcent: Integer;
BaseHProcent: Integer;
FLockChangeEvent: Boolean;
BeForeFigureAngle: integer;
OldFigureAngle: Double;
FAllowProportion: Boolean;
public
FSrcCaption: String;
{ Public declarations }
function Execute(aBlock: TFigure; aAllowPersent: Boolean=true; aAllowProportion: Boolean=true; const aCaption: String=''): Boolean;
end;
var
F_BlockParams: TF_BlockParams;
// 26/05/2017 --
FigureBrushColor, FigureBrushStyle, FigureColor : Integer;
OldFigureBrushColor, OldFigureBrushStyle, OldFigureColor: Integer;
OldFigureTransparency: Integer;
BlockFigure: TFigure = nil;
BlockCenterPoint: TDoublePoint;
implementation
uses USCS_Main, U_CAD, U_Common, U_BaseCommon, U_Constants, U_LoadColor;
{$R *.dfm}
{ TF_BlockParams }
function TF_BlockParams.Execute(aBlock: TFigure; aAllowPersent: Boolean=true; aAllowProportion: Boolean=true; const aCaption: String=''): Boolean;
var
Bnd: TDoubleRect;
w, h: double;
NewW, NewH: Double;
ScaleKoefW, ScaleKoefH: double;
OldPieFAngle, OldPieSangle, OldPieRadius: double;
OldFigureBrs: Integer;
xAction: TUndoAction;
RefreshFlag: Boolean;
TempFigureAngle: Double;
begin
Result := False;
//Tolik -- 30/09/2017 --
FLockChangeEvent := False;
BeForeFigureAngle := 0;
BlockFigure := aBlock;
GCadForm.PCad.RecordModifyUndo(TFigure(aBlock));
//Tolik 08/10/2021 - -
//Self.Height := 309;
Self.Height := 320;
//
FAllowProportion := True;
// Tolik 19/10/2017 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Self.pnMain.Height := 144;
Self.pnDimensions.Height := 65;
Self.pnAddition.Height := 27;
Self.pnProportion.Height := 44;
Self.PnPieProp.Height := 144;
Self.pnConfirm.Height := 139;
Self.pnAddition.Visible := False;
Self.pnConfirm.Visible := True;
Self.pnDimensions.Visible := True;
Self.pnMain.Visible := True;
Self.PnPieProp.Visible := True;
Self.pnProportion.Visible := True;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edAddition.Visible := True;
FLockChangeEvent := True; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edAddition.Value := 0;
edAdditionProcent.Visible := True;
edAdditionProcent.Value := 0;
edHeight.Visible := True;
edHeight.Value := 0;
edHeightProcent.Visible := True;
edHeightProcent.Value := 100;
edPieRadius.Visible := True;
edPieRadius.Top := 80;
edPieRadius.Value := 0;
SpinEdit1.Visible := True;
SpinEdit1.Top := 12;
SpinEdit2.Visible := True;
SpinEdit2.Top := 48;
edRotateTo.Visible := True;
edRotateTo.Value := 0;
edWidth.Visible := True;
edWidth.Value := 0;
edWidthProcent.Visible := True;
edWidthProcent.Value := 100;
FLockChangeEvent := False; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ApplyLabel.Visible := True;
ApplyLabel.Top := 60;
ApplyLabel.Enabled := false;
lbAddition.Visible := True;
lbAdditionProcent.Visible := True;
lbAdditionUOM.Visible := True;
lbHeight.Visible := True;
lbHeightProcent.Visible := True;
lbRotateTo.Visible := True;
lbRotateToGrad.Visible := True;
lbWidthProcent.Visible := True;
Label1.Visible := True;
Label1.Top := 0;
Label2.Visible := True;
Label2.Top := 16;
Label3.Visible := True;
Label4.Visible := True;
Label5.Visible := True;
Label6.Visible := True;
Label6.Top := 48;
Label7.Visible := True;
Label7.Top := 80;
Label8.Visible := True;
Label8.Top := 9;
Label9.Visible := True;
Label9.Top := 45;
Label10.Visible := True;
Label10.Top := 86;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bOk.Top := 114;
bCancel.Top := 114;
bitBtn1.Visible := True;
bitBtn1.Top := 20;
Transparency_Bar.Visible := True;
Transparency_Bar.Top := 20;
cbAutoApply.Visible := True;
cbAutoApply.Top := 60;
cbSizeToAngle.Visible := True;
cbSizeToAngle.Top := 84;
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
BlockCenterPoint.x := 0;
BlockCenterPoint.y := 0;
if ABlock <> nil then
if not aBlock.deleted then
Bnd := aBlock.GetBoundRect;
BlockCenterPoint.x := (bnd.Left + bnd.Right)/2;
BlockCenterPoint.y := (bnd.Top + bnd.Bottom)/2;
// *UNDO*
// xAction:= TundoAction.Create(uaModify);
// GCadForm.PCad.AddFigureToModifyUndo(xAction,TFigure(aBlock));
//xAction := TUndoAction.Create(uaRemove);
//xAction.List.Add(aBlock);
//TFigure(aBlock).Urc := TFigure(aBlock).Urc + 1;
//GCadForm.PCad.InsertUndoAction(xAction);
//
{if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
}
//
// Tolik -- 18/07/2017 --
OldFigureBrs := -1;
//
try
Label8.Caption := CHR(176);
Label9.Caption := CHR(176);
ApplyLabel.Enabled := False;
// Tolik -- 26/05/2017 --
//Self.Width := 285;//265;
Self.Width := 300;//265;
//
FigureBrushColor := aBlock.Brc;
FigureColor := aBlock.color;
FigureBrushStyle := aBlock.Brs;
OldFigureTransparency := aBlock.Transparency;
Transparency_Bar.Hint := IntToStr(aBlock.Transparency);
OldFigureBrushColor := aBlock.Brc;
OldFigureColor := aBlock.color;
OldFigureBrushStyle := aBlock.Brs;
Transparency_Bar.Position := aBlock.Transparency;
//
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if GCurrProjUnitOfMeasure = umSM then
begin
Label3.Caption := cMetric_sm;
Label4.Caption := cMetric_sm;
lbAdditionUOM.Caption := cMetric_sm;
Label10.Caption := cMetric_sm;
end;
if GCurrProjUnitOfMeasure = umM then
begin
Label3.Caption := cMetric_m;
Label4.Caption := cMetric_m;
lbAdditionUOM.Caption := cMetric_m;
Label10.Caption := cMetric_m;
end;
if GCurrProjUnitOfMeasure = umIn then
begin
Label3.Caption := cWhitworth_in;
Label4.Caption := cWhitworth_in;
lbAdditionUOM.Caption := cWhitworth_in;
Label10.Caption := cWhitworth_in;
end;
if GCurrProjUnitOfMeasure = umFt then
begin
Label3.Caption := cWhitworth_ft;
Label4.Caption := cWhitworth_ft;
lbAdditionUOM.Caption := cWhitworth_ft;
Label10.Caption := cWhitworth_ft;
end;
//Tolik -- 14/07/2017 --
if aBlock.ClassName = 'TPie' then
begin
OldPieSangle := TPie(aBlock).SAngle;
OldPieFangle := TPie(aBlock).FAngle;
OldPieRadius := TPie(aBlock).Radius;
Self.pnProportion.Visible := False;
Self.pnAddition.Visible := False;
Self.pnDimensions.Visible := False;
//Self.pnConfirm.Visible := False;
Self.pnPieProp.Visible := True;
Self.pnMain.Height := 115;//Self.pnMain.Height - 30;
//Self.Height := 260;//240;//240;//Self.Height - 20;
Self.Height := 280;//240;//240;//Self.Height - 20;
SpinEdit1.Value := Round((TPie(BlockFigure).SAngle * 180)/PI);
SpinEdit2.Value := Round((TPie(BlockFigure).FAngle * 180)/PI);
//Edit1.Text := FloatToStr(RoundX(TPie(BlockFigure).Radius, 2));
FLockChangeEvent := True;
edPieRadius.Value := RoundX(MetreToUom((TPie(BlockFigure).Radius * GCadForm.PCad.MapScale) / 1000), 2);
FLockChangeEvent := False;
if aCaption <> '' then
Caption := aCaption;
cbSizeToAngle.Visible := False;
bOk.Top := bOk.Top - 25;
bCancel.Top := bCancel.Top - 25;
//Self.Height := 255;
Self.Height := 265;
end
else
if aBlock.ClassNAme = 'TCircle' then
begin
FLockChangeEvent := true;
Self.pnProportion.Visible := False;
Self.pnAddition.Visible := False;
Self.pnDimensions.Visible := False;
Self.pnPieProp.Visible := True;
Self.pnMain.Height := 44;
Self.pnPieProp.Height := 44;
Self.pnConfirm.Top := 45;
Label2.Visible := False;
Label6.Visible := False;
Label8.Visible := False;
Label9.Visible := False;
Label7.Top := 12;
Label10.Top := 12;
edPieRadius.Top := 12;
SpinEdit1.Visible := False;
SpinEdit2.Visible := False;
PnPieProp.AutoSize := True;
PnPieProp.AutoSize := False;
Self.Height := 220;
edPieRadius.Value := RoundX(MetreToUom((TCircle(BlockFigure).Radius * GCadForm.PCad.MapScale) / 1000), 2);
if aCaption <> '' then
Caption := aCaption;
cbSizeToAngle.Visible := False;
bOk.Top := bOk.Top - 25;
bCancel.Top := bCancel.Top - 25;
Self.Height := Self.Height - 25;
FLockChangeEvent := False;
end
else
if (aBlock.ClassName = 'TFigureGrp') or
(aBlock.ClassName = 'TEllipse') or
(aBlock.ClassName = 'TText') or
(aBlock.ClassName = 'TRichText') or
(aBlock.ClassName = 'TRectangle') or
(aBlock.ClassName = 'TArc') or
(aBlock.ClassName = 'TElpArc') or
(aBlock.ClassName = TPolyLine.ClassNAme) then
begin
OldFigureAngle := 0;
Self.Height := 309;
pnAddition.visible := False;
PnPieProp.Visible := False;
Self.pnMain.Height := 144;
//Self.pnConfirm.Visible := True;
Self.pnConfirm.Top := 144;
Bnd := aBlock.GetBoundRect; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
ZeroAngleW := w;
ZeroAngleH := h;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
BaseW := w; //
BaseH := h; //
FLockChangeEvent := True; // Tolik -- 30/09/2017
edWidth.Value := BaseW; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edHeight.Value := BaseH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BaseWProcent := 100;
BaseHProcent := 100;
edWidthProcent.Value := 100;
edHeightProcent.Value := 100;
edRotateTo.Value := 0; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 0)
//FAllowProportion := aAllowProportion;
FLockChangeEvent := False; // Tolik -- 30/09/2017
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (aBlock.ClassName <> 'TEllipse') then
if (aBlock.ClassName <>'TRectangle') then
begin
Label1.Visible := False;
Transparency_Bar.Visible := False;
BitBtn1.Visible := False;
cbAutoApply.Top := cbAutoApply.Top - 45;
ApplyLabel.Top := ApplyLabel.Top - 45;
cbSizeToAngle.Top := cbSizeToAngle.Top - 45;
bOk.Top := bOk.Top - 45;
bCancel.Top := bCancel.Top - 45;
Self.Height := Self.Height - 45;
end;
if aBlock.ClassName <> 'TFigureGrp' then
begin
cbSizeToAngle.Visible := False;
bOk.Top := bOk.Top - 25;
bCancel.Top := bCancel.Top - 25;
Self.Height := Self.Height - 15;
end;
end
else
if (aBlock.ClassName = TLine.ClassName) then // <20><><EFBFBD><EFBFBD><EFBFBD>
begin
OldFigureAngle := 0;
Self.Height := 309;
pnAddition.visible := False;
PnPieProp.Visible := False;
Self.pnMain.Height := 144;
//Self.pnConfirm.Visible := True;
Self.pnConfirm.Top := 144;
Bnd := aBlock.GetBoundRect; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
ZeroAngleW := w;
ZeroAngleH := h;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
BaseW := w; //
BaseH := h; //
FLockChangeEvent := True; // Tolik -- 30/09/2017
edWidth.Value := BaseW; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edHeight.Value := BaseH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BaseWProcent := 100;
BaseHProcent := 100;
edWidthProcent.Value := 100;
edHeightProcent.Value := 100;
edRotateTo.Value := 0; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 0)
//FAllowProportion := aAllowProportion;
FLockChangeEvent := False; // Tolik -- 30/09/2017
Label1.Visible := False;
Transparency_Bar.Visible := False;
BitBtn1.Visible := False;
cbAutoApply.Top := cbAutoApply.Top - 45;
ApplyLabel.Top := ApplyLabel.Top - 45;
cbSizeToAngle.Top := cbSizeToAngle.Top - 45;
bOk.Top := bOk.Top - 45;
bCancel.Top := bCancel.Top - 45;
Self.Height := Self.Height - 45;
cbSizeToAngle.Visible := False;
bOk.Top := bOk.Top - 25;
bCancel.Top := bCancel.Top - 25;
Self.Height := Self.Height - 25;
end
else
begin
// Tolik 14/07/2017 --
Self.pnProportion.Visible := True;
//Self.pnAddition.Visible := True;
Self.pnDimensions.Visible := True;
//Self.pnConfirm.Visible := True;
Self.pnMain.Visible := True;
Self.pnPieProp.Visible := False;
OldFigureAngle := 0;// TFigure(aBlock).AngletoPoint*180/PI;
Bnd := aBlock.GetBoundRect;
//<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Modified = False
// <20><> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Tfigure(aBlock).RotPoint.x := (Bnd.Right + Bnd.Left)/2;
//Tfigure(aBlock).RotPoint.y := (Bnd.Bottom + Bnd.Top)/2;
//
//
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
ZeroAngleW := w;
ZeroAngleH := h;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
BaseW := w; //
BaseH := h; //
FLockChangeEvent := True; // Tolik -- 30/09/2017
// Tolik -- 09/10/2017 --
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//ZeroAngleW := BaseW;
//ZeroAngleH := BaseH;
//
{if cbSizeToAngle.Checked then
begin}
edWidth.Value := BaseW;
edHeight.Value := BaseH;
{end
else
begin
edWidth.Value := ZeroAngleW;
edHeight.Value := ZeroAngleH;
end;}
BaseWProcent := 100;
BaseHProcent := 100;
edWidthProcent.Value := 100;
edHeightProcent.Value := 100;
// Tolik --09/10/2017 --
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edRotateTo.Value := 0; //Round(OldFigureAngle);
BeForeFigureAngle := 0; //Round(OldFigureAngle);
//
//FAllowProportion := aAllowProportion;
edWidthProcent.Visible := aAllowPersent;
edHeightProcent.Visible := aAllowPersent;
edAdditionProcent.Visible := aAllowPersent;
edRotateTo.Visible := aAllowPersent;
lbWidthProcent.Visible := aAllowPersent;
lbHeightProcent.Visible := aAllowPersent;
lbAdditionProcent.Visible := aAllowPersent;
cbProportions.Visible := aAllowProportion;
FLockChangeEvent := False; // Tolik -- 30/09/2017
if aAllowPersent then
begin
//Height := 182;
Width := 269;
bOK.Left := 56;
bCancel.Left := 152;
end
else
begin
// Tolik -- 18/07/2017 --
if (aBlock.ClassName <> 'TRectangle') then
if (aBlock.ClassName <> 'TPie') then
begin
//
Width := 269 - 86;
bOK.Left := 56 - (86 div 2);
bCancel.Left := 152 - (86 div 2);
Label1.Visible := False;
Transparency_Bar.Visible := False;
BitBtn1.Visible := False;
{Self.AutoSize := True;
Self.AutoSize := False;}
end;
end;
if aAllowProportion then
begin
//pnMain.Height := 145; //09.01.2013 113;
//Height := 211; //09.01.2013 182;
end
else
begin
//pnMain.Height := 145 - 52; //09.01.2013 113 - 20;
//Height := 211 - 52; //09.01.2013 182 - 20;
end;
pnProportion.Visible := aAllowProportion;
pnMain.AutoSize := True;
pnMain.AutoSize := False;
pnMain.Height := pnMain.Height + 10;
{Self.AutoSize := True;
Self.AutoSize := False;}
if aCaption <> '' then
Caption := aCaption;
end;
// Tolik 18/07/2017 --
(* if ((aBlock.ClassName = 'TRectangle') or (aBlock.ClassName = 'TPie') or (aBlock.ClassName = 'TEllipse') or (aBlock.ClassName = 'TCircle')) then
begin
{Self.AutoSize := True;
Self.AutoSize := False;}
if aBlock.ClassName <> 'TPie' then
begin
{ if aAllowProportion then
Self.Height := 280//260//240
else
Self.Height := 200;}
end
else
if aBlock.ClassName = 'TPie' then
Self.Height := 260;//240;
//Tolik 06/10/2017 --
bOK.Left := 47;//50 - (86 div 2);
bCancel.Left := 143;//146 - (86 div 2);
//
BitBtn1.Visible := True;
TransParency_bar.Visible := True;
Label1.visible := True;
bOk.Top := 105;//85;//67;
bCancel.Top := 105;//85;//67;
// Tolik 10/10/2017 - -
{Self.AutoSize := True;
Self.AutoSize := False;}
Self.Width := 285;
if (aBlock.ClassName = 'TPie') then
begin
//cbAutoApply.Visible := False;
//ApplyLabel.Visible := False;
cbSizeToAngle.visible := False;
bOk.Top := 90;
bCancel.Top := 90;
Self.Height := 260;
end;
end
else
begin
{Self.AutoSize := True;
Self.AutoSize := False;}
{Self.Height := 200;}
{BitBtn1.Visible := False;
TransParency_bar.Visible := False;
Label1.visible := False;
bOk.Top := 11;
bCancel.Top := 11; }
end;
*)
if ShowModal = mrOK then // <20><><EFBFBD><EFBFBD> <20><> -- <20><>
begin
Result := True;
GCadForm.BeginSaveForUndo(uat_None, False, False);
try
if BlockFigure.ClassName = 'TPie' then
begin
if ApplyLabel.Enabled then
TPie(BlockFigure).Radius := (edPieRaDius.Value / GCadForm.PCad.MapScale) * 1000;
end
else
begin
{ NewW := edWidth.Value;
NewH := edHeight.Value;
ScaleKoefW := NewW / BaseW;
ScaleKoefH := NewH / BaseH;
aBlock.Scale(ScaleKoefW, ScaleKoefH, aBlock.ap1);
// Tolik -- 26/05/2017 --
//aBlock.Brc := FigureBrushColor;
//aBlock.Transparency := Transparency_Bar.Position;
//
if edRotateTo.Value <> 0 then
RotateFigure(aBlock, edRotateTo.Value);}
end;
finally
GCadForm.EndSaveForUndo;
end;
end
else // <20><><EFBFBD><EFBFBD> <20><> <20><> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>....)
begin
aBlock.Brc := oldFigureBrushColor;
aBlock.Transparency := OldFigureTransparency;
if aBlock.ClassName = 'TPie' then
TPie(aBlock).Radius := OldPieRadius;
if OldFigureBrs <> -1 then
aBlock.Brs := OldFigureBrs;
aBlock.Brs := OldFigureBrushStyle;
end;
if aCaption <> '' then
Caption := FSrcCaption;
GCadForm.PCad.Refresh;
except
on E: Exception do AddExceptionToLogEx('TF_BlockParams.Execute', E.Message);
end;
end;
// Tolik 30/09/2017 --
Procedure TF_BlockParams.RecalcSizeToAngle;
begin
if ApplyLabel.Enabled then
ApplyLabel.OnClick(Self)
else
begin
end;
end;
procedure TF_BlockParams.ScaleRichText(px,py: Double; aFigure: TFigure{rPoint: TDoublepoint});
var
a: integer;
oldcp, newcp: TDoublePoint;
rt: TRichText;
deltax, deltay: double;
begin
// <20><><EFBFBD><EFBFBD> TRichText - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for a:= 1 to TRichText(aFigure).pointcount do
begin
TRichText(aFigure).actualpoints[a] := ScalePoint(TRichText(aFigure).AP1,TRichText(aFigure).actualpoints[a],px,py);
TRichText(aFigure).originalpoints[a] := ScalePoint(TRichText(aFigure).ap1,TRichText(aFigure).originalpoints[a],px,py);
end;
TRichText(aFigure).radius := TRichText(aFigure).radius * px;
if TRichText(aFigure).DimLines.Count > 0 then
TRichText(aFigure).CreateDimLines;
TRichText(aFigure).ResetRegion;
end;
Procedure TF_BlockParams.ScaleblockToNormalSize;
var ScaleKoefW, ScaleKoefH: Double;
Bnd: TDoubleRect;
w, h: double;
TempAngle: double;
var i: integer;
begin
if Blockfigure <> nil then
if not BlockFigure.Deleted then
//if BlockFigure.ClassName = 'TFigureGRP' then
begin
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
{w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
ScaleKoefW := BaseW/w;
ScaleKoefH := BaseH/h; }
ScaleKoefW := ZeroAngleW/w;
ScaleKoefH := ZeroAngleH/h;
if ((ScaleKoefW <> 1) or (ScaleKoefH <> 1)) then
begin
if BlockFigure.ClassName = TRichText.ClassName then
ScaleRichText(ScaleKoefW, ScaleKoefH, BlockFigure)
else
begin
if BlockFigure.ClassName = TFigureGRP.ClassName then
TFigureGrp(BlockFigure).Scale(ScaleKoefW, ScaleKoefH)
else
BlockFigure.Scale(ScaleKoefW, ScaleKoefH, BlockFigure.ap1);
{
if BlockFigure.ClassName = TFigureGRP.ClassName then
begin
for i := 0 to TFigureGrp(BlockFigure).InFigures.Count - 1 do
begin
if TFigure(TFigureGrp(BlockFigure).InFigures[i]).ClassName = TRichText.ClassName then
ScaleRichText(ScaleKoefW,ScaleKoefH, TRichText(TFigureGrp(BlockFigure).InFigures[i]));
end;
end;
}
end;
end;
end;
end;
Procedure TF_BlockParams.ScaleBlockToValues;
var NewW, ScaleKoefW, NewH, ScaleKoefH: Double;
Bnd: TDoubleRect;
w, h: double;
TempAngle: Double;
Refreshflag: Boolean;
BlockCP: TDoublePoint;
begin
if BlockFigure <> nil then
if not BlockFigure.deleted then
begin
// Tolik 30/09/2017 --
NewW := edWidth.Value;
if NewW <> 0 then
begin
refreshflag := GCanRefreshCad;
GCanRefreshCad := False;
FLockChangeEvent := True;
try
NewH := edHeight.Value;
if NewH <> 0 then
begin
ScaleKoefW := NewW / BaseW;
ScaleKoefH := NewH / BaseH;
if BlockFigure.ClassName = TFigureGRP.ClassName then
if cbSizeToAngle.Checked then
begin
bnd := BlockFigure.GetBoundRect;
w := bnd.Right - bnd.Left;
h := bnd.Bottom - bnd.Top;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
ScaleKoefW := NewW/w;
ScaleKoefH := NewH/h;
end;
TempAngle := 0;
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CompareValue(BeForeFigureAngle, edRotateTo.Value) <> 0 then
begin
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RotateFigure(BlockFigure, edRotateTo.Value - BeforeFigureAngle);
BeforeFigureAngle := edRotateTo.Value;
end;
if BlockFigure.ClassName <> TFigureGRP.ClassName then
begin
if BeForeFigureAngle <> 0 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
RotateFigure(BlockFigure, 0 - BeforeFigureAngle);
end;
end;
begin
if BlockFigure.ClassName = TRichText.ClassName then
begin
ScaleBlockToNormalSize;
if (ScaleKoefW <> 1) or (ScaleKoefH <> 1) then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> - <20><><EFBFBD>
ScaleRichText(ScaleKoefW, ScaleKoefH, BlockFigure); //
end
else
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin
if (edHeight.Value <> 0) and (edWidth.Value <> 0) and // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>)
(edHeightProcent.Value <> 0) and (edWidthProcent.Value <> 0) then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
NewH := edHeight.Value;
NewW := edWidth.Value;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cbSizeToAngle.Checked then
begin
bnd := BlockFigure.GetBoundRect;
h := Bnd.Bottom - Bnd.Top;
w := Bnd.Right - Bnd.Left;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
ScaleKoefW := NewW/w;
ScaleKoefH := NewH/h;
if ((ScaleKoefW <> 1) and (ScaleKoefH <> 1)) then
BlockFigure.Scale(ScaleKoefW, ScaleKoefH);
end
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
begin
if BeforeFigureAngle <> 0 then
RotateFigure(BlockFigure, 0 - BeforeFigureAngle);
ScaleBlockToNormalSize;
ScaleKoefW := NewW/BaseW;
ScaleKoefH := NewH/BaseH;
if ((ScaleKoefW <> 1) and (ScaleKoefH <> 1)) then
BlockFigure.Scale(ScaleKoefW, ScaleKoefH);
if BeforeFigureAngle <> 0 then
RotateFigure(BlockFigure, BeforeFigureAngle);
end;
end;
end
else
begin
ScaleBlockToNormalSize;
if (ScaleKoefW <> 1) or (ScaleKoefH <> 1) then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> - <20><><EFBFBD>
BlockFigure.Scale(ScaleKoefW, ScaleKoefH, BlockFigure.ap1); //
end;
end;
if BlockFigure.ClassName <> TFigureGrp.ClassName then
begin
if BeforeFigureAngle <> 0 then
RotateFigure(BlockFigure, BeforeFigureAngle);
end;
bnd := BlockFigure.GetBoundRect;
BlockCP.x := (bnd.Left + bnd.Right)/2;
BlockCp.y := (bnd.Top + bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
end;
Except
On E: Exception do;
end;
GCanRefreshCad := refreshflag;
if GCadForm <> nil then
GCadForm.PCad.Refresh;
FLockChangeEvent := False;
end;
//
end;
end;
//
procedure TF_BlockParams.CalcPercentValues(CalcWidth, CalcHeight: Boolean);
var w,h: Double;
Bnd: TDoubleRect;
TempAngle: Integer;
RefreshFlag: Boolean;
Valint: Integer;
begin
If BlockFigure.ClassName = TFigureGrp.ClassName then
begin
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False;
FLockChangeEvent := True;
try
TempAngle := edRotateTo.Value;
if TempAngle <> 0 then
RotateFigure(BlockFigure, 0 - TempAngle);
Bnd := BlockFigure.GetBoundRect;
w := bnd.Right - bnd.Left;
h := bnd.Bottom - bnd.Top;
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
//FLockChangeEvent := True;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CalcWidth then
begin
ValInt := Round(100 * (w/BaseW));
edWidthProcent.Value := ValInt;
end;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CalcHeight then
begin
ValInt := Round(100 * (h/BaseH));
edHeightProcent.Value := ValInt;
end;
FLockChangeEvent := False;
if TempAngle <> 0 then
RotateFigure(BlockFigure, TempAngle);
Except
on E: Exception do;
end;
GCanRefreshCad := RefreshFlag;
FLockChangeEvent := False; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end;
end;
procedure TF_BlockParams.edWidthPropertiesChange(Sender: TObject);
var
CurrVal: Double;
ValDbl: Double;
ValInt: Integer;
Koef: Double;
tFile: TextFile;
TempAngle: Integer;
Bnd: TDoubleRect;
w, h: Double;
begin
try
if not FLockChangeEvent then
begin
if edWidth.Value <> 0 then
begin
FLockChangeEvent := True;
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cbSizeToAngle.Checked then
begin
Bnd := BlockFigure.GetBoundRect;
w := Bnd.Right - Bnd.Left;
h := Bnd.Bottom - bnd.Top;
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
Koef := edWidth.Value/w;
if cbProportions.Checked then
begin
ValDbl := h * Koef;
edHeight.Value := BriefFormat(ValDbl);
CalcPercentValues(True, True);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ValInt := Round(100 * Koef);
// edHeightProcent.Value := ValInt;
end
else
CalcPercentValues(True, False);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ValInt := Round(100 * Koef);
//edWidthProcent.Value := ValInt;
end
else
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FAllowProportion and cbProportions.Checked then
begin
Koef := edWidth.Value / BaseW;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := BaseH * Koef;
edHeight.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
//
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
end;
end;
end
else
begin // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FAllowProportion and cbProportions.Checked then
begin
Koef := edWidth.Value / BaseW;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := BaseH * Koef;
edHeight.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
//
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
end;
end;
FLockChangeEvent := False;
if cbAutoApply.Checked then
ScaleBlockToValues
else
ApplyLabel.Enabled := True;
{assignfile(TFile, 'd:\NODebug.txt');
if FileExists('d:\NODebug.txt') then
Append(TFile)
else
rewrite(TFile);
Writeln(TFile, 'AP1.x = ' + Floattostr(BlockFigure.ap1.x) + 'AP1.y = ' + Floattostr(BlockFigure.ap1.y));
CloseFile(TFile);}
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_BlockParams.edWidthPropertiesChange', E.Message);
end;
end;
procedure TF_BlockParams.edHeightPropertiesChange(Sender: TObject);
var
CurrVal: Double;
ValDbl: Double;
ValInt: Integer;
Koef: Double;
bnd: TDoubleRect;
h, w: Double;
begin
try
if not FLockChangeEvent then
begin
if edHeight.Value <> 0 then
begin
FLockChangeEvent := True;
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cbSizeToAngle.Checked then
begin
Bnd := BlockFigure.GetBoundRect;
h := Bnd.Bottom - Bnd.Top;
w := Bnd.Right - Bnd.Left;
h := h * GCadForm.PCad.MapScale / 1000;
w := w * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
h := MetreToUOM(h);
w := MetreToUOM(w);
Koef := edHeight.Value/h;
if cbProportions.Checked then
begin
ValDbl := w * Koef;
edwidth.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ValInt := Round(100 * Koef);
edWidthProcent.Value := ValInt;}
CalcPercentValues(True, True);
end
else
CalcPercentValues(False, True);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ ValInt := Round(100 * Koef);
edHeightProcent.Value := ValInt;}
end
else
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FAllowProportion and cbProportions.Checked then
begin
Koef := edHeight.Value / BaseH;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := Basew * Koef;
edWidth.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
//
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
end;
end;
end
else
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FAllowProportion and cbProportions.Checked then
begin
Koef := edHeight.Value / BaseH;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := BaseW * Koef;
edWidth.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
end;
end;
FLockChangeEvent := False;
if cbAutoApply.Checked then
ScaleBlockToValues
else
ApplyLabel.Enabled := True;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_BlockParams.edHeightPropertiesChange', E.Message);
end;
end;
procedure TF_BlockParams.edWidthProcentPropertiesChange(Sender: TObject);
var
CurrVal: Double;
ValDbl: Double;
ValInt: Integer;
Koef: Double;
begin
try
if not FLockChangeEvent then
begin
// Tolik 30/09/2017 - -
if edWidthProcent.Value <> 0 then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FLockChangeEvent := True;
if FAllowProportion and cbProportions.Checked then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := (edWidthProcent.Value * BaseW / BaseWProcent);
edWidth.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Koef := edWidth.Value / BaseW;
ValDbl := BaseH * Koef;
edHeight.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := (edWidthProcent.Value * BaseW / BaseWProcent);
edWidth.Value := BriefFormat(ValDbl);
end;
// Tolik 30/09/2017 --
if cbAutoApply.Checked then
ScaleBlockToValues
else
ApplyLabel.Enabled := True;
//
end;
FLockChangeEvent := False;
end;
except
on E: Exception do AddExceptionToLogEx('TF_BlockParams.edWidthProcentPropertiesChange', E.Message);
end;
end;
procedure TF_BlockParams.edHeightProcentPropertiesChange(Sender: TObject);
var
CurrVal: Double;
ValDbl: Double;
ValInt: Integer;
Koef: Double;
begin
try
if not FLockChangeEvent then
begin
// Tolik 30/09/2017 --
if edHeightProcent.Value <> 0 then
begin
FLockChangeEvent := True;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FAllowProportion and cbProportions.Checked then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := (edHeightProcent.Value * BaseH / BaseHProcent);
edHeight.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Koef := edHeight.Value / BaseH;
ValDbl := BaseW * Koef;
edWidth.Value := BriefFormat(ValDbl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
end
else
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValDbl := (edHeightProcent.Value * BaseH / BaseHProcent);
edHeight.Value := BriefFormat(ValDbl);
end;
// Tolik 30/09/2017 --
if cbAutoApply.Checked then
ScaleBlockToValues
else
ApplyLabel.Enabled := True;
end;
FLockChangeEvent := False;
end;
except
on E: Exception do AddExceptionToLogEx('TF_BlockParams.edHeightProcentPropertiesChange', E.Message);
end;
end;
procedure TF_BlockParams.edWidthKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if edWidth.Value > 10000 then
edWidth.Value := 10000;
end;
procedure TF_BlockParams.edHeightKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if edHeight.Value > 10000 then
edHeight.Value := 10000;
end;
procedure TF_BlockParams.FormCreate(Sender: TObject);
begin
FSrcCaption := Caption;
// Tolik
Label8.Caption := CHR(176);
Label9.Caption := CHR(176);
BlockFigure := nil;
//
end;
procedure TF_BlockParams.edAdditionProcentPropertiesChange(
Sender: TObject);
var
CurrVal: Double;
ValDbl: Double;
ValInt: Integer;
Koef: Double;
begin
end;
// Tolik -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
procedure TF_BlockParams.aDefFigureFillColorExecute(Sender: TObject);
begin
try
F_LoadColor.ColorPicker.DefaultColor := clBlack;
F_LoadColor.ColorPicker.SelectedColor := FigureBrushColor;
// Tolik --06/10/2017 --
F_LoadColor.ShowModal;
if F_LoadColor.ColorPicker.SelColorIndex <> -1 then
begin
FigureBrushColor := F_LoadColor.ColorPicker.SelectedColor;
if BlockFigure <> nil then
begin
BlockFigure.Brc := FigureBrushColor;
if BlockFigure.Brs = 1 then
begin
BlockFigure.Brs := 0;
end;
BlockFigure.DrawFill(GCadForm.PCad.DEngine, False);
end;
end
else
begin
if BlockFigure <> nil then
begin
BlockFigure.Brs := 1;
BlockFigure.DrawFill(GCadForm.PCad.DEngine, False);
end;
end;
GCadForm.PCad.Refresh;
except
on E: Exception do addExceptionToLogEx('TF_BlockParams.aBrushColorExecute', E.Message);
end;
end;
procedure TF_BlockParams.Transparency_BarChange(Sender: TObject);
begin
if not FLockChangeEvent then
begin
if BlockFigure <> nil then
begin
Transparency_Bar.Hint := IntToStr(F_BlockParams.Transparency_Bar.Position);
BlockFigure.Transparency := F_BlockParams.Transparency_Bar.Position;
end;
GCadForm.PCad.Refresh;
end;
end;
//
procedure TF_BlockParams.SpinEdit1Change(Sender: TObject);
begin
if not FLockChangeEvent then
begin
if BlockFigure.ClassName = 'TPie' then
begin
if cbAutoApply.Checked then
begin
TPie(BlockFigure).Sangle := (SpinEdit1.Value/180)*PI;
GCadForm.PCad.refresh;
end
else
ApplyLabel.Enabled := True;
end;
end;
end;
procedure TF_BlockParams.SpinEdit2Change(Sender: TObject);
begin
if BlockFigure.ClassName = 'TPie' then
begin
if not FLockChangeEvent then
begin
if cbAutoApply.Checked then
begin
TPie(BlockFigure).Fangle := (SpinEdit2.Value/180)*PI;
GCadForm.PCad.refresh;
end
else
ApplyLabel.Enabled := True;
end;
end;
end;
{procedure TF_BlockParams.cxSpinEdit1Change(Sender: TObject);
begin
if BlockFigure.ClassName = 'TPie' then
begin
if CompareValue(Roundx(TPie(BlockFigure).Radius), Double(cxSpinEdit1.value)) <> 0 then
begin
TPie(BlockFigure).Radius := SpinEdit3.Value;
GCadForm.PCad.refresh;
end;
end;
end;
}
Procedure TF_BlockParams.SetValuesToBounds(aWithPercentage: boolean); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
var Bnd: TDoubleRect;
w, h: double;
NewW, NewH: Double;
ValInt: Double;
begin
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
FLockChangeEvent := True;
edWidth.Value := w;
edHeight.Value := h;
if aWithPercentage then
begin
if cbSizeToAngle.Checked then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
end
else
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
end;
end;
FLockChangeEvent := False;
end;
// Tolik 30/09/2017 --
procedure TF_BlockParams.bCancelClick(Sender: TObject);
var RefreshFlag: Boolean;
begin
RefreshFlag := GCanrefreshCad;
GCanRefreshCad := False;
try
//GCadForm.SCSUndoNormalList;
GCadForm.PCad.UnDo;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
Except
on E: Exception do;
end;
GCanRefreshCad := RefreshFlag;
GCadForm.PCad.Refresh;
BlockFigure := nil;
end;
procedure TF_BlockParams.edRotateToPropertiesChange(Sender: TObject);
var Bnd: TDoubleRect;
w,h: double;
ValInt: Integer;
BlockCP: TDoublePoint;
refreshFlag: Boolean;
begin
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False;
try
//if edRotateTo.Value <> 0 then
if not FLockChangeEvent then // Tolik 13/10/2017 --
begin
if cbAutoApply.Checked then
begin
if CompareValue(edRotateTo.Value, BeForeFigureAngle) <> 0 then
begin
RotateFigure(BlockFigure, edRotateTo.Value - BeForeFigureAngle);
BeForeFigureAngle := edRotateTo.Value;
end;
if BlockFigure.ClassName = TFigureGRP.ClassName then
begin
if cbSizeToAngle.Checked then
begin
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
//BaseW := w;
//BaseH := h;
FLockChangeEvent := True; // Tolik -- 30/09/2017
edWidth.Value := W; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edHeight.Value := H; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edWidth.Value * BaseWProcent / BaseW);
edWidthProcent.Value := ValInt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ValInt := Round(edHeight.Value * BaseHProcent / BaseH);
edHeightProcent.Value := ValInt;
FLockChangeEvent := False;
end
end;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//if BeforeFigureAngle = 0 then
{begin
Bnd := BlockFigure.GetBoundRect;
BlockCenterPoint.x := (bnd.Left + bnd.Right)/2;
BlockCenterPoint.y := (bnd.Top + bnd.Bottom)/2;
end;}
{bnd := BlockFigure.GetBoundRect;
BlockCP.x := (bnd.Left + bnd.Right)/2;
BlockCp.y := (bnd.Top + bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);}
end
else
begin
if not FLockChangeEvent then
ApplyLabel.Enabled := True;
end;
Bnd := BlockFigure.GetBoundRect;
BlockCP.x := (Bnd.Right + Bnd.Left)/2;
BlockCP.y := (Bnd.Top + Bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
end;
Except
on E: Exception do;
end;
FLockChangeEvent := False; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GCanRefreshCad := RefreshFlag;
GCadForm.PCad.Refresh;
end;
//
procedure TF_BlockParams.ApplyLabelClick(Sender: TObject);
var Bnd: TDoubleRect;
RefreshFlag: Boolean;
w,h, NewH, NewW: double;
ScaleKoefW,ScaleKoefH: double;
TempAngle: Integer;
BlockCP: TDoublePoint;
begin
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False;
try
begin
if BlockFigure.ClassName = 'TPie' then
begin
TPie(BlockFigure).Fangle := (SpinEdit2.Value/180)*PI;
TPie(BlockFigure).Sangle := (SpinEdit1.Value/180)*PI;
TPie(BlockFigure).Radius := (edPieRadius.Value / GCadForm.PCad.MapScale) * 1000;
//GCadForm.PCad.refresh;
end
else
if BlockFigure.ClassName = 'TCircle' then
begin
if edPieRadius.Value <> 0 then
begin
TCircle(BlockFigure).Radius := (edPieRadius.Value / GCadForm.PCad.MapScale) * 1000;
end;
end
else
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin
if (edHeight.Value <> 0) and (edWidth.Value <> 0) and // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>)
(edHeightProcent.Value <> 0) and (edWidthProcent.Value <> 0) then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
NewH := edHeight.Value;
NewW := edWidth.Value;
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CompareValue(BeForeFigureAngle, edRotateTo.Value) <> 0 then
begin
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RotateFigure(BlockFigure, edRotateTo.Value - BeforeFigureAngle);
BeforeFigureAngle := edRotateTo.Value;
end;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cbSizeToAngle.Checked then
begin
bnd := BlockFigure.GetBoundRect;
h := Bnd.Bottom - Bnd.Top;
w := Bnd.Right - Bnd.Left;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
ScaleKoefW := NewW/w;
ScaleKoefH := NewH/h;
if ((ScaleKoefW <> 1) and (ScaleKoefH <> 1)) then
BlockFigure.Scale(ScaleKoefW, ScaleKoefH);
end
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
begin
if BeforeFigureAngle <> 0 then
RotateFigure(BlockFigure, 0 - BeforeFigureAngle);
ScaleBlockToNormalSize;
ScaleKoefW := NewW/BaseW;
ScaleKoefH := NewH/BaseH;
if ((ScaleKoefW <> 1) and (ScaleKoefH <> 1)) then
BlockFigure.Scale(ScaleKoefW, ScaleKoefH);
if BeforeFigureAngle <> 0 then
RotateFigure(BlockFigure, BeforeFigureAngle);
end;
bnd := BlockFigure.GetBoundRect;
BlockCP.x := (bnd.Left + bnd.Right)/2;
BlockCp.y := (bnd.Top + bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
end;
end
else
begin
if (edHeight.Value <> 0) and (edWidth.Value <> 0) and // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>)
(edHeightProcent.Value <> 0) and (edWidthProcent.Value <> 0) then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
ScaleBlockToValues;
{
if CompareValue(BeForeFigureAngle, edRotateTo.Value) <> 0 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
RotateFigure(BlockFigure, edRotateTo.Value - BeForeFigureAngle);
BeForeFigureAngle := edRotateTo.Value;
if BeforeFigureAngle = 0 then
begin // 23/10/2017
//BlockCenterPoint.x := (bnd.Left + bnd.Right)/2;
//BlockCenterPoint.y := (bnd.Top + bnd.Bottom)/2;
end;
end;
bnd := BlockFigure.GetBoundRect;
BlockCP.x := (bnd.Left + bnd.Right)/2;
BlockCp.y := (bnd.Top + bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
{if cbSizeToAngle.Checked then
// SetValuesToBounds;
SetValuesToBounds(True);}
end;
end;
end;
F_BlockParams.ApplyLabel.Enabled := False;
Except
on E: exception do;
end;
GCanRefreshCad := RefreshFlag;
GCadForm.PCad.Refresh;
end;
procedure TF_BlockParams.bOKClick(Sender: TObject);
begin
if ApplyLabel.Enabled then
begin
ApplyLabelClick(self);
{ScaleBlockToValues;
RotateFigure(BlockFigure, edRotateTo.Value - BeForeFigureAngle);}
//BeForeFigureAngle := edRotateTo.Value;
ApplyLabel.Enabled := False;
end;
end;
procedure TF_BlockParams.cbAutoApplyClick(Sender: TObject);
begin
if F_BlockParams.cbAutoApply.Checked then
if F_BlockParams.ApplyLabel.Enabled then
F_BlockParams.ApplyLabelClick(Self);
end;
procedure TF_BlockParams.cbSizeToAngleClick(Sender: TObject);
var Bnd: TDoubleRect;
w, h: Double;
TempAngle: double;
RefreshFlag: Boolean;
BlockCP: TDoublePoint;
begin
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> !!!
if cbAutoApply.Checked then
begin
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin
if F_BlockParams.cbSizeToAngle.Checked then
begin
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
FLockChangeEvent := True;
edWidth.Value := w;
edHeight.Value := h;
w := w/BaseW*100;
h := h/BaseH*100;
w := BriefFormat(w);
h := BriefFormat(h);
edWidthProcent.Value := w;
edHeightProcent.Value := h;
FLockChangeEvent := False;
end
else
begin
Tempangle := edRotateTo.Value;//*PI/180;
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
try
if edRotateTo.Value <> 0 then
RotateFigure(BlockFigure, 0 - TempAngle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
FLockChangeEvent := True;
edWidth.Value := w;
edHeight.Value := h;
w := w/BaseW*100;
h := h/BaseH*100;
w := BriefFormat(w);
h := BriefFormat(h);
edWidthProcent.Value := w;
edHeightProcent.Value := h;
FLockChangeEvent := False;
if edRotateTo.Value <> 0 then
begin
RotateFigure(BlockFigure, TempAngle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
//ApplyLabel.Enabled := True;
end;
Bnd := BlockFigure.GetBoundRect;
BlockCP.x := (Bnd.Right + Bnd.Left)/2;
BlockCP.y := (Bnd.Top + Bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
Except
on E: Exception do;
end;
FLockChangeEvent := False; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GCanRefreshCad := RefreshFlag;
GCadForm.PCad.refresh;
end;
end;
end
else
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
begin
if BlockFigure.ClassName = TFigureGrp.ClassName then
begin
Tempangle := edRotateTo.Value;//*PI/180;
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
try
if edRotateTo.Value <> 0 then
RotateFigure(BlockFigure, 0 - TempAngle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Bnd := BlockFigure.GetBoundRect;
w := abs(Bnd.Right - Bnd.Left);
h := abs(Bnd.Bottom - Bnd.Top);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
w := w * GCadForm.PCad.MapScale / 1000;
h := h * GCadForm.PCad.MapScale / 1000;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
w := MetreToUOM(w);
h := MetreToUOM(h);
w := BriefFormat(w);
h := BriefFormat(h);
FLockChangeEvent := True;
edWidth.Value := w;
edHeight.Value := h;
w := w/BaseW*100;
h := h/BaseH*100;
{ w := BriefFormat(w);
h := BriefFormat(h);
edWidthProcent.Value := w;
edHeightProcent.Value := h;}
FLockChangeEvent := False;
if edRotateTo.Value <> 0 then
begin
RotateFigure(BlockFigure, TempAngle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
ApplyLabel.Enabled := True;
end;
Bnd := BlockFigure.GetBoundRect;
BlockCP.x := (Bnd.Right + Bnd.Left)/2;
BlockCP.y := (Bnd.Top + Bnd.Bottom)/2;
BlockFigure.Move(BlockCenterPoint.x - BlockCP.x, BlockCenterPoint.y - BlockCP.y);
except
on E: Exception do;
end;
FLockChangeEvent := False;
GCanRefreshCad := RefreshFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
GCadForm.PCad.refresh;
end;
end;
end;
procedure TF_BlockParams.edPieRadiusPropertiesChange(Sender: TObject);
begin
if not FLockChangeEvent then // Tolik 13/10/2017 --
begin
if cbAutoApply.Checked then
begin
if edPieRadius.Value <> 0 then
begin
//Tolik 08/10/2021 --
//TPie(BlockFigure).Radius := (EdPieRadius.Value / GCadForm.PCad.MapScale) * 1000;
TPie(BlockFigure).Radius := UomToMetre(EdPieRadius.Value / GCadForm.PCad.MapScale) * 1000;
GCadForm.PCad.Refresh;
end;
end
else
ApplyLabel.Enabled := True;
end;
end;
end.