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

621 lines
17 KiB
ObjectPascal
Raw Permalink Blame History

unit U_CADObjectView;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Printers,
ActnList, ActnMan, siComp, siLngLnk, ExtCtrls, PCPanel, PCDrawBox,
PCDrawing, PowerCad, PrvForm, StdCtrls, RzCmboBx, ComCtrls, ToolWin,
Dialogs,
// PowerCad
pcMsbar, PCTypesUtils, DrawObjects, DlgBase, ExtDlgs, PCLayerDlg, OleCtnrs, PCgui,
GuiStrings, DrawEngine, Math, PlatformDefaultStyleActnCtrls;
type
TF_CADObjectView = class(TForm)
lng_Forms: TsiLangLinked;
ControlBar1: TControlBar;
PCad: TPowerCad;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ActionManager: TActionManager;
aZoomIn: TAction;
aZoomOut: TAction;
ToolButton3: TToolButton;
aPrint: TAction;
aZoom: TAction;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
cbZoomScale: TRzComboBox;
Label1: TLabel;
VerScroll: TScrollBar;
HorScroll: TScrollBar;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure aZoomInExecute(Sender: TObject);
procedure aZoomOutExecute(Sender: TObject);
procedure aPrintExecute(Sender: TObject);
procedure cbZoomScaleKeyPress(Sender: TObject; var Key: Char);
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure cbZoomScaleCloseUp(Sender: TObject);
procedure VerScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure HorScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure PCadScaleChanged(Sender: TObject);
procedure PCadKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
FScaleByCursor: Boolean; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Function IfVisibleHorScrollBar: Boolean;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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> <20><><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function GetScaleKoefs: TDoublePoint;
// <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;
public
{ Public declarations }
procedure SetZoomScale(AScale: Integer);
procedure ZoomObject(AMoveToZero: Boolean=true);
end;
procedure CreateFCADObjectView;
var
F_CADObjectView: TF_CADObjectView;
implementation
uses USCS_Main, U_CAD, U_Common, Types, U_BaseCommon;
{$R *.dfm}
procedure TF_CADObjectView.FormDestroy(Sender: TObject);
begin
try
except
on E: Exception do AddExceptionToLogExt(ClassName, MethodName(@TF_CADObjectView.FormDestroy), E.Message);
end;
end;
procedure TF_CADObjectView.FormCreate(Sender: TObject);
begin
try
PCad.OnMouseWheel := nil;
FScaleByCursor := true;
except
on E: Exception do AddExceptionToLogExt(ClassName, MethodName(@TF_CADObjectView.FormCreate), E.Message);
end;
end;
procedure TF_CADObjectView.SetZoomScale(AScale: Integer);
begin
if (aScale >= 10) and (PCad.ZoomScale <> aScale) then
begin
PCad.ZoomScale := aScale;
cbZoomScale.Text := IntToStr(aScale);
end;
end;
procedure TF_CADObjectView.ZoomObject(AMoveToZero: Boolean=true);
var
SelRect: TDoubleRect;
begin
PCad.Refresh;
if AMoveToZero then
begin
//PCad.SelectAll(0);
//SelRect := PCad.GetSelectionRect;
SelRect := PCad.GetFigureListRect(PCad.Figures);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//PCad.MoveSelection(0-SelRect.Left, 0-SelRect.Top);
PCad.MoveAllSilent(10-SelRect.Left, 10-SelRect.Top);
//F_CADObjectView.PCad.DeSelectAll(0);
//F_CADObjectView.PCad.SelectAll(0);
//F_CADObjectView.PCad.Refresh;
//PCad.DeSelectAll(0);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//SelRect := PCad.GetSelectionRect;
SelRect := PCad.GetFigureListRect(PCad.Figures);
SelRect.Right := SelRect.Right + 5;
SelRect.Bottom := SelRect.Bottom + 5;
PCad.ZoomArea(SelRect);
// Zoom Center
//F_CADObjectView.PCad.AutoRefresh := false;
PCad.ZoomScale := F_CADObjectView.PCad.ZoomScale;
PCad.Refresh;
cbZoomScale.Text := IntToStr(PCad.ZoomScale);
ChangeScrollsOnChangeListSize;
end;
procedure CreateFCADObjectView;
begin
if F_CADObjectView = nil then
begin
F_CADObjectView := TF_CADObjectView.Create(Application);
F_CADObjectView.PCad.AutoRefresh := false;
end;
F_CADObjectView.PCad.ClearFigures;
end;
procedure TF_CADObjectView.FormResize(Sender: TObject);
begin
ZoomObject;
end;
procedure TF_CADObjectView.aZoomInExecute(Sender: TObject);
begin
SetZoomScale(PCad.ZoomScale + 5);
end;
procedure TF_CADObjectView.aZoomOutExecute(Sender: TObject);
begin
SetZoomScale(PCad.ZoomScale - 5);
end;
procedure TF_CADObjectView.aPrintExecute(Sender: TObject);
var
prnW,prnH: Integer;
resX,resY: Integer;
pw, ph: integer;
begin
Printer.Orientation := TPrinterOrientation(0);
prnW := GetDeviceCaps(printer.Handle, PHYSICALWIDTH);
prnH := GetDeviceCaps(printer.Handle, PHYSICALHEIGHT);
resX := GetDeviceCaps(printer.Handle, LOGPIXELSX);
resY := GetDeviceCaps(printer.Handle, LOGPIXELSY);
pw := round(prnW / (resX / 25.4));
ph := round(prnH / (resY / 25.4));
Init_prnW := round(prnW * (PCad.WorkWidth / pw));
Init_prnH := round(prnH * (PCad.WorkHeight / ph));
PCad.PrintPreview;
end;
procedure TF_CADObjectView.cbZoomScaleKeyPress(Sender: TObject;
var Key: Char);
var
Scale: Integer;
begin
if Key = #13 then
begin
Scale := StrToIntDef(cbZoomScale.Text, -1);
if Scale <> -1 then
SetZoomScale(Scale);
end
else if Not (Key in ['0'..'9']) then
Key := #0;
end;
procedure TF_CADObjectView.FormMouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
X, Y: Integer;
begin
Handled := True;
PCad.AutoRefresh := False;
if ssCtrl in Shift then
aZoomOut.Execute
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, true);
end;
procedure TF_CADObjectView.FormMouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
X, Y: Integer;
begin
Handled := True;
PCad.AutoRefresh := False;
if ssCtrl in Shift then
aZoomIn.Execute
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, true);
end;
procedure TF_CADObjectView.cbZoomScaleCloseUp(Sender: TObject);
var
Ch: Char;
begin
cbZoomScale.Text := cbZoomScale.Items[cbZoomScale.ItemIndex];
Ch := #13;
cbZoomScaleKeyPress(Sender, Ch);
end;
procedure TF_CADObjectView.VerScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
if ScrollCode = scEndScroll then
Set_PCad_VerScroll;
PCad.SetFocus;
end;
procedure TF_CADObjectView.HorScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
if ScrollCode = scEndScroll then
Set_PCad_HorScroll;
PCad.SetFocus;
end;
function TF_CADObjectView.IfVisibleHorScrollBar: Boolean;
var
Client_Width: Integer;
Page: TRect;
begin
Result := False;
try
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_CADObjectView.IfVisibleHorScrollBar', E.Message);
end;
end;
function TF_CADObjectView.IfVisibleVerScrollBar: Boolean;
var
Client_Height: Integer;
Page: TRect;
begin
Result := False;
try
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_CADObjectView.IfVisibleVerScrollBar', E.Message);
end;
end;
Function TF_CADObjectView.GetMaxScrollsPosition: TPoint;
var
Page: TRect;
PageX, PageY: Integer;
ClientX, ClientY: Integer;
begin
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;
end;
Function TF_CADObjectView.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_CADObjectView.GetPageSizesScrolls', E.Message);
end;
end;
procedure TF_CADObjectView.Set_PCad_HorScroll;
var
Koef_ScrollPos_X: Double;
MaxCADScroll_X: Integer;
SetScrollPos_X: Integer;
begin
// <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;
end;
procedure TF_CADObjectView.Set_PCad_VerScroll;
var
Koef_ScrollPos_Y: Double;
MaxCADScroll_Y: Integer;
SetScrollPos_Y: Integer;
begin
// <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;
end;
Procedure TF_CADObjectView.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_CADObjectView.Set_SCS_HorScroll', E.Message);
end;
end;
Procedure TF_CADObjectView.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_CADObjectView.Set_SCS_VerScroll', E.Message);
end;
end;
function TF_CADObjectView.GetScaleKoefs: TDoublePoint;
var
pt: TPoint;
VisRect: TDoubleRect;
Rect: TRect;
MPos: TDoublePoint;
koefposx, koefposy: double;
x1, x2, y1, y2: double;
begin
try
Result.x := 0;
Result.y := 0;
Rect := PCad.ClientRect;
x1 := Rect.Left;
x2 := Rect.Right;
y1 := Rect.Top;
y2 := Rect.Bottom;
if FScaleByCursor then
begin
GetCursorPos(pt);
pt := Self.ScreenToClient(pt);
Result.x := pt.x;
Result.y := pt.y;
end
else
begin
Result.x := (x2 - x1) / 2;
Result.y := (y2 - y1 - 10) / 2;
end;
except
on E: Exception do addExceptionToLogEx('TF_CADObjectView.GetScaleKoefs', E.Message);
end;
end;
Procedure TF_CADObjectView.ChangeScrollsOnChangeListSize;
begin
try
PCad.AutoRefresh := False;
//PCad.SetHScrollPosition(FCurrPCadScrollX, False);
//PCad.SetVScrollPosition(FCurrPCadScrollY, 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;
SetZoomScale(Pcad.ZoomScale);
RefreshCAD_T(PCad, true);
except
on E: Exception do addExceptionToLogEx('TF_CADObjectView.ChangeScrollsOnChangeListSize', E.Message);
end;
end;
procedure TF_CADObjectView.PCadScaleChanged(Sender: TObject);
var
NewScrollPosX: Double;
NewScrollPosY: Double;
SetScrollPosX: Integer;
SetScrollPosY: Integer;
NewZoomScale: Integer;
CalcedZoomKoef: Double;
CalcedZoomDelta: Double;
Koefs: TDoublePoint;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NewZoomScale := PCad.ZoomScale;
CalcedZoomKoef := (GSavedZoomScale / NewZoomScale);
CalcedZoomDelta := (NewZoomScale - GSavedZoomScale);
Koefs := GetScaleKoefs;
if IfVisibleHorScrollBar then
begin
// CORRECT!!!
if PCad.SelectedCount = 0 then
begin
if (GSavedScrollPosX <> -1) then
begin
SetScrollPosX := Round(GSavedScrollPosX / CalcedZoomKoef + Koefs.x / GSavedZoomScale * CalcedZoomDelta);
PCad.SetHScrollPosition(SetScrollPosX, PCad.AutoRefresh);
end;
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
if (GSavedScrollPosY <> -1) then
begin
SetScrollPosY := Round(GSavedScrollPosY / CalcedZoomKoef + Koefs.y / GSavedZoomScale * CalcedZoomDelta);
PCad.SetVScrollPosition(SetScrollPosY, PCad.AutoRefresh);
end;
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_CAD.PCadScaleChanged', E.Message);
end;
end;
procedure TF_CADObjectView.PCadKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key in [48,96]) then //22.09.2011
SetZoomScale(100);
end;
end.