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

📄 main.pas

📁 FlexGraphics是一套创建矢量图形的VCL组件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Menus, ImgList, ActnList, ExtCtrls, StdActns, Buttons,
  ClipBrd, Printers, Jpeg, fChild, fOptions, Grids,
  TB2ToolWindow, TB2Item, TB2Dock, TB2Toolbar, RxGIF, 
  {$IFDEF USE_FLEXPLUS} FlexPlus, {$ENDIF}
  FlexBase, FlexProps, FlexUtils, FlexControls, FlexPath, FlexFileFormats;

{.DEFINE DEBUG_HISTORY}

{.DEFINE DEBUG_POINTS}

type
  TEditMainForm = class(TForm)
    sbrMain: TStatusBar;
    imgToolIcons: TImageList;
    imgStdIcons: TImageList;
    pmControl: TPopupMenu;
    MainMenu1: TMainMenu;
    miFile: TMenuItem;
    miNew: TMenuItem;
    miOpen: TMenuItem;
    miSave: TMenuItem;
    miEdit: TMenuItem;
    miArrange: TMenuItem;
    miWindow: TMenuItem;
    miToolBarsDelimiter: TMenuItem;
    miHelp: TMenuItem;
    miAddToLibrary: TMenuItem;
    miView: TMenuItem;
    miExit: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    BackOne1: TMenuItem;
    ForwardOne1: TMenuItem;
    Mnemo1: TMenuItem;
    Newscheme1: TMenuItem;
    Deletescheme1: TMenuItem;
    Newlayer1: TMenuItem;
    Deletelayer1: TMenuItem;
    Cut1: TMenuItem;
    Copy1: TMenuItem;
    Paste1: TMenuItem;
    Delete1: TMenuItem;
    Cascade1: TMenuItem;
    TileHorizontally1: TMenuItem;
    TileVertically1: TMenuItem;
    MinimizeAll1: TMenuItem;
    BackOne2: TMenuItem;
    Close1: TMenuItem;
    Palette1: TMenuItem;
    Clone1: TMenuItem;
    SaveAs1: TMenuItem;
    Properties1: TMenuItem;
    BackOne3: TMenuItem;
    ForwardOne2: TMenuItem;
    Toback1: TMenuItem;
    Tofront1: TMenuItem;
    Group1: TMenuItem;
    Ungroup1: TMenuItem;
    Cut2: TMenuItem;
    Copy2: TMenuItem;
    Paste2: TMenuItem;
    Delete2: TMenuItem;
    Options1: TMenuItem;
    Print1: TMenuItem;
    Duplicate1: TMenuItem;
    Duplicate2: TMenuItem;
    Inspector1: TMenuItem;
    Library1: TMenuItem;
    Userdata1: TMenuItem;
    About1: TMenuItem;
    Prview1: TMenuItem;
    Import1: TMenuItem;
    Export1: TMenuItem;
    Layermanager1: TMenuItem;

    alMain: TActionList;
    acFileNew: TAction;
    acFileExit: TAction;
    acFileOpen: TAction;
    acFileSave: TAction;
    acFileSaveAs: TAction;
    acEditCut: TAction;
    acEditCopy: TAction;
    acEditPaste: TAction;
    acEditClone: TAction;
    acEditUndo: TAction;
    acEditRedo: TAction;
    acFilePrint: TAction;
    acFileImport: TAction;
    acFileExport: TAction;
    acArrangeForwardOne: TAction;
    acArrangeBackOne: TAction;
    acArrangeToFront: TAction;
    acArrangeToBack: TAction;
    acArrangeGroup: TAction;
    acArrangeUngroup: TAction;
    acLayerNew: TAction;
    acLayerDelete: TAction;
    acEditDelete: TAction;
    acSchemeNew: TAction;
    acSchemeDelete: TAction;
    acArrangeToBack1: TMenuItem;
    acArrangeToFront1: TMenuItem;
    acArrangeGroup1: TMenuItem;
    acArrangeUngroup1: TMenuItem;
    acWindowArrange: TWindowArrange;
    acWindowCascade: TWindowCascade;
    acWindowClose: TWindowClose;
    acWindowMinimizeAll: TWindowMinimizeAll;
    acWindowTileHorizontal: TWindowTileHorizontal;
    acWindowTileVertical: TWindowTileVertical;
    acFileProperties: TAction;
    acDockerInspector: TAction;
    acDockerLibrary: TAction;
    acDockerLayers: TAction;
    acDockerPalette: TAction;
    acAlignLeft: TAction;
    acAlignHCenter: TAction;
    acAlignRight: TAction;
    acAlignTop: TAction;
    acAlignVCenter: TAction;
    acAlignBottom: TAction;
    acAlignCenter: TAction;
    acLibItemAdd: TAction;
    acViewOptions: TAction;
    acFilePreview: TAction;
    acZoomIn: TAction;
    acZoomOut: TAction;
    acZoomActual: TAction;
    acEditDuplicate: TAction;
    acTranslateRotateCW: TAction;
    acTranslateRotateCCW: TAction;
    acTranslateFlipHorz: TAction;
    acTranslateFlipVertical: TAction;
    acDockerUserData: TAction;
    acHelpAbout: TAction;
    acGridShow: TAction;
    acGridPixelShow: TAction;
    acGridSnap: TAction;
    acGridOptions: TAction;
    acLayerToBack: TAction;
    acLayerToFront: TAction;
    acDebugPoints: TAction;
    acCurveJoin: TAction;
    acCurveBreak: TAction;
    acCurveClose: TAction;
    acCurveToLine: TAction;
    acCurveToCurve: TAction;
    acCurveBreakApart: TAction;
    acCurveCombine: TAction;
    acCurveFlatten: TAction;
    acCurveConvertToCurve: TAction;
    acDebugHistory: TAction;

    pd_Main: TPrintDialog;
    od_Main: TOpenDialog;
    sd_Main: TSaveDialog;
    cd_Palette: TColorDialog;
    od_Import: TOpenDialog;
    sd_Export: TSaveDialog;

    panColors: TPanel;
    dgColors: TDrawGrid;
    sptColors: TSplitter;

    cbZoom: TComboBox;
    cbActiveLayer: TComboBox;
    cbActiveScheme: TComboBox;
    
    tbrTools: TTBToolbar;
    tbrStdTools: TTBToolbar;
    tbrZoomTools: TTBToolbar;
    tbrGridTools: TTBToolbar;
    tbrLayoutTools: TTBToolbar;
    tbrTranslateTools: TTBToolbar;
    tbrAlignTools: TTBToolbar;
    tbrCurveEditTools: TTBToolbar;

    tbtArrowTool: TTBItem;
    tbtShapeTool: TTBItem;
    tbtZoomTool: TTBItem;
    tbtPanTool: TTBItem;
    tbtPolyLineTool: TTBItem;
    tbtPolygonTool: TTBItem;
    tbtConnectorTool: TTBItem;
    tbtRectTool: TTBItem;
    tbtEllipseTool: TTBItem;
    tbtTextTool: TTBItem;
    tbtPictureTool: TTBItem;

    TBItem1: TTBItem;
    TBItem2: TTBItem;
    TBItem3: TTBItem;
    TBSeparatorItem1: TTBSeparatorItem;
    TBItem4: TTBItem;
    TBItem5: TTBItem;
    TBItem6: TTBItem;
    TBItem7: TTBItem;
    TBItem8: TTBItem;
    TBItem9: TTBItem;
    TBItem10: TTBItem;
    TBSeparatorItem2: TTBSeparatorItem;
    TBSeparatorItem3: TTBSeparatorItem;
    TBItem11: TTBItem;
    TBItem12: TTBItem;
    TBItem13: TTBItem;
    TBSeparatorItem4: TTBSeparatorItem;
    TBItem14: TTBItem;
    TBControlItem3: TTBControlItem;
    TBItem15: TTBItem;
    TBItem16: TTBItem;
    TBItem17: TTBItem;
    TBItem18: TTBItem;
    TBItem19: TTBItem;
    TBControlItem4: TTBControlItem;
    TBSeparatorItem5: TTBSeparatorItem;
    TBSeparatorItem6: TTBSeparatorItem;
    TBItem20: TTBItem;
    TBItem21: TTBItem;
    TBItem22: TTBItem;
    TBItem23: TTBItem;
    TBItem24: TTBItem;
    TBItem25: TTBItem;
    TBItem26: TTBItem;
    TBItem27: TTBItem;
    TBSeparatorItem7: TTBSeparatorItem;
    TBSeparatorItem8: TTBSeparatorItem;
    TBSeparatorItem9: TTBSeparatorItem;
    TBItem28: TTBItem;
    TBItem29: TTBItem;
    TBControlItem1: TTBControlItem;
    TBItem30: TTBItem;
    TBItem31: TTBItem;
    TBItem32: TTBItem;
    TBItem33: TTBItem;
    TBItem34: TTBItem;
    TBItem35: TTBItem;
    TBItem36: TTBItem;
    TBItem37: TTBItem;
    TBItem38: TTBItem;
    TBItem39: TTBItem;
    TBItem40: TTBItem;
    TBItem41: TTBItem;
    TBItem42: TTBItem;
    TBItem43: TTBItem;
    TBItem44: TTBItem;
    TBItem45: TTBItem;
    TBItem46: TTBItem;
    TBItem47: TTBItem;
    TBSeparatorItem10: TTBSeparatorItem;
    TBItem48: TTBItem;
    TBItem49: TTBItem;

    tdDockUp: TTBDock;
    tdDockLeft: TTBDock;
    tdDockRight: TTBDock;
    tdDockBottom: TTBDock;

    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure tbtToolClick(Sender: TObject);
    procedure tbrStdToolsClose(Sender: TObject);
    procedure cbActiveLayerChange(Sender: TObject);
    procedure cbActiveSchemeChange(Sender: TObject);
    procedure cbZoomExit(Sender: TObject);
    procedure cbZoomClick(Sender: TObject);
    procedure cbZoomKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure acFileNewExecute(Sender: TObject);
    procedure acLayerNewExecute(Sender: TObject);
    procedure acLayerDeleteExecute(Sender: TObject);
    procedure acFileExitExecute(Sender: TObject);
    procedure acFileOpenExecute(Sender: TObject);
    procedure acSchemeDeleteExecute(Sender: TObject);
    procedure acSchemeNewExecute(Sender: TObject);
    procedure acFilePropertiesExecute(Sender: TObject);
    procedure acArrangeForwardOneExecute(Sender: TObject);
    procedure acArrangeBackOneExecute(Sender: TObject);
    procedure acArrangeToFrontExecute(Sender: TObject);
    procedure acArrangeToBackExecute(Sender: TObject);
    procedure acArrangeGroupExecute(Sender: TObject);
    procedure acArrangeUngroupExecute(Sender: TObject);
    procedure acEditDeleteExecute(Sender: TObject);
    procedure acDockerExecute(Sender: TObject);
    procedure acEditCopyExecute(Sender: TObject);
    procedure acEditPasteExecute(Sender: TObject);
    procedure acEditCutExecute(Sender: TObject);
    procedure acEditPasteUpdate(Sender: TObject);
    procedure acAlignExecute(Sender: TObject);
    procedure acFilePreviewExecute(Sender: TObject);
    procedure acLibItemAddExecute(Sender: TObject);
    procedure acViewOptionsExecute(Sender: TObject);
    procedure acFilePrintExecute(Sender: TObject);
    procedure acZoomInExecute(Sender: TObject);
    procedure acZoomOutExecute(Sender: TObject);
    procedure acEditDuplicateExecute(Sender: TObject);
    procedure acZoomActualExecute(Sender: TObject);
    procedure acHelpAboutExecute(Sender: TObject);
    procedure acFileSaveExecute(Sender: TObject);
    procedure acTranslateRotateCWExecute(Sender: TObject);
    procedure acTranslateRotateCCWExecute(Sender: TObject);
    procedure acTranslateFlipHorzExecute(Sender: TObject);
    procedure acTranslateFlipVerticalExecute(Sender: TObject);
    procedure acFileImportExecute(Sender: TObject);
    procedure acFileExportExecute(Sender: TObject);
    procedure acGridShowExecute(Sender: TObject);
    procedure acGridPixelShowExecute(Sender: TObject);
    procedure acGridSnapExecute(Sender: TObject);
    procedure acLayerToFrontExecute(Sender: TObject);
    procedure acLayerToBackExecute(Sender: TObject);
    procedure acDebugPointsExecute(Sender: TObject);
    procedure acCurveJoinExecute(Sender: TObject);
    procedure acCurveBreakExecute(Sender: TObject);
    procedure acCurveCloseExecute(Sender: TObject);
    procedure acCurveToLineExecute(Sender: TObject);
    procedure acCurveToCurveExecute(Sender: TObject);
    procedure acCurveBreakApartExecute(Sender: TObject);
    procedure acCurveCombineExecute(Sender: TObject);
    procedure acCurveFlattenExecute(Sender: TObject);
    procedure acCurveConvertToCurveExecute(Sender: TObject);
    procedure acGridOptionsExecute(Sender: TObject);
    procedure acDockerPaletteExecute(Sender: TObject);
    procedure acEditCloneExecute(Sender: TObject);
    procedure acEditUndoExecute(Sender: TObject);
    procedure acEditRedoExecute(Sender: TObject);
    procedure acDebugHistoryExecute(Sender: TObject);
    procedure acFileSaveAsExecute(Sender: TObject);
    procedure panColorsResize(Sender: TObject);
    procedure sptColorsMoved(Sender: TObject);
    procedure dgColorsDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure dgColorsMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure sbrMainDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect);
  private
    { Private declarations }
    FActiveFlex: TFlexPanel;
    FActiveFlexModified: boolean;
    FIniting: boolean;
    FIsFileLoading: boolean;
    FInspDataNeedUpdate: boolean;
    FInspPropsNeedUpdate: boolean;
    FFilerProgress: integer;
    FToolbarItems: TList;
    FColors: TList;
    procedure RegisterExternalControls;
    function  ExecuteImportExportDialog(Kind: TFlexFileSupportKind): integer;
    function  GetToolScale: integer;
    procedure SetCurrentOptions(Flex: TFlexPanel;
      const Edited: TOptionEditPages = AllOptions);
    function  CreateToolWindow(ToolForm: TCustomForm;
      DockTo: TTBDock): TTBToolWindow;
    procedure ToolbarItemClick(Sender: TObject);
    procedure ToolWindowClose(Sender: TObject);
    procedure ToolWinNeedClose(Sender: TObject);
    procedure ToolWinPopupChange(Sender: TObject);
    procedure ControlPropChanged(Sender: TObject; Prop: TCustomProp);
    procedure CheckTools;
    procedure CheckToolbars;
    procedure CheckToolButtons(Sender: TObject);
    procedure CheckUpdates(Flex: TFlexPanel);
    procedure ChildChange(Sender: TObject);
    procedure HistoryChange(Sender: TObject);
    procedure CustomColorsChange(Sender: TObject);
    procedure ActiveLibChange(Sender: TObject);
    function  CreateDocument(const DocName: string): TFlexChildForm;
    //function  GetActiveFlex: TFlexPanel;
    procedure FlexEndSelUpdate(Sender: TObject);
    procedure UpdateToolWins(Flex: TFlexPanel);
    procedure UpdateLayers(Flex: TFlexPanel);
    procedure UpdateSchemes(Flex: TFlexPanel);
    procedure UpdateAllOptions(const Edited: TOptionEditPages = AllOptions);
    procedure FlexProgress(Sender: TObject; Progress: integer;
      Process: TFlexFilerProcess);
    function  GetInFilerProcess: boolean;
    procedure BeginFilerProcess;
    procedure EndFilerProcess;
    procedure ViewOptionsExecute(Page: TOptionEditPage = opDocument);
    procedure RefreshColors;
  public
    { Public declarations }
    procedure ControlNotify(Sender: TObject; Control: TFlexControl;
      Notify: TFlexNotify);
    function  SaveChanges(ChildForm: TFlexChildForm;
      AskName: boolean = true): boolean;
    property  ActiveFlex: TFlexPanel read FActiveFlex; //GetActiveFlex;
    property  InFilerProcess: boolean read GetInFilerProcess;
  end;

var
  EditMainForm: TEditMainForm;

implementation

uses
  Consts, ColorComboEdit, ToolMngr,
  fInspector, fLibrary, fPreview, fDocProps, fUserData, fAboutPrg, fLayers,
  {$IFDEF DEBUG_HISTORY} fHistoryDbg, {$ENDIF}
  {$IFDEF DEBUG_POINTS} fPointsDbg, {$ENDIF}
  FlexHistory, FlexActions;

{$R *.DFM}

const
  SDeleteLayer  = 'Do you really want to delete layer %s?';
  SDeleteScheme = 'Do you really want to delete scheme %s?';

  DefaultPalette: array[0..52] of TColor = (
   TColor($000000),
   TColor($191919),
   TColor($333333),
   TColor($4C4C4C),
   TColor($666666),
   TColor($808080),
   TColor($999999),
   TColor($B2B2B2),
   TColor($E5E5E5),
   TColor($FFFFFF),
   TColor($000080),
   TColor($008000),
   TColor($008080),
   TColor($800000),
   TColor($800080),
   TColor($808000),
   TColor($808080),

⌨️ 快捷键说明

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