⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 矢量绘图组件(开源版)
💻 PAS
📖 第 1 页 / 共 4 页
字号:
begin
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SENDTOBACK, True);
end;

procedure TMainForm.EditBringToFrontUpdate(Sender: TObject);
begin
  EditBringToFront.Enabled := not IsReadonly and (SimpleGraph.SelectedObjects.Count > 0);
end;

procedure TMainForm.EditBringToFrontExecute(Sender: TObject);
begin
  SimpleGraph.ForEachObject(ForEachCallback, FEO_BRINGTOFRONT, True);
end;

procedure TMainForm.EditAlignUpdate(Sender: TObject);
begin
  EditAlign.Enabled := (SimpleGraph.SelectedObjects.Count > 1);
end;

procedure TMainForm.EditAlignExecute(Sender: TObject);
var
  H: THAlignOption;
  V: TVAlignOption;
begin
  if TAlignDialog.Execute(H, V) then
    SimpleGraph.AlignSelection(H, V);
end;

procedure TMainForm.EditSizeUpdate(Sender: TObject);
begin
  EditSize.Enabled := (SimpleGraph.SelectedObjects.Count > 1);
end;

procedure TMainForm.EditSizeExecute(Sender: TObject);
var
  Horz, Vert: TResizeOption;
begin
  if TSizeDialog.Execute(Horz, Vert) then
    SimpleGraph.ResizeSelection(Horz, Vert);
end;

procedure TMainForm.EditLockNodesUpdate(Sender: TObject);
begin
  EditLockNodes.Checked := SimpleGraph.LockNodes;
  EditLockNodes.Enabled := not IsReadonly;
end;

procedure TMainForm.EditLockNodesExecute(Sender: TObject);
begin
  SimpleGraph.LockNodes := not SimpleGraph.LockNodes;
end;

procedure TMainForm.EditLockLinksUpdate(Sender: TObject);
begin
  EditLockLinks.Checked := SimpleGraph.LockLinks;
  EditLockLinks.Enabled := not IsReadonly;
end;

procedure TMainForm.EditLockLinksExecute(Sender: TObject);
begin
  SimpleGraph.LockLinks := not SimpleGraph.LockLinks;
end;

procedure TMainForm.EditPropertiesExecute(Sender: TObject);
var
  LinkCount: Integer;
begin
  if SimpleGraph.SelectedObjects.Count = 0 then
    TDesignerProperties.Execute(SimpleGraph)
  else
  begin
    LinkCount := SimpleGraph.SelectedObjectsCount(TGraphLink);
    if LinkCount = 0 then
      TNodeProperties.Execute(SimpleGraph.SelectedObjects)
    else if LinkCount = SimpleGraph.SelectedObjects.Count then
      TLinkProperties.Execute(SimpleGraph.SelectedObjects)
    else
      TObjectProperties.Execute(SimpleGraph.SelectedObjects);
  end;
end;

procedure TMainForm.ClipboardNativeUpdate(Sender: TObject);
begin
  ClipboardNative.Checked := cfNative in SimpleGraph.ClipboardFormats;
end;

procedure TMainForm.ClipboardNativeExecute(Sender: TObject);
begin
  if cfNative in SimpleGraph.ClipboardFormats then
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats - [cfNative]
  else
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats + [cfNative];
end;

procedure TMainForm.ClipboardBitmapUpdate(Sender: TObject);
begin
  ClipboardBitmap.Checked := cfBitmap in SimpleGraph.ClipboardFormats;
end;

procedure TMainForm.ClipboardBitmapExecute(Sender: TObject);
begin
  if cfBitmap in SimpleGraph.ClipboardFormats then
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats - [cfBitmap]
  else
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats + [cfBitmap];
end;

procedure TMainForm.ClipboardMetafileUpdate(Sender: TObject);
begin
  ClipboardMetafile.Checked := cfMetafile in SimpleGraph.ClipboardFormats;
end;

procedure TMainForm.ClipboardMetafileExecute(Sender: TObject);
begin
  if cfMetafile in SimpleGraph.ClipboardFormats then
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats - [cfMetafile]
  else
    SimpleGraph.ClipboardFormats := SimpleGraph.ClipboardFormats + [cfMetafile];
