rm_designer.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,241 行 · 第 1/5 页

PAS
2,241
字号
unit RM_Designer;

interface

{$I RM.INC}

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Printers, Menus, ComCtrls, ExtCtrls, Clipbrd, Commctrl,
  RM_Class, RM_Preview, RM_Common, RM_DsgCtrls, RM_Ctrls, RM_Insp, RM_PropInsp,
  RM_EditorInsField, RM_DsgForm
  {$IFDEF USE_TB2K}
  , TB2Item, TB2Dock, TB2Toolbar
  {$ELSE}
  {$IFDEF USE_INTERNALTB97}
  , RM_TB97Ctls, RM_TB97Tlbr, RM_TB97
  {$ELSE}
  , TB97Ctls, TB97Tlbr, TB97
  {$ENDIF}
  {$ENDIF}
  {$IFDEF Delphi4}, ImgList{$ENDIF}
  {$IFDEF Delphi6}, Variants{$ENDIF};

const
  MaxUndoBuffer = 100;

type
  TSelectionType = (ssBand, ssMemo, ssOther, ssMultiple);
  TSelectionStatus = set of TSelectionType;
  TRMMouseMode = (mmNone, mmSelect, mmRegionDrag, mmRegionResize,
    mmSelectedResize, mmInsertObj);

  TRMUndoObject = record
    ObjID: Integer;
  end;
  TRMUndoRec = record
    Action: TRMUndoAction;
    Page: Integer;
    Stream: TMemoryStream;
    Objects: array of TRMUndoObject;
  end;
  PRMUndoRec = ^TRMUndoRec;

  TRMUndoBuffer = array[0..MaxUndoBuffer - 1] of TRMUndoRec;
  PRMUndoBuffer = ^TRMUndoBuffer;

  TRMDesignerForm = class;

  { TRMDesigner }
  TRMDesigner = class(TRMCustomDesigner) // fake component
  private
    FOpenFileCount: Integer;
    FTemplDir, FOpenDir, FSaveDir: string;
    FDesignerRestrictions: TRMDesignerRestrictions;
    FDefaultDictionaryFile: string;
    FUseUndoRedo: Boolean;

    procedure SetOpenFileCount(Value: Integer);
    procedure SetDesignerRestrictions(Value: TRMDesignerRestrictions);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property OpenFileCount: Integer read FOpenFileCount write SetOpenFileCount default 4;
    property OpenDir: string read FOpenDir write FOpenDir;
    property SaveDir: string read FSaveDir write FSaveDir;
    property TemplateDir: string read FTemplDir write FTemplDir;
    property DesignerRestrictions: TRMDesignerRestrictions read FDesignerRestrictions write SetDesignerRestrictions;
    property DefaultDictionaryFile: string read FDefaultDictionaryFile write FDefaultDictionaryFile;
    property UseUndoRedo: Boolean read FUseUndoRedo write FUseUndoRedo default True;
  end;

  { TRMToolbarAlign }
  TRMToolbarAlign = class(TRMToolbar)
  private
    FDesignerForm: TRMDesignerForm;
    btnAlignLeftRight: TRMToolbarButton;
    btnAlignTopBottom: TRMToolbarButton;
    btnAlignVWCenter: TRMToolbarButton;
    btnAlignLeft: TRMToolbarButton;
    btnAlignHWCenter: TRMToolbarButton;
    btnAlignHCenter: TRMToolbarButton;
    btnAlignVSE: TRMToolbarButton;
    btnAlignHSE: TRMToolbarButton;
    btnAlignRight: TRMToolbarButton;
    btnAlignBottom: TRMToolbarButton;
    btnAlignTop: TRMToolbarButton;
    btnAlignVCenter: TRMToolbarButton;
    ToolbarSep9720: TRMToolbarSep;
    ToolbarSep9721: TRMToolbarSep;
    ToolbarSep9710: TRMToolbarSep;

    procedure Localize;
    function GetLeftObject: Integer;
    function GetTopObject: Integer;
    function GetRightObject: Integer;
    function GetBottomObject: Integer;

    procedure btnAlignLeftClick(Sender: TObject);
    procedure btnAlignHCenterClick(Sender: TObject);
    procedure btnAlignRightClick(Sender: TObject);
    procedure btnAlignTopClick(Sender: TObject);
    procedure btnAlignBottomClick(Sender: TObject);
    procedure btnAlignHSEClick(Sender: TObject);
    procedure btnAlignVSEClick(Sender: TObject);
    procedure btnAlignHWCenterClick(Sender: TObject);
    procedure btnAlignVWCenterClick(Sender: TObject);
    procedure btnAlignVCenterClick(Sender: TObject);
    procedure btnAlignLeftRightClick(Sender: TObject);
    procedure btnAlignTopBottomClick(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarSize }
  TRMToolbarSize = class(TRMToolbar)
  private
    FDesignerForm: TRMDesignerForm;
    btnSetWidthToMin: TRMToolbarButton;
    btnSetWidthToMax: TRMToolbarButton;
    btnSetHeightToMin: TRMToolbarButton;
    btnSetHeightToMax: TRMToolbarButton;
    ToolbarSep979: TRMToolbarSep;

    procedure Localize;
    procedure btnSetWidthToMinClick(Sender: TObject);
    procedure btnSetWidthToMaxClick(Sender: TObject);
    procedure btnSetHeightToMinClick(Sender: TObject);
    procedure btnSetHeightToMaxClick(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarBorder }
  TRMToolbarBorder = class(TRMToolbar)
  private
    FDesignerForm: TRMDesignerForm;
    btnFrameTop: TRMToolbarButton;
    btnFrameLeft: TRMToolbarButton;
    btnFrameBottom: TRMToolbarButton;
    btnFrameRight: TRMToolbarButton;
    btnNoFrame: TRMToolbarButton;
    btnSetFrame: TRMToolbarButton;
    ToolbarSep9717: TRMToolbarSep;
    ToolbarSep9722: TRMToolbarSep;
    FBtnBackColor: TRMColorPickerButton;
    FBtnFrameColor: TRMColorPickerButton;
    ToolbarSep9719: TRMToolbarSep;
    btnSetFrameStyle: TRMFrameStyleButton {TRMToolbarButton};
    FCmbFrameWidth: TRMComboBox97;

    procedure Localize;
    procedure SetStatus;
    procedure btnSetFrameStyle_OnChange(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarModifyPrepared }
  TRMToolbarModifyPrepared = class(TRMToolbar)
  private
    FDesignerForm: TRMDesignerForm;
    btnModifyPreviedFirst: TRMToolbarButton;
    btnModifyPreviedPrev: TRMToolbarButton;
    btnModifyPreviedNext: TRMToolbarButton;
    btnModifyPreviedLast: TRMToolbarButton;
    btnAutoSave: TRMToolbarButton;
    Edit1: TRMEdit;

    procedure Localize;
    procedure _EditPreparedReport(aNewPageNo: Integer);
    procedure btnModifyPreviedFirstClick(Sender: TObject);
    procedure btnModifyPreviedPrevClick(Sender: TObject);
    procedure btnModifyPreviedLastClick(Sender: TObject);
    procedure btnModifyPreviedNextClick(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure btnAutoSaveClick(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarStandard }
  TRMToolbarStandard = class(TRMToolbar)
  private
    FDesignerForm: TRMDesignerForm;
    BtnFileNew: TRMToolbarButton;
    btnFileSave: TRMToolbarButton;
    {$IFDEF USE_TB2K}
    btnFileOpen: TTBSubmenuItem;
    {$ELSE}
    btnFileOpen: TRMToolbarButton;
    {$ENDIF}
    btnPreview: TRMToolbarButton;
    btnPrint: TRMToolbarButton;
    btnCut: TRMToolbarButton;
    btnCopy: TRMToolbarButton;
    btnPaste: TRMToolbarButton;
    ToolbarSep972: TRMToolbarSep;
    btnRedo: TRMToolbarButton;
    btnUndo: TRMToolbarButton;
    btnAddForm: TRMToolbarButton;
    ToolbarSep973: TRMToolbarSep;
    ToolbarSep9723: TRMToolbarSep;
    btnSendtoBack: TRMToolbarButton;
    btnSelectAll: TRMToolbarButton;
    btnBringtoFront: TRMToolbarButton;
    ToolbarSep974: TRMToolbarSep;
    btnDeletePage: TRMToolbarButton;
    btnPageSetup: TRMToolbarButton;
    btnAddPage: TRMToolbarButton;
    ToolbarSep975: TRMToolbarSep;
    GB2: TRMToolbarButton;
    GB3: TRMToolbarButton;
    GB1: TRMToolbarButton;
    ToolbarSep976: TRMToolbarSep;
    btnExit: TRMToolbarButton;
    ToolbarSep971: TRMToolbarSep;
    ToolbarSepScale: TRMToolbarSep;
    cmbScale: TRMComboBox97 {TComboBox};
    btnExpression: TRMToolbarButton;
    ToolbarSep1: TRMToolbarSep;

    procedure Localize;
    procedure OnCmbScaleChangeEvent(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMDesignerForm }
  TRMDesignerForm = class(TRMCustomDesignerForm)
    StatusBar1: TStatusBar;
    Panel7: TPanel;
    PBox1: TPaintBox;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Popup2: TPopupMenu;
    padpopAddPage: TMenuItem;
    padpopAddForm: TMenuItem;
    padpopDeletePage: TMenuItem;
    N9: TMenuItem;
    padpopPageSetup: TMenuItem;
    ImageListStand: TImageList;
    ImageListFont: TImageList;
    ImageListFrame: TImageList;
    ImageListAlign: TImageList;
    ImageListSize: TImageList;
    ImageListPosition: TImageList;
    ImageListModifyPreview: TImageList;
    ImageListAddinTools: TImageList;
    PopupMenu1: TPopupMenu;
    procedure FormCreate(Sender: TObject);
    procedure DoClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnFileOpenClick(Sender: TObject);
    procedure btnFileNewClick(Sender: TObject);
    procedure padFileSaveAsClick(Sender: TObject);
    procedure btnPreviewClick(Sender: TObject);
    procedure btnCutClick(Sender: TObject);
    procedure btnCopyClick(Sender: TObject);
    procedure padDeleteClick(Sender: TObject);
    procedure btnExpressionClick(Sender: TObject);
    procedure btnSelectAllClick(Sender: TObject);
    procedure padEditClick(Sender: TObject);
    procedure btnAddPageClick(Sender: TObject);
    procedure btnDeletePageClick(Sender: TObject);
    procedure Pan2Click(Sender: TObject);
    procedure PBox1Paint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Tab1Change(Sender: TObject);
    procedure btnPageSetupClick(Sender: TObject);
    procedure btnFileSaveClick(Sender: TObject);
    procedure padPrintClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btnPasteClick(Sender: TObject);
    procedure Popup1Popup(Sender: TObject);
    procedure Pan5Click(Sender: TObject);
    procedure padpopEditClick(Sender: TObject);
    procedure padpopClearContentsClick(Sender: TObject);
    procedure padpopFrameClick(Sender: TObject);
    procedure barFileClick(Sender: TObject);
    procedure btnUndoClick(Sender: TObject);
    procedure btnRedoClick(Sender: TObject);
    procedure padEditReplaceClick(Sender: TObject);
    procedure itmEditLockControlsClick(Sender: TObject);
    procedure btnBringtoFrontClick(Sender: TObject);
    procedure btnSendtoBackClick(Sender: TObject);
    procedure padOptionsClick(Sender: TObject);
    procedure padAboutClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure padFilePropertyClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure SpeedButton1Click(Sender: TObject);
    procedure padFileNewClick(Sender: TObject);
    procedure Tab1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Tab1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Tab1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure padSetToolbarClick(Sender: TObject);
    procedure btnAddFormClick(Sender: TObject);
    procedure padVarListClick(Sender: TObject);
    procedure LoadDictionary1Click(Sender: TObject);
    procedure MergeDictionary1Click(Sender: TObject);
    procedure SaveAsDictionary1Click(Sender: TObject);
    procedure itmFileFile9Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FInspBusy: Boolean;
    FInspForm: TRMInspForm;
    FMouseDown: Boolean;
    FFindReplaceForm: TForm;
    FUndoBuffer, FRedoBuffer: TRMUndoBuffer;
    FUndoBufferLength, FRedoBufferLength: Integer;
    FSaveDesignerRestrictions: TRMDesignerRestrictions;

    ScrollBox1: TScrollBox;
    Dock971: TRMDock;
    Dock972: TRMDock;
    Dock973: TRMDock;
    Dock974: TRMDock;

    //Tab begin;dejoy add
    Panel2: TRMPanel;
    pnlHorizontalRuler: TRMPanel;
    pnlVerticalRuler: TRMPanel;
    pnlWorkSpace: TRMPanel;

    //Tab end;dejoy add

    //MenuBar begin;dejoy add
    MenuBar: TRMMenuBar;
    barFile: TRMSubmenuItem;
    padFileNew: TRMmenuItem;
    padFileOpen: TRMmenuItem;
    padFileSave: TRMmenuItem;
    padFileSaveAs: TRMmenuItem;
    N40: TRMSeparatorMenuItem;
    padVarList: TRMmenuItem;
    LoadDictionary1: TRMmenuItem;
    MergeDictionary1: TRMmenuItem;
    SaveAsDictionary1: TRMmenuItem;
    N21: TRMSeparatorMenuItem;
    padPageSetup: TRMmenuItem;
    padPreview: TRMmenuItem;
    padPrint: TRMmenuItem;
    N24: TRMSeparatorMenuItem;
    padFileProperty: TRMmenuItem;
    N2: TRMSeparatorMenuItem;
    itmFileFile1: TRMmenuItem;
    itmFileFile2: TRMmenuItem;
    itmFileFile3: TRMmenuItem;
    itmFileFile4: TRMmenuItem;
    itmFileFile5: TRMmenuItem;
    itmFileFile6: TRMmenuItem;
    itmFileFile7: TRMmenuItem;
    itmFileFile8: TRMmenuItem;
    itmFileFile9: TRMmenuItem;
    N1: TRMSeparatorMenuItem;
    padExit: TRMmenuItem;

    barEdit: TRMSubmenuItem;
    padUndo: TRMmenuItem;
    padRedo: TRMmenuItem;
    N47: TRMSeparatorMenuItem;
    padCut: TRMmenuItem;
    padCopy: TRMmenuItem;
    padPaste: TRMmenuItem;
    padDelete: TRMmenuItem;
    padSelectAll: TRMmenuItem;
    padEdit: TRMmenuItem;
    N3: TRMSeparatorMenuItem;
    padEditReplace: TRMmenuItem;
    N26: TRMSeparatorMenuItem;
    padNewPage: TRMmenuItem;
    padNewForm: TRMmenuItem;
    padDeletePage: TRMmenuItem;
    N31: TRMSeparatorMenuItem;
    padBringtoFront: TRMmenuItem;
    padSendtoBack: TRMmenuItem;
    N4: TRMSeparatorMenuItem;
    itmEditLockControls: TRMmenuItem;

    barSearch: TRMSubmenuItem;
    padSearchFind: TRMMenuItem;
    padSearchReplace: TRMMenuItem;
    padSearchFindAgain: TRMMenuItem;

    barTools: TRMSubmenuItem;
    padSetToolbar: TRMSubmenuItem;
    Pan1: TRMmenuItem;
    Pan2: TRMmenuItem;
    Pan3: TRMmenuItem;
    Pan5: TRMmenuItem;
    Pan4: TRMmenuItem;
    Pan6: TRMmenuItem;
    Pan8: TRMmenuItem;
    Pan7: TRMmenuItem;
    Pan9: TRMmenuItem;
    padAddTools: TRMmenuItem;
    padOptions: TRMmenuItem;

    barHelp: TRMSubmenuItem;
    padHelp: TRMmenuItem;
    N18: TRMSeparatorMenuItem;
    padAbout: TRMmenuItem;
    //MenuBar End

   //Pop Menu begin
    Popup1: TRMPopupMenu;
    padpopCut: TRMMenuItem;
    padpopCopy: TRMMenuItem;
    padpopPaste: TRMMenuItem;
    padpopDelete: TRMMenuItem;
    padpopSelectAll: TRMMenuItem;
    N8: TRMSeparatorMenuItem;
    padpopFrame: TRMMenuItem;
    padpopEdit: TRMMenuItem;
    padpopClearContents: TRMMenuItem;

    //Pop Menu begin

    ToolbarStandard: TRMToolbarStandard;
    ToolbarAlign: TRMToolbarAlign;
    ToolbarBorder: TRMToolbarBorder;
    ToolbarSize: TRMToolbarSize;
    ToolbarModifyPrepared: TRMToolbarModifyPrepared;

    ToolbarEdit: TRMToolbar;
    ToolBarAddinTools: TRMToolbar;

    ToolbarPopMenu: TRMPopupMenu;

    ToolbarPopStandard: TRMMenuItem;
    ToolbarPopComponent: TRMMenuItem;
    ToolbarPopAlign: TRMMenuItem;
    ToolbarPopBorder: TRMMenuItem;
    ToolbarPopSize: TRMMenuItem;
    ToolbarPopModifyPrepared: TRMMenuItem;

    ToolbarPopEdit: TRMMenuItem;
    ToolbarPopAddinTools: TRMMenuItem;
    ToolBarPopInsp: TRMMenuItem;
    ToolBarPopInsDBField: TRMMenuItem;

⌨️ 快捷键说明

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