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

📄 udiagramform.pas

📁 DelphiDoc is a program for automatic generation of documentation on a Delphi-Project. At the momen
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{  JADD - Just Another DelphiDoc: Documentation from Delphi Source Code

Copyright (C) 2004-2008   Gerold Veith

This file is part of JADD - Just Another DelphiDoc.

DelphiDoc is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.

DelphiDoc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
}


unit UDiagramForm;

{Contains a form, ~[link TFormDiagram], to create and edit diagrams basing on
 the parsed data. }

interface

uses
  Windows, SysUtils, Classes, IniFiles,
{$IFNDEF LINUX}
  Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, ExtCtrls, ToolWin,
  ImgList, StdCtrls, Messages,
{$ELSE}
  QForms, QMenus, QTypes, QControls, QGraphics, QDialogs, QComCtrls, QExtCtrls,
  QImgList, QStdCtrls, Qt,
{$ENDIF}
  UBaseIdents,
  UDiagram,
  USelectParsedDirectory;


type
  { * * *  ***  * * *  ***   TDrawControl   ***  * * *  ***  * * *  }


  {A simple control to paint the current pane of the diagram, but also with the
   general events not available in TPaintBox or TImage, like OnResize, and a
   handle to drag inside the component. }
  TDrawControl = class(TCustomControl)
  private
    //call-back procedure to call when painting is needed
    FOnPaint: TNotifyEvent;
  protected
    //Calls FOnPaint if painting is needed.
    procedure Paint; override;
  public
    //Creates the control and initializes some options.
    constructor Create(AOwner: TComponent); override;

    property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
    property Canvas;
  end;







  { * * *  ***  * * *  ***   TFormDiagram   ***  * * *  ***  * * *  }


  //pointer to a method to add or remove a box to/from the diagram, used to
  //pass the method of that type with an untyped pointer
  PHandleAddRemoveDataProc = ^THandleAddRemoveDataProc;


  {A form to show and edit diagrams based on the parsed data. }
  TFormDiagram = class(TForm)
    ImageList: TImageList;
    StatusBar: TStatusBar;
    TreeView: TTreeView;
    PanelSplit: TPanel;
    Panel: TPanel;
    ScrollBarVertical: TScrollBar;
    ScrollBarHorizontal: TScrollBar;
    PopupMenu: TPopupMenu;
    MenuItemPopUpRemoveSelected: TMenuItem;
    MenuItemPopUpSelectAll: TMenuItem;
    MenuItemPopUpSelectNothing: TMenuItem;
    MenuItemPopUpInverseSelection: TMenuItem;
    MenuItemPopUpByModule: TMenuItem;
    MenuItemPopUpRemoveClassesInImplementation: TMenuItem;
    MenuItemPopUpSeparator1: TMenuItem;
    MenuItemPopUpAddAllFiles: TMenuItem;
    MenuItemPopUpAddFile: TMenuItem;
    MenuItemPopUpAddAllUsedFilesInInterface: TMenuItem;
    MenuItemPopUpAddAllUsedFiles: TMenuItem;
    MenuItemPopUpAddClassAndDescendants: TMenuItem;
    MenuItemPopUpAddAllClassesInTheFile: TMenuItem;
    MenuItemPopUpAddAllClassesInTheFileAndDescendants: TMenuItem;
    MenuItemPopUpAddAllClasses: TMenuItem;
    MenuItemPopUpAddClass: TMenuItem;
    MenuItemPopUpAddImplementedInterfaces: TMenuItem;
    MenuItemPopUpAddImplementedAndInheritedInterfaces: TMenuItem;
    MenuItemPopUpAddClassesImplementingInterface: TMenuItem;
    MenuItemPopUpAddClassesImplementingInterfaceOrDescendant: TMenuItem;
    MenuItemPopUpAddAllUsedClasses: TMenuItem;
    MenuItemPopUpSeparator2: TMenuItem;
    MenuItemPopUpRemoveAllFiles: TMenuItem;
    MenuItemPopUpRemoveFile: TMenuItem;
    MenuItemPopUpRemoveAllUsedFilesInInterface: TMenuItem;
    MenuItemPopUpRemoveAllUsedFiles: TMenuItem;
    MenuItemPopUpRemoveAllClassesInTheFile: TMenuItem;
    MenuItemPopUpRemoveAllClassesInTheFileAndDescendants: TMenuItem;
    MenuItemPopUpRemoveAllClasses: TMenuItem;
    MenuItemPopUpRemoveClass: TMenuItem;
    MenuItemPopUpRemoveClassAndDescendants: TMenuItem;
    MenuItemPopUpRemoveImplementedInterfaces: TMenuItem;
    MenuItemPopUpRemoveImplementedAndInheritedInterfaces: TMenuItem;
    MenuItemPopUpRemoveClassesImplementingInterface: TMenuItem;
    MenuItemPopUpRemoveClassesImplementingInterfaceOrDescendant: TMenuItem;
    MenuItemPopUpRemoveAllUsedClasses: TMenuItem;
    MenuItemPopUpSeparator3: TMenuItem;
    MenuItemPopUpGoToInheritanceTree: TMenuItem;
    MenuItemPopUpGoToFile: TMenuItem;
    MenuItemPopUpExpandAll: TMenuItem;
    MenuItemPopUpCollapseAll: TMenuItem;
    MainMenu: TMainMenu;
    MenuItemDiagrams: TMenuItem;
    MenuItemLoadDiagramLayouts: TMenuItem;
    MenuItemSaveDiagramLayouts: TMenuItem;
    MenuItemDiagramsSeparator: TMenuItem;
    MenuItemClose: TMenuItem;
    MenuItemLayout: TMenuItem;
    MenuItemNewClassDiagram: TMenuItem;
    MenuItemNewFileDiagram: TMenuItem;
    MenuItemLayoutSeparator1: TMenuItem;
    MenuItemSetLayout: TMenuItem;
    MenuItemResetLayout: TMenuItem;
    MenuItemRenameLayout: TMenuItem;
    MenuItemDeleteLayout: TMenuItem;
    MenuItemLayoutSeparator2: TMenuItem;
    MenuItemExportAsBitmap: TMenuItem;
    MenuItemExportAsPNG: TMenuItem;
    MenuItemExportAsWindowsMetaFile: TMenuItem;
    MenuItemExportAsScalableVectorGraphics: TMenuItem;
    MenuItemLinksInScalableVectorGraphics: TMenuItem;
    MenuItemSVGNoLinks: TMenuItem;
    MenuItemLinksForHTMLGenerator: TMenuItem;
    MenuItemLinksForHTMLGeneratorWithoutSubDirectories: TMenuItem;
    MenuItemLinksForHTMLGeneratorWithSubDirectoriesForFiles: TMenuItem;
    MenuItemLinksForHTMLGeneratorWithSubDirectoriesForFilesClasses: TMenuItem;
    MenuItemLayoutSeparator3: TMenuItem;
    MenuItemExportHTMLImageMap: TMenuItem;
    MenuItemCopyInlineCommandImage: TMenuItem;
    MenuItemDiagramList: TMenuItem;
    MenuItemUnsavedLayout: TMenuItem;
    MenuItemView: TMenuItem;
    MenuItemToolBar: TMenuItem;
    MenuItemStatusBar: TMenuItem;
    MenuItemZoomWindow: TMenuItem;
    ControlBar: TControlBar;
    ToolBarGeneral: TToolBar;
    ToolButtonZoomWindow: TToolButton;
    ToolButtonSeparatorGeneral1: TToolButton;
    ToolButtonEditMargin: TToolButton;
    ToolButtonFont: TToolButton;
    ToolButtonModules: TToolButton;
    ToolButtonSeparatorFiles2: TToolButton;
    ToolButtonFileNamesInClasses: TToolButton;
    ToolButtonAssociations: TToolButton;
    ToolButtonUsingImplementation: TToolButton;
    ToolButtonSeparatorFiles1: TToolButton;
    ToolButtonScopePrivate: TToolButton;
    ToolButtonScopeProtected: TToolButton;
    ToolButtonScopePublic: TToolButton;
    ToolButtonScopePublished: TToolButton;
    ToolButtonScopeAutomated: TToolButton;
    ToolButtonSeparatorClasses2: TToolButton;
    ToolButtonMemberField: TToolButton;
    ToolButtonMemberProperty: TToolButton;
    ToolButtonMemberMethod: TToolButton;
    ToolButtonRecords: TToolButton;
    ToolButtonObjects: TToolButton;
    ToolButtonClasses: TToolButton;
    ToolButtonInterfaces: TToolButton;
    ToolButtonDispatchInterfaces: TToolButton;
    ToolButtonSeparatorClasses3: TToolButton;
    ToolButtonShowFunctionReturnType: TToolButton;
    ToolButtonShowMethodParameter: TToolButton;
    ToolButtonClassesNotInInterface: TToolButton;
    ToolButtonSeparatorGeneral2: TToolButton;
    ComboBoxFont: TComboBox;
    ToolButtonSeparatorGeneral4: TToolButton;
    ComboBoxFontSize: TComboBox;
    UpDownFontSize: TUpDown;
    ToolButtonSeparatorGeneral3: TToolButton;
    ToolButtonAutoLayOut: TToolButton;
    ToolButtonAutoSimpleLayOut: TToolButton;
    ToolButtonAutoSimpleClassLayOutOptimized: TToolButton;
    ToolBarClasses: TToolBar;
    ToolBarFiles: TToolBar;
    ToolButtonSeparatorClasses1: TToolButton;
    procedure FormShow(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure StatusBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
    procedure TreeViewChange(Sender: TObject; Node: TTreeNode);
    procedure TreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure PanelSplitMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure PanelSplitMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure ScrollBarChange(Sender: TObject);
    procedure PopupMenuPopup(Sender: TObject);
    procedure MenuItemPopUpRemoveSelectedClick(Sender: TObject);
    procedure MenuItemPopUpChangeSelectionClick(Sender: TObject);
    procedure MenuItemPopUpByModuleClick(Sender: TObject);
    procedure MenuItemPopUpRemoveClassesInImplementationClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllFilesClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveFileClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllUsedFilesClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllClassesInTheFileClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllClassesInTheFileAndDescendantsClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllClassesClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveClassClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveClassAndDescendantsClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveImplementedInterfacesClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveImplementedAndInheritedInterfacesClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveClassesImplementingInterfaceClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveClassesImplementingInterfaceOrDescendantClick(Sender: TObject);
    procedure MenuItemPopUpAddRemoveAllUsedClassesClick(Sender: TObject);
    procedure MenuItemPopUpGoToInheritanceTreeClick(Sender: TObject);
    procedure MenuItemPopUpGoToFileClick(Sender: TObject);
    procedure MenuItemPopUpExpandAllClick(Sender: TObject);
    procedure MenuItemPopUpCollapseAllClick(Sender: TObject);
    procedure ToolButtonZoomWindowClick(Sender: TObject);
    procedure ToolButtonEditMarginClick(Sender: TObject);
    procedure ToolButtonFontClick(Sender: TObject);
    procedure ToolButtonModulesClick(Sender: TObject);
    procedure ToolButtonFileNamesInClassesClick(Sender: TObject);
    procedure ToolButtonAssociationsClick(Sender: TObject);
    procedure ToolButtonUsingImplementationClick(Sender: TObject);
    procedure ToolButtonScopeClick(Sender: TObject);
    procedure ToolButtonMemberClick(Sender: TObject);
    procedure ToolButtonShowClassesClick(Sender: TObject);
    procedure ToolButtonShowFunctionReturnTypeClick(Sender: TObject);
    procedure ToolButtonShowMethodParameterClick(Sender: TObject);
    procedure ToolButtonClassesNotInInterfaceClick(Sender: TObject);
    procedure ComboBoxFontChange(Sender: TObject);
    procedure ComboBoxFontSizeChange(Sender: TObject);
    procedure ToolButtonAutoLayOutClick(Sender: TObject);
    procedure ToolButtonAutoSimpleLayOutClick(Sender: TObject);
    procedure MenuItemLayoutClick(Sender: TObject);
    procedure MenuItemDiagramListClick(Sender: TObject);
    procedure MenuItemViewClick(Sender: TObject);
    procedure MenuItemLoadDiagramLayoutsClick(Sender: TObject);
    procedure MenuItemSaveDiagramLayoutsClick(Sender: TObject);
    procedure MenuItemCloseClick(Sender: TObject);
    procedure MenuItemNewDiagramClick(Sender: TObject);
    procedure MenuItemSetLayoutClick(Sender: TObject);
    procedure MenuItemResetLayoutClick(Sender: TObject);
    procedure MenuItemRenameLayoutClick(Sender: TObject);
    procedure MenuItemDeleteLayoutClick(Sender: TObject);
    procedure MenuItemExportAsBitmapClick(Sender: TObject);
    procedure MenuItemExportAsPNGClick(Sender: TObject);
    procedure MenuItemExportAsWindowsMetaFileClick(Sender: TObject);
    procedure MenuItemExportAsScalableVectorGraphicsClick(Sender: TObject);
    procedure MenuItemLinksInScalableVectorGraphicsClick(Sender: TObject);
    procedure MenuItemLinksInSVGFilesClick(Sender: TObject);
    procedure MenuItemExportHTMLImageMapClick(Sender: TObject);
    procedure MenuItemCopyInlineCommandImageClick(Sender: TObject);
    procedure MenuItemToolBarClick(Sender: TObject);
    procedure MenuItemStatusBarClick(Sender: TObject);
  private
    //the parsed data to use for the diagrams
    FFiles: TFileList;

    //the current diagram to show and edit
    FDiagram: TDiagram;

    //what kinds of links should be included in exported SVG image files
    FSVGImageLinkKind: TSVGImageLinkKind;

    //the control to show and edit the diagram
    FDrawControl: TDrawControl;
    //position when starting scrolling the diagram with the middle button
    FScrollPosition: TPoint;

    //the node in the tree view that has been clicked and used to pop-up the
    //context menu
    FMenuTreeNode: TTreeNode;

    //position of the bottom left corner of this formular, used to move the
    //zoom window, if this position changes
    FOldBottomRight: TPoint;
    //the window to show a zoomed map of the diagram for a better overview
    FZoomWindow: TForm;


    //if one of the diagrams has been changed and so the layouts need to be
    //saved
    FTotalChanged: Boolean;

    //the set of diagrams in the layout
    FDiagramSet: TMemIniFile;
    //index of the currently selected diagram in ~[link FDiagramSet]
    FCurrentDiagramIndex: Integer;
    //name of the section of the currently selected diagram to save it
    FSaveSectionName: String;


    //the action to execute in call back ~[link HandleAction]
    FDirectoryAction: TDiagramDirectoryAction;
    //the files to handle in call back ~[link HandleAction]
    FActionFiles: TList;


{$IFNDEF LINUX}
    //Called when the size of the font is changed with the up- or down-button.
    procedure UpDownFontSizeClick(Sender: TObject; Button: TUDBtnType);
{$ENDIF}



{$IFNDEF LINUX}
    //When minimized minimize the whole application, like the main form does.
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
    //Used to keep track of the bottom left corner.
    procedure WMMove(var Message: TWMMove); message WM_MOVE;
{$ENDIF}
    //Called when the bottom left corner changed its position, used to
    //move the zoom window accordingly if needed.

⌨️ 快捷键说明

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