end;

procedure TMainForm.FormatBoldExecute(Sender: TObject);
begin
  FormatBold.Checked := not FormatBold.Checked;
  if FormatBold.Checked then
    SimpleGraph.ForEachObject(ForEachCallback, FEO_SETFONTBOLD, True)
  else
    SimpleGraph.ForEachObject(ForEachCallback, FEO_RESETFONTBOLD, True);
end;

procedure TMainForm.FormatItalicExecute(Sender: TObject);
begin
  FormatItalic.Checked := not FormatItalic.Checked;
  if FormatItalic.Checked then
    SimpleGraph.ForEachObject(ForEachCallback, FEO_SETFONTITALIC, True)
  else
    SimpleGraph.ForEachObject(ForEachCallback, FEO_RESETFONTITALIC, True);
end;

procedure TMainForm.FormatUnderlineExecute(Sender: TObject);
begin
  FormatUnderline.Checked := not FormatUnderline.Checked;
  if FormatUnderline.Checked then
    SimpleGraph.ForEachObject(ForEachCallback, FEO_SETFONTUNDERLINE, True)
  else
    SimpleGraph.ForEachObject(ForEachCallback, FEO_RESETFONTUNDERLINE, True);
end;

procedure TMainForm.FormatAlignLeftExecute(Sender: TObject);
begin
  FormatAlignLeft.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETALIGNMENTLEFT, True);
end;

procedure TMainForm.FormatCenterExecute(Sender: TObject);
begin
  FormatCenter.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETALIGNMENTCENTER, True);
end;

procedure TMainForm.FormatAlignRightExecute(Sender: TObject);
begin
  FormatAlignRight.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETALIGNMENTRIGHT, True);
end;

procedure TMainForm.FormatAlignTopExecute(Sender: TObject);
begin
  FormatAlignTop.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETLAYOUTTOP, True);
end;

procedure TMainForm.FormatVCenterExecute(Sender: TObject);
begin
  FormatVCenter.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETLAYOUTCENTER, True);
end;

procedure TMainForm.FormatAlignBottomExecute(Sender: TObject);
begin
  FormatAlignBottom.Checked := True;
  SimpleGraph.ForEachObject(ForEachCallback, FEO_SETLAYOUTBOTTOM, True);
end;

procedure TMainForm.ObjectsNoneUpdate(Sender: TObject);
begin
  ObjectsNone.Checked :=(SimpleGraph.CommandMode in [cmEdit, cmViewOnly]);
end;

procedure TMainForm.ObjectsNoneExecute(Sender: TObject);
begin
  if IsReadonly then
    SimpleGraph.CommandMode := cmViewOnly
  else
    SimpleGraph.CommandMode := cmEdit;
end;

procedure TMainForm.ObjectsRectangleUpdate(Sender: TObject);
begin
  ObjectsRectangle.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TRectangularNode);
  ObjectsRectangle.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsRectangleExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TRectangularNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsRoundRectUpdate(Sender: TObject);
begin
  ObjectsRoundRect.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TRoundRectangularNode);
  ObjectsRoundRect.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsRoundRectExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TRoundRectangularNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsEllipseUpdate(Sender: TObject);
begin
  ObjectsEllipse.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TEllipticNode);
  ObjectsEllipse.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsEllipseExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TEllipticNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsTriangleUpdate(Sender: TObject);
begin
  ObjectsTriangle.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TTriangularNode);
  ObjectsTriangle.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsTriangleExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TTriangularNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsRhomboidUpdate(Sender: TObject);
begin
  ObjectsRhomboid.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TRhomboidalNode);
  ObjectsRhomboid.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsRhomboidExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TRhomboidalNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsPentagonUpdate(Sender: TObject);
begin
  ObjectsPentagon.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = TPentagonalNode);
  ObjectsPentagon.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsPentagonExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := TPentagonalNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsHexagonUpdate(Sender: TObject);
