mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
835 lines
25 KiB
ObjectPascal
835 lines
25 KiB
ObjectPascal
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.
|