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

835 lines
25 KiB
ObjectPascal
Raw Permalink Blame History

unit U_ComponDesignWizard;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, U_BaseCommon, U_SCSComponent, ExtCtrls, RzPanel, RzTabs, RzButton, ActnList, ActnMan,
cxControls, cxContainer, cxEdit, cxImage, StdCtrls, Buttons, PCPanel,
PCDrawBox, PCDrawing, PowerCad, DrawObjects, RzSplit, Mask, RzEdit,
siComp, siLngLnk, cxTextEdit, cxMaskEdit, cxDropDownEdit, ComCtrls,
ToolWin, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters,
PlatformDefaultStyleActnCtrls;
const
MinStep = 0;
MaxStep = 1;
type
TF_ComponDesignWizard = class(TForm)
gbNavigator: TRzGroupBox;
pcWizard: TRzPageControl;
btBack: TRzBitBtn;
btCancel: TRzBitBtn;
tsStep1: TRzTabSheet;
tsStep2: TRzTabSheet;
btNext: TRzBitBtn;
btPrepare: TRzBitBtn;
ActionManager1: TActionManager;
aBack: TAction;
aNext: TAction;
aPrepare: TAction;
Label1: TLabel;
ImgDesignIcon: TcxImage;
btChoiceDesignImage: TSpeedButton;
btClearDesignImage: TSpeedButton;
aChoiceDesignImage: TAction;
aClearDesignImage: TAction;
PCad: TPowerCad;
RzPanel1: TRzPanel;
RzGroupBox1: TRzGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
edLeftBound: TRzNumericEdit;
edTopBound: TRzNumericEdit;
edRightBound: TRzNumericEdit;
edBottomBound: TRzNumericEdit;
RzGroupBox2: TRzGroupBox;
Label6: TLabel;
Label7: TLabel;
edHeight: TRzNumericEdit;
edWidth: TRzNumericEdit;
VerScroll: TScrollBar;
HorScroll: TScrollBar;
lng_Forms: TsiLangLinked;
Label8: TLabel;
Label9: TLabel;
RzNumericEdit1: TRzNumericEdit;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
procedure aBackExecute(Sender: TObject);
procedure aNextExecute(Sender: TObject);
procedure aPrepareExecute(Sender: TObject);
procedure aChoiceDesignImageExecute(Sender: TObject);
procedure aClearDesignImageExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure gbNavigatorResize(Sender: TObject);
procedure PCadScaleChanged(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure HorScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure VerScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormShow(Sender: TObject);
procedure RzNumericEdit1DblClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
FBitmapStream: TMemoryStream;
FBlkStream: TMemoryStream;
FDesignWizardParams: TComponDesignWizardParams;
FStepIndex: Integer;
FForm: TForm;
FSpravochnik: TSpravochnik;
FUOM: Integer;
public
function ExecuteWizard(var AParams: TComponDesignWizardParams; AForm: TForm; ASpravochnik: TSpravochnik): Boolean;
procedure LoadBoundsFromWiardToParams;
procedure LoadImage;
procedure LoadStreams;
procedure DoStep(AIndex: Integer);
procedure PutBlkStreamOnCAD;
// === ScrollBars ===
Function IfVisibleHorScrollBar: Boolean;
Function ifVisibleVerScrollBar: Boolean;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PCAD
Function GetMaxScrollsPosition: TPoint;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PCAD
Function GetPageSizesScrolls: TPoint;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PCAD
Procedure Set_PCad_HorScroll;
Procedure Set_PCad_VerScroll;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Procedure Set_SCS_HorScroll;
Procedure Set_SCS_VerScroll;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
Procedure ChangeScrollsOnChangeListSize;
end;
var
F_ComponDesignWizard: TF_ComponDesignWizard;
implementation
Uses U_Main, Unit_DM_SCS, PCTypesUtils, U_Common, U_Constants, U_ProtectionCommon;
{$R *.dfm}
{ TF_ComponDesignWizard }
function TF_ComponDesignWizard.ExecuteWizard(var AParams: TComponDesignWizardParams;
AForm: TForm; ASpravochnik: TSpravochnik): Boolean;
begin
Result := false;
FDesignWizardParams := AParams;
try
FForm := AForm;
FUOM := TF_Main(AForm).FUOM;
FSpravochnik := ASpravochnik;
LoadStreams;
DoStep(0);
if ShowModal = mrOk then
begin
LoadBoundsFromWiardToParams;
AParams := FDesignWizardParams;
Result := true;
end;
finally
if Assigned(FBitmapStream) then
FreeAndNil(FBitmapStream);
if Assigned(FBlkStream) then
FreeAndNil(FBlkStream);
end;
end;
procedure TF_ComponDesignWizard.LoadBoundsFromWiardToParams;
begin
try
FDesignWizardParams.Height := FloatInUOM(edHeight.Value, FUOM, umM);
FDesignWizardParams.Width := FloatInUOM(edWidth.Value, FUOM, umM);
FDesignWizardParams.LeftBound := FloatInUOM(edLeftBound.Value, FUOM, umM);
FDesignWizardParams.TopBound := FloatInUOM(edTopBound.Value, FUOM, umM);
FDesignWizardParams.BottomBound := FloatInUOM(edBottomBound.Value, FUOM, umM);
FDesignWizardParams.RightBound := FloatInUOM(edRightBound.Value, FUOM, umM);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.LoadBoundsFromWiardToParams', E.Message);
end;
end;
procedure TF_ComponDesignWizard.LoadImage;
begin
try
ClearcxImage(ImgDesignIcon);
if Assigned(FBitmapStream) then
begin
ImgDesignIcon.Picture.Bitmap.LoadFromStream(FBitmapStream);
FBitmapStream.Position := 0;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.LoadImage', E.Message);
end;
end;
procedure TF_ComponDesignWizard.LoadStreams;
begin
try
//loadObjectIconToCXImage(ImgDesignIcon, FDesignWizardParams.IDDesignIcon, oitProjectible);
with F_NormBase.DM do
begin
if Assigned(FBitmapStream) then
FreeAndNil(FBitmapStream);
if Assigned(FBlkStream) then
FreeAndNil(FBlkStream);
if TF_Main(FForm).GDBMode = bkNormBase then
begin
FBitmapStream := GetComponIconByIconType(FDesignWizardParams.IDDesignIcon, FDesignWizardParams.ObjectSignType, ieBMP);
FBlkStream := GetComponIconByIconType(FDesignWizardParams.IDDesignIcon, FDesignWizardParams.ObjectSignType, ieBLK);
end
else
if (TF_Main(FForm).GDBMode = bkProjectManager) and (FSpravochnik <> nil) then
begin
FBitmapStream := FSpravochnik.GetObjectIconByIconType(FDesignWizardParams.GUIDDesignIcon, FDesignWizardParams.ObjectSignType, ieBMP);
FBlkStream := FSpravochnik.GetObjectIconByIconType(FDesignWizardParams.GUIDDesignIcon, FDesignWizardParams.ObjectSignType, ieBLK);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.LoadStreams', E.Message);
end;
end;
procedure TF_ComponDesignWizard.DoStep(AIndex: Integer);
begin
try
FStepIndex := AIndex;
pcWizard.ActivePageIndex := AIndex;
case AIndex of
0:
LoadImage;
1: begin
edHeight.Value := FloatInUOM(FDesignWizardParams.Height, umM, FUOM);
edWidth.Value := FloatInUOM(FDesignWizardParams.Width, umM, FUOM);
edLeftBound.Value := FloatInUOM(FDesignWizardParams.LeftBound, umM, FUOM);
edTopBound.Value := FloatInUOM(FDesignWizardParams.TopBound, umM, FUOM);
edBottomBound.Value := FloatInUOM(FDesignWizardParams.BottomBound, umM, FUOM);
edRightBound.Value := FloatInUOM(FDesignWizardParams.RightBound, umM, FUOM);
PutBlkStreamOnCAD;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
aBack.Enabled := true;
aNext.Visible := true;
aPrepare.Visible := true;
case AIndex of
MinStep:
begin
aBack.Enabled := false;
aPrepare.Visible := false;
end;
MaxStep:
begin
aNext.Visible := false;
aPrepare.Visible := true;
end;
end;
gbNavigatorResize(gbNavigator);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.DoStep', E.Message);
end;
end;
procedure TF_ComponDesignWizard.aBackExecute(Sender: TObject);
begin
try
LoadBoundsFromWiardToParams;
DoStep(FStepIndex - 1);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.aBackExecute', E.Message);
end;
end;
procedure TF_ComponDesignWizard.aNextExecute(Sender: TObject);
begin
try
if FDesignWizardParams.IDDesignIcon > 0 then
DoStep(FStepIndex + 1)
else
ShowMessageByType(Self.Handle, smtDisplay, cComponDesignWizard_Mes1, Application.Title, MB_ICONINFORMATION or MB_OK);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.aNextExecute', E.Message);
end;
end;
procedure TF_ComponDesignWizard.aPrepareExecute(Sender: TObject);
begin
//
end;
procedure TF_ComponDesignWizard.aChoiceDesignImageExecute(Sender: TObject);
begin
try
if TF_Main(FForm).GDBMode = bkNormBase then
FDesignWizardParams.IDDesignIcon := F_NormBase.DM.GetIDObjectIconFromGuide(FDesignWizardParams.IDDesignIcon)
else
if TF_Main(FForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkObjectIcons, FDesignWizardParams.GUIDDesignIcon) then
if FSpravochnik.LastObjectIcon <> nil then
begin
FDesignWizardParams.GUIDDesignIcon := FSpravochnik.LastObjectIcon.GUID;
FDesignWizardParams.IDDesignIcon := FSpravochnik.LastObjectIcon.ID;
end;
end;
LoadStreams;
LoadImage;
{with F_NormBase do
begin
F_CaseForm.GFormMode := fmMake;
F_CaseForm.GViewKind := vkObjectIcons;
if F_CaseForm.ShowModal = mrOk then
begin
FDesignWizardParams.IDDesignIcon := DM.DataSet_OBJECT_ICONS.FN(fnID).AsInteger;
LoadStreams;
LoadImage;
end;
end;}
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.aChoiceDesignImageExecute', E.Message);
end;
end;
procedure TF_ComponDesignWizard.aClearDesignImageExecute(Sender: TObject);
begin
try
ClearcxImage(ImgDesignIcon);
FDesignWizardParams.IDDesignIcon := 0;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.aClearDesignImageExecute', E.Message);
end;
end;
procedure TF_ComponDesignWizard.FormCreate(Sender: TObject);
begin
try
FBitmapStream := nil;
FBlkStream := nil;
edHeight.DisplayFormat := GetDisplayFormatForFloat;
edWidth.DisplayFormat := GetDisplayFormatForFloat;
edLeftBound.DisplayFormat := GetDisplayFormatForFloat;
edTopBound.DisplayFormat := GetDisplayFormatForFloat;
edBottomBound.DisplayFormat := GetDisplayFormatForFloat;
edRightBound.DisplayFormat := GetDisplayFormatForFloat;
PCad.OnMouseWheel := nil;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.FormCreate', E.Message);
end;
end;
procedure TF_ComponDesignWizard.PutBlkStreamOnCAD;
var
FileName: String;
BlockFig: TBlock;
aWidth, aHeight: Double;
begin
try
PCad.Clear(0);
if FBlkStream <> nil then
begin
{$if Defined(ES_GRAPH_SC)}
FileName := ExeDir + '\.blk\TempStream.pwb';
{$else}
FileName := ExtractFileDir(Application.ExeName) + '\.blk\TempStream.pwb';
{$ifend}
FBlkStream.SaveToFile(FileName);
BlockFig := TBlock(PCad.InsertBlockwithFileName(1, FileName, 0, 0));
aWidth := BlockFig.GetBoundRect.Right - BlockFig.GetBoundRect.Left;
aHeight := BlockFig.GetBoundRect.Bottom - BlockFig.GetBoundRect.Top;
PCad.WorkWidth := aWidth;
PCad.WorkHeight := aHeight;
BlockFig.move(aWidth / 2, aHeight / 2);
if BlockFig.Selected then
BlockFig.Deselect;
BlockFig.LockModify := True;
BlockFig.LockMove := True;
end
else
Showmessage(cComponDesignWizard_Mes2);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.PutBlkStreamOnCAD', E.Message);
end;
end;
procedure TF_ComponDesignWizard.gbNavigatorResize(Sender: TObject);
begin
try
SetMiddleControlChilds(TControl(Sender), TControl(Self));
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.gbNavigatorResize', E.Message);
end;
end;
function TF_ComponDesignWizard.IfVisibleHorScrollBar: Boolean;
var
Client_Width: Integer;
Page: TRect;
begin
try
Result := false;
Client_Width := PCad.ClientWidth;
Page := PCad.GetPageRect;
if (Page.Left < 0) or (Page.Right > Client_Width) then
Result := True
else
Result := False;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.IfVisibleHorScrollBar', E.Message);
end;
end;
function TF_ComponDesignWizard.IfVisibleVerScrollBar: Boolean;
var
Client_Height: Integer;
Page: TRect;
begin
try
Result := false;
Client_Height := PCad.ClientHeight;
Page := PCad.GetPageRect;
if (Page.Top < 0) or (Page.Bottom > Client_Height) then
Result := True
else
Result := False;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.IfVisibleVerScrollBar', E.Message);
end;
end;
function TF_ComponDesignWizard.GetMaxScrollsPosition: TPoint;
var
Page: TRect;
PageX, PageY: Integer;
ClientX, ClientY: Integer;
begin
try
Result := Point(0, 0);
Page := PCad.GetPageRect;
PageX := abs(Page.Right - Page.Left);
PageY := abs(Page.Bottom - page.Top);
ClientX := PCad.ClientWidth;
ClientY := PCad.ClientHeight;
Result.x := PageX - ClientX + 59;
Result.y := PageY - ClientY + 59;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.GetMaxScrollsPosition', E.Message);
end;
end;
function TF_ComponDesignWizard.GetPageSizesScrolls: TPoint;
var
Page: TRect;
PageX, PageY: Integer;
ClientX, ClientY: Integer;
begin
try
Result := Point(0, 0);
Page := PCad.GetPageRect;
PageX := abs(Page.Right - Page.Left);
PageY := abs(Page.Bottom - page.Top);
ClientX := PCad.ClientWidth;
ClientY := PCad.ClientHeight;
Result.x := Round(ClientX / PageX * 100);
Result.y := Round(ClientY / PageY * 100);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.GetPageSizesScrolls', E.Message);
end;
end;
procedure TF_ComponDesignWizard.Set_PCad_HorScroll;
var
Koef_ScrollPos_X: Double;
MaxCADScroll_X: Integer;
SetScrollPos_X: Integer;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAD
MaxCADScroll_X := GetMaxScrollsPosition.X;
// Sets
if (HorScroll.Max - HorScroll.PageSize) > 0 then
begin
Koef_ScrollPos_X := HorScroll.Position / (HorScroll.Max - HorScroll.PageSize);
SetScrollPos_X := round(MaxCADScroll_X * Koef_ScrollPos_X);
PCad.SetHScrollPosition(SetScrollPos_X, True);
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.Set_PCad_HorScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.Set_PCad_VerScroll;
var
Koef_ScrollPos_Y: Double;
MaxCADScroll_Y: Integer;
SetScrollPos_Y: Integer;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAD
MaxCADScroll_Y := GetMaxScrollsPosition.Y;
// Sets
if (VerScroll.Max - VerScroll.PageSize) > 0 then
begin
Koef_ScrollPos_Y := VerScroll.Position / (VerScroll.Max - VerScroll.PageSize);
SetScrollPos_Y := round(MaxCADScroll_Y * Koef_ScrollPos_Y);
PCad.SetVScrollPosition(SetScrollPos_Y, True);
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.Set_PCad_VerScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.Set_SCS_HorScroll;
var
MaxCADScroll_X: Integer;
CurScrollPos_X: Integer;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAD
CurScrollPos_X := PCad.HSCBarPosition;
MaxCADScroll_X := GetMaxScrollsPosition.X;
// Sets
HorScroll.PageSize := GetPageSizesScrolls.X;
if MaxCADScroll_X > 0 then
begin
HorScroll.Position := round(CurScrollPos_X / MaxCADScroll_X * (HorScroll.Max - HorScroll.PageSize + 1));
try
if Self.Visible then
PCad.SetFocus;
except
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.Set_SCS_HorScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.Set_SCS_VerScroll;
var
MaxCADScroll_Y: Integer;
CurScrollPos_Y: Integer;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAD
CurScrollPos_Y := PCad.VSCBarPosition;
MaxCADScroll_Y := GetMaxScrollsPosition.Y;
// Sets pos
VerScroll.PageSize := GetPageSizesScrolls.Y;
if MaxCADScroll_Y > 0 then
begin
VerScroll.Position := round(CurScrollPos_Y / MaxCADScroll_Y * (VerScroll.Max - VerScroll.PageSize + 1));
try
if self.Visible then
PCad.SetFocus;
except
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.Set_SCS_VerScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.ChangeScrollsOnChangeListSize;
begin
try
PCad.AutoRefresh := False;
// <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if IfVisibleHorScrollBar then
begin
HorScroll.Visible := True;
Set_SCS_HorScroll;
end
else
HorScroll.Visible := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if ifVisibleVerScrollBar then
begin
VerScroll.Visible := True;
Set_SCS_VerScroll;
end
else
VerScroll.Visible := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
if IfVisibleHorScrollBar and not ifVisibleVerScrollBar then
if HorScroll.Width <> (PCad.Width - 7) then
HorScroll.Width := PCad.Width - 7;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
if not IfVisibleHorScrollBar and ifVisibleVerScrollBar then
if VerScroll.Height <> (PCad.Height - 7) then
VerScroll.Height := PCad.Height - 7;
// <20><><EFBFBD>
if IfVisibleHorScrollBar and ifVisibleVerScrollBar then
begin
if HorScroll.Width <> (PCad.Width - 15 - 7) then
HorScroll.Width := PCad.Width - 15 - 7;
if VerScroll.Height <> (PCad.Height - 15 - 7) then
VerScroll.Height := PCad.Height - 15 - 7;
end;
PCad.AutoRefresh := True;
RefreshCAD_T(PCad);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.ChangeScrollsOnChangeListSize', E.Message);
end;
end;
procedure TF_ComponDesignWizard.PCadScaleChanged(Sender: TObject);
var
NewScrollPosX: Double;
NewScrollPosY: Double;
SetScrollPosX: Integer;
SetScrollPosY: Integer;
NewZoomScale: Integer;
CalcedZoomKoef: Double;
CalcedZoomDelta: Double;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NewZoomScale := PCad.ZoomScale;
CalcedZoomKoef := (GSavedZoomScale / NewZoomScale);
CalcedZoomDelta := (NewZoomScale - GSavedZoomScale);
if IfVisibleHorScrollBar then
begin
// CORRECT!!!
if PCad.SelectedCount = 0 then
begin
SetScrollPosX := Round(GSavedScrollPosX / CalcedZoomKoef + 304 / GSavedZoomScale * CalcedZoomDelta);
PCad.SetHScrollPosition(SetScrollPosX, PCad.AutoRefresh);
end;
HorScroll.Visible := True;
Set_SCS_HorScroll;
end
else
HorScroll.Visible := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if ifVisibleVerScrollBar then
begin
if PCad.SelectedCount = 0 then
begin
SetScrollPosY := Round(GSavedScrollPosY / CalcedZoomKoef + 268 / GSavedZoomScale * CalcedZoomDelta);
PCad.SetVScrollPosition(SetScrollPosY, PCad.AutoRefresh);
end;
VerScroll.Visible := True;
Set_SCS_VerScroll;
end
else
VerScroll.Visible := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
if IfVisibleHorScrollBar and not ifVisibleVerScrollBar then
if HorScroll.Width <> (PCad.Width - 7) then
HorScroll.Width := PCad.Width - 7;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
if not IfVisibleHorScrollBar and ifVisibleVerScrollBar then
if VerScroll.Height <> (PCad.Height - 7) then
VerScroll.Height := PCad.Height - 7;
// <20><><EFBFBD>
if IfVisibleHorScrollBar and ifVisibleVerScrollBar then
begin
if HorScroll.Width <> (PCad.Width - 15 - 7) then
HorScroll.Width := PCad.Width - 15 - 7;
if VerScroll.Height <> (PCad.Height - 15 - 7) then
VerScroll.Height := PCad.Height - 15 - 7;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.PCadScaleChanged', E.Message);
end;
end;
procedure TF_ComponDesignWizard.FormResize(Sender: TObject);
begin
try
ChangeScrollsOnChangeListSize;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.FormResize', E.Message);
end;
end;
procedure TF_ComponDesignWizard.HorScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
try
if ScrollCode = scEndScroll then
Set_PCad_HorScroll;
PCad.SetFocus;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.HorScrollScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.VerScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
try
if ScrollCode = scEndScroll then
Set_PCad_VerScroll;
PCad.SetFocus;
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.VerScrollScroll', E.Message);
end;
end;
procedure TF_ComponDesignWizard.FormMouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
X, Y: Integer;
begin
try
Handled := True;
PCad.AutoRefresh := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ssCtrl in Shift then
begin
PCad.ZoomScale := PCad.ZoomScale - 5;
if PCad.AutoRefresh then
RefreshCAD(PCad);
end
else
// Scrolls (Horiz)
if (ssShift in Shift) and not (ssCtrl in Shift) then
begin
X := PCad.HSCBarPosition;
PCad.SetHScrollPosition(X + 10, True);
end
else
// Scrolls (Vert)
if Shift = [] then
begin
Y := PCad.VSCBarPosition;
PCad.SetVScrollPosition(Y + 10, True);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD>
Set_SCS_HorScroll;
Set_SCS_VerScroll;
PCad.AutoRefresh := True;
RefreshCAD_T(PCad);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.FormMouseWheelDown', E.Message);
end;
end;
procedure TF_ComponDesignWizard.FormMouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
X, Y: Integer;
begin
try
Handled := True;
PCad.AutoRefresh := False;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ssCtrl in Shift then
begin
PCad.ZoomScale := PCad.ZoomScale + 5;
if PCad.AutoRefresh then
RefreshCAD(PCad);
end
else
// Scrolls (Horiz)
if (ssShift in Shift) and not (ssCtrl in Shift) then
begin
X := PCad.HSCBarPosition;
PCad.SetHScrollPosition(X - 10, True);
end
else
// Scrolls (Vert)
if Shift = [] then
begin
Y := PCad.VSCBarPosition;
PCad.SetVScrollPosition(Y - 10, True);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Set_SCS_HorScroll;
Set_SCS_VerScroll;
PCad.AutoRefresh := True;
RefreshCAD_T(PCad);
except
on E: Exception do AddExceptionToLogEx('TF_ComponDesignWizard.FormMouseWheelUp', E.Message);
end;
end;
procedure TF_ComponDesignWizard.FormShow(Sender: TObject);
begin
try
if assigned(GCadForm) then
begin
SpeedButton1.Visible := True;
SpeedButton2.Visible := True;
end
else
begin
SpeedButton1.Visible := False;
SpeedButton2.Visible := False;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (FUOM = umSM) or (FUOM = umM) then
PCad.RulerSystem := rsMetric
else
if (FUOM = umIn) or (FUOM = umFt) then
PCad.RulerSystem := rsWhitworth;
if FUOM = umSM then
begin
Label8.Caption := cMetric_sm;
Label9.Caption := cMetric_sm;
end;
if FUOM = umM then
begin
Label8.Caption := cMetric_m;
Label9.Caption := cMetric_m;
end;
if FUOM = umIn then
begin
Label8.Caption := cWhitworth_in;
Label9.Caption := cWhitworth_in;
end;
if FUOM = umFt then
begin
Label8.Caption := cWhitworth_ft;
Label9.Caption := cWhitworth_ft;
end;
except
on E: Exception do AddExceptionToLogEx('', E.Message);
end;
end;
procedure TF_ComponDesignWizard.RzNumericEdit1DblClick(Sender: TObject);
begin
PCad.MapScale := RzNumericEdit1.Value;
end;
procedure TF_ComponDesignWizard.SpeedButton1Click(Sender: TObject);
begin
PCad.SetTool(toFigure, 'TSCSHDimLine');
end;
procedure TF_ComponDesignWizard.SpeedButton2Click(Sender: TObject);
begin
PCad.SetTool(toFigure, 'TSCSVDimLine');
end;
end.