begin
  ObjectsHexagon.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and
    (SimpleGraph.DefaultNodeClass = THexagonalNode);
  ObjectsHexagon.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsHexagonExecute(Sender: TObject);
begin
  SimpleGraph.DefaultNodeClass := THexagonalNode;
  SimpleGraph.CommandMode := cmInsertNode;
end;

procedure TMainForm.ObjectsLinkUpdate(Sender: TObject);
begin
  ObjectsLink.Checked :=(SimpleGraph.CommandMode = cmInsertLink);
  ObjectsLink.Enabled := not IsReadonly;
end;

procedure TMainForm.ObjectsLinkExecute(Sender: TObject);
begin
  SimpleGraph.CommandMode := cmInsertLink;
end;

procedure TMainForm.ViewZoomInUpdate(Sender: TObject);
begin
  ViewZoomIn.Enabled := (SimpleGraph.Zoom < High(TZoom));
end;

procedure TMainForm.ViewZoomInExecute(Sender: TObject);
begin
  SimpleGraph.ChangeZoomBy(+10, zoCenter);
end;

procedure TMainForm.ViewZoomOutUpdate(Sender: TObject);
begin
  ViewZoomOut.Enabled := (SimpleGraph.Zoom > Low(TZoom));
end;

procedure TMainForm.ViewZoomOutExecute(Sender: TObject);
begin
  SimpleGraph.ChangeZoomBy(-10, zoCenter);
end;

procedure TMainForm.ViewActualSizeUpdate(Sender: TObject);
begin
  ViewActualSize.Enabled := (SimpleGraph.Zoom <> 100);
end;

procedure TMainForm.ViewActualSizeExecute(Sender: TObject);
begin
  SimpleGraph.ChangeZoom(100, zoTopLeft);
end;

procedure TMainForm.ViewWholeGraphUpdate(Sender: TObject);
begin
  ViewWholeGraph.Enabled := (SimpleGraph.Objects.Count > 0);
end;

procedure TMainForm.ViewWholeGraphExecute(Sender: TObject);
begin
  SimpleGraph.ZoomGraph;
end;

procedure TMainForm.ViewGridUpdate(Sender: TObject);
begin
  ViewGrid.Checked := SimpleGraph.ShowGrid;
end;

procedure TMainForm.ViewGridExecute(Sender: TObject);
begin
  SimpleGraph.ShowGrid := not SimpleGraph.ShowGrid;
end;

procedure TMainForm.ViewFixScrollsUpdate(Sender: TObject);
begin
  ViewFixScrolls.Checked := SimpleGraph.FixedScrollBars;
end;

procedure TMainForm.ViewFixScrollsExecute(Sender: TObject);
begin
  SimpleGraph.FixedScrollBars := not SimpleGraph.FixedScrollBars;
end;

procedure TMainForm.ViewTransparentUpdate(Sender: TObject);
begin
  ViewTransparent.Checked := SimpleGraph.Transparent;
end;

procedure TMainForm.ViewTransparentExecute(Sender: TObject);
begin
  SimpleGraph.Transparent := not SimpleGraph.Transparent;
end;

procedure TMainForm.ViewPanUpdate(Sender: TObject);
begin
  ViewPan.Checked := (SimpleGraph.CommandMode = cmPan);
  ViewPan.Enabled := (SimpleGraph.HorzScrollBar.IsScrollBarVisible or
    SimpleGraph.VertScrollBar.IsScrollBarVisible);
end;

procedure TMainForm.ViewPanExecute(Sender: TObject);
begin
  SimpleGraph.CommandMode := cmPan;
end;

procedure TMainForm.HelpAboutExecute(Sender: TObject);
begin
  with TAbout.Create(Application) do
    try
      ShowModal;
    finally
      Free;
    end;
end;

procedure TMainForm.HelpUsageExecute(Sender: TObject);
begin
  THelpOnActions.Execute;
end;

procedure TMainForm.OptionsConfirmHookLinkExecute(Sender: TObject);
begin
  OptionsConfirmHookLink.Checked := not OptionsConfirmHookLink.Checked;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -