rm_dsggridreport.pas

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

PAS
2,209
字号
unit RM_DsgGridReport;

interface

{$I RM.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, Menus, Commctrl, Clipbrd, Buttons,
  RM_Class, RM_Preview, RM_Common, RM_DsgCtrls, RM_Ctrls, RM_Insp, RM_EditorInsField,
  RM_GridReport, RM_Grid, RM_DsgForm, rm_ZlibEx
  {$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

  TRMGridReportLoadReportEvent = procedure(Report: TRMReport; var ReportName: string; var Opened: Boolean) of object;
  TRMGridReportSaveReportEvent = procedure(Report: TRMReport; var ReportName: string; SaveAs: Boolean; var Saved: Boolean) of object;
  TRMGridReportNewReportEvent = procedure(Report: TRMReport; var ReportName: string) of object;

  TRMUndoObject = record
    ObjID: Integer;
  end;

  TRMUndoObject1 = record
    Row, Col: Integer;
  end;

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

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

  TRMSelectionType = (rmssMemo, rmssOther, rmssMultiple);
  TRMSelectionStatus = set of TRMSelectionType;

  { TRMGridReportDesigner }
  TRMGridReportDesigner = 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;

  TRMGridReportDesignerForm = class;

  { TRMToolbarStandard }
  TRMToolbarStandard = class(TRMToolbar)
  private
    FDesignerForm: TRMGridReportDesignerForm;
    BtnFileNew: TRMToolbarButton;
    btnFileSave: TRMToolbarButton;
    {$IFDEF USE_TB2K}
    btnFileOpen: TRMSubmenuItem;
    {$ELSE}
    btnFileOpen: TRMToolbarButton;
    {$ENDIF}
    ToolbarSep971: TRMToolbarSep;

    btnPreview1: TRMToolbarButton;
    btnPreview: TRMToolbarButton;
    btnPrint: TRMToolbarButton;
    ToolbarSep972: TRMToolbarSep;

    btnCut: TRMToolbarButton;
    btnCopy: TRMToolbarButton;
    btnPaste: TRMToolbarButton;
    ToolbarSep974: TRMToolbarSep;

    btnRedo: TRMToolbarButton;
    btnUndo: TRMToolbarButton;
    ToolbarSep2: TRMToolbarSep;

    btnAddPage: TRMToolbarButton;
    btnAddForm: TRMToolbarButton;
    btnDeletePage: TRMToolbarButton;
    btnPageSetup: TRMToolbarButton;
    ToolbarSep973: TRMToolbarSep;

    btnExit: TRMToolbarButton;

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

  { TRMToolbarEdit }
  TRMToolbarEdit = class(TRMToolbar)
  private
    FDesignerForm: TRMGridReportDesignerForm;
    FcmbFont: TRMFontComboBox;
    FcmbFontSize: TRMComboBox97;
    ToolbarSep971: TRMToolbarSep;

    btnFontBold: TRMToolbarButton;
    btnFontItalic: TRMToolbarButton;
    btnFontUnderline: TRMToolbarButton;
    ToolbarSep972: TRMToolbarSep;

    FBtnFontColor: TRMColorPickerButton;
    FBtnBackColor: TRMColorPickerButton;
    FBtnFrameColor: TRMColorPickerButton;
    FCmbFrameWidth: TRMComboBox97;
    ToolbarSep973: TRMToolbarSep;

    btnHLeft: TRMToolbarButton;
    btnHCenter: TRMToolbarButton;
    btnHRight: TRMToolbarButton;
    btnHSpaceEqual: TRMToolbarButton;
    ToolbarSep974: TRMToolbarSep;

    btnVTop: TRMToolbarButton;
    btnVCenter: TRMToolbarButton;
    btnVBottom: TRMToolbarButton;
    ToolbarSep975: TRMToolbarSep;

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

  { TRMToolbarBorder }
  TRMToolbarBorder = class(TRMToolbar)
  private
    FDesignerForm: TRMGridReportDesignerForm;
    btnFrameTop: TRMToolbarButton;
    btnFrameLeft: TRMToolbarButton;
    btnFrameBottom: TRMToolbarButton;
    btnFrameRight: TRMToolbarButton;
    ToolbarSep971: TRMToolbarSep;

    btnNoBorder: TRMToolbarButton;
    btnSetBorder: TRMToolbarButton;
    btnTopBorder: TRMToolbarButton;
    btnBottomBorder: TRMToolbarButton;
    ToolbarSep972: TRMToolbarSep;

    btnBias1Border: TRMToolbarButton;
    btnBias2Border: TRMToolbarButton;
    ToolbarSep973: TRMToolbarSep;

    btnDecWidth: TRMToolbarButton;
    btnIncWidth: TRMToolbarButton;
    btnDecHeight: TRMToolbarButton;
    btnIncHeight: TRMToolbarButton;
    ToolbarSep974: TRMToolbarSep;

    btnColumnMin: TRMToolbarButton;
    btnColumnMax: TRMToolbarButton;
    btnRowMin: TRMToolbarButton;
    btnRowMax: TRMToolbarButton;
    ToolbarSep975: TRMToolbarSep;

    cmbBands: TRMComboBox97;
    {$IFDEF USE_TB2K}
    btnAddBand: TRMSubmenuItem;
    {$ELSE}
    btnAddBand: TRMToolbarButton;
    {$ENDIF}
    btnDeleteBand: TRMToolbarButton;

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

  { TRMToolbarGrid }
  TRMToolbarGrid = class(TRMToolbar)
  private
    FDesignerForm: TRMGridReportDesignerForm;
    btnInsertColumn: TRMToolbarButton;
    btnInsertRow: TRMToolbarButton;
    btnAddColumn: TRMToolbarButton;
    btnAddRow: TRMToolbarButton;
    ToolbarSep1: TRMToolbarSep;

    btnDeleteColumn: TRMToolbarButton;
    btnDeleteRow: TRMToolbarButton;
    btnSetRowsAndColumns: TRMToolbarButton;
    ToolbarSep2: TRMToolbarSep;

    btnMerge: TRMToolbarButton;
    btnSplit: TRMToolbarButton;
    btnMergeRow: TRMToolbarButton;
    btnMergeColumn: TRMToolbarButton;

    procedure Localize;
    procedure OnAddColumnClick(Sender: TObject);
    procedure OnAddRowClick(Sender: TObject);
    procedure OnMergeColumnClick(Sender: TObject);
    procedure OnMergeRowClick(Sender: TObject);
    procedure OnBtnSetRowsAndColumnsClick(Sender: TObject);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarCellEdit }
  TRMToolbarCellEdit = class(TRMToolbar)
  private
    FDesignerForm: TRMGridReportDesignerForm;

    FlblCell: TRMToolbarButton;
    FToolbarSep1: TRMToolbarSep;

    FBtnDBField: TRMToolbarButton;
    FBtnExpression: TRMToolbarButton;
    FEdtMemo: TEdit;

    procedure Localize;
    procedure CellEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  public
    constructor CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMGridViewForm }
  TRMGridReportDesignerForm = class(TRMCustomDesignerForm)
    ImageListFont: TImageList;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    ImageListFrame: TImageList;
    StatusBar1: TStatusBar;
    ImageListGrid: TImageList;
    ImageListStand: TImageList;
    ImageListSize: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnMergeClick(Sender: TObject);
    procedure btnSplitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure itmMemoViewClick(Sender: TObject);
    procedure itmDeleteColumnClick(Sender: TObject);
    procedure itmDeleteRowClick(Sender: TObject);
    procedure itmInsertLeftColumnClick(Sender: TObject);
    procedure itmInsertRightColumnClick(Sender: TObject);
    procedure itmInsertTopRowClick(Sender: TObject);
    procedure itmInsertBottomRowClick(Sender: TObject);
    procedure itmEditClick(Sender: TObject);
    procedure itmFrameTypeClick(Sender: TObject);
    procedure MenuFileSaveasClick(Sender: TObject);
    procedure MenuFileOpenClick(Sender: TObject);
    procedure MenuFileSaveClick(Sender: TObject);
    procedure Tab1Change(Sender: TObject);
    procedure MenuFileDictClick(Sender: TObject);
    procedure MenuFileImportDictClick(Sender: TObject);
    procedure MenuFileMergeDictClick(Sender: TObject);
    procedure MenuFileExportDictClick(Sender: TObject);
    procedure MenuFilePageSetupClick(Sender: TObject);
    procedure MenuFileHeaderFooterClick(Sender: TObject);
    procedure MenuFilePreviewClick(Sender: TObject);
    procedure MenuFilePreview1Click(Sender: TObject);
    procedure MenuFilePrintClick(Sender: TObject);
    procedure MenuFilePropClick(Sender: TObject);
    procedure MenuFileNewClick(Sender: TObject);
    procedure btnFileNewClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure btnAddPageClick(Sender: TObject);
    procedure btnDeletePageClick(Sender: TObject);
    procedure Tab1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Tab1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Tab1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure cmbBandsDropDown(Sender: TObject);
    procedure cmbBandsClick(Sender: TObject);
    procedure btnDeleteBandClick(Sender: TObject);
    procedure PopupMenuBandsPopup(Sender: TObject);
    procedure MenuFileExitClick(Sender: TObject);
    procedure MenuHelpAboutClick(Sender: TObject);
    procedure MenuEditToolbarClick(Sender: TObject);
    procedure itmToolbarStandardClick(Sender: TObject);
    procedure MenuEditAddFormClick(Sender: TObject);
    procedure MenuEditCutClick(Sender: TObject);
    procedure MenuEditCopyClick(Sender: TObject);
    procedure MenuEditPasteClick(Sender: TObject);
    procedure MenuEditDeleteClick(Sender: TObject);
    procedure MenuEditSelectAllClick(Sender: TObject);
    procedure padpopEditClick(Sender: TObject);
    procedure padpopClearContentsClick(Sender: TObject);
    procedure MenuCellPropertyClick(Sender: TObject);
    procedure MenuCellTableSizeClick(Sender: TObject);
    procedure itmAverageRowHeightClick(Sender: TObject);
    procedure itmAverageColumnWidthClick(Sender: TObject);
    procedure itmRowHeightClick(Sender: TObject);
    procedure itmColumnHeightClick(Sender: TObject);
    procedure MenuEditUndoClick(Sender: TObject);
    procedure MenuEditRedoClick(Sender: TObject);
    procedure MenuFileFile9Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MenuEditCopyPageClick(Sender: TObject);
    procedure MenuEditPastePageClick(Sender: TObject);
    procedure MenuEditOptionsClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FList: TList;
    FFileName: string;
    FGrid: TRMGridEx;
    FAddinObjects: TStringList;
    FBusy, FInspBusy: Boolean;
    FCurDocName, FCaption: string;
    FMouseDown: Boolean;
    FInspForm: TRMInspForm;
    FAutoOpenLastFile: Boolean;
    FOpenFiles: TStringList;
    FPageStream: TMemoryStream;

    Dock971: TRMDock;
    Dock972: TRMDock;
    Dock973: TRMDock;
    Dock974: TRMDock;

    //dejoy add begin
    Panel2: TRMPanel;

    MenuBar: TRMMenuBar;
    MenuFile: TRMSubmenuItem;
    MenuFileNew: TRMmenuItem;
    MenuFileOpen: TRMmenuItem;
    MenuFileSave: TRMmenuItem;
    MenuFileSaveas: TRMmenuItem;
    N2: TRMSeparatorMenuItem;
    MenuFileDict: TRMmenuItem;
    MenuFileImportDict: TRMmenuItem;
    MenuFileMergeDict: TRMmenuItem;
    MenuFileExportDict: TRMmenuItem;
    N1: TRMSeparatorMenuItem;
    MenuFilePageSetup: TRMmenuItem;
    MenuFileHeaderFooter: TRMMenuItem;
    MenuFilePreview: TRMmenuItem;
    MenuFilePreview1: TRMMenuItem;
    MenuFilePrint: TRMmenuItem;
    N7: TRMSeparatorMenuItem;
    MenuFileProp: TRMmenuItem;
    N13: TRMSeparatorMenuItem;
    MenuFileFile1: TRMmenuItem;
    MenuFileFile2: TRMmenuItem;
    MenuFileFile3: TRMmenuItem;
    MenuFileFile4: TRMmenuItem;
    MenuFileFile5: TRMmenuItem;
    MenuFileFile6: TRMmenuItem;
    MenuFileFile7: TRMmenuItem;
    MenuFileFile8: TRMmenuItem;
    MenuFileFile9: TRMmenuItem;
    N5: TRMSeparatorMenuItem;
    MenuFileExit: TRMmenuItem;
    MenuEdit: TRMSubmenuItem;
    MenuEditUndo: TRMmenuItem;
    MenuEditRedo: TRMmenuItem;
    N12: TRMSeparatorMenuItem;
    MenuEditCut: TRMmenuItem;
    MenuEditCopy: TRMmenuItem;
    MenuEditPaste: TRMmenuItem;
    MenuEditDelete: TRMmenuItem;
    MenuEditSelectAll: TRMmenuItem;
    N11: TRMSeparatorMenuItem;
    MenuEditCopyPage: TRMmenuItem;
    MenuEditPastePage: TRMmenuItem;
    N14: TRMSeparatorMenuItem;
    MenuEditAddPage: TRMmenuItem;
    MenuEditAddForm: TRMmenuItem;
    MenuEditDeletePage: TRMmenuItem;
    N9: TRMSeparatorMenuItem;

    MenuEditToolbar: TRMSubmenuItem;
    itmToolbarStandard: TRMmenuItem;
    itmToolbarText: TRMmenuItem;
    itmToolbarBorder: TRMmenuItem;
    itmToolbarGrid: TRMmenuItem;
    itmToolbarInspector: TRMmenuItem;
    itmToolbarInsField: TRMmenuItem;
    itmToolbarCellEdit: TRMMenuItem;

    MenuEditOptions: TRMmenuItem;
    MenuCell: TRMSubmenuItem;
    MenuCellProperty: TRMmenuItem;
    MenuCellTableSize: TRMmenuItem;
    MenuCellRow: TRMSubmenuItem;
    itmRowHeight: TRMmenuItem;
    itmAverageRowHeight: TRMmenuItem;
    MenuCellColumn: TRMSubmenuItem;
    itmColumnHeight: TRMmenuItem;
    itmAverageColumnWidth: TRMmenuItem;
    N8: TRMSeparatorMenuItem;
    MenuCellInsertCell: TRMSubmenuItem;
    itmInsertCellLeft: TRMmenuItem;
    itmInsertCellTop: TRMmenuItem;
    MenuCellInsertColumn: TRMmenuItem;
    MenuCellInsertRow: TRMmenuItem;
    MenuCellDeleteColumn: TRMmenuItem;
    MenuCellDeleteRow: TRMmenuItem;
    N18: TRMSeparatorMenuItem;
    MenuEditMerge: TRMmenuItem;
    MenuEditReverse: TRMmenuItem;
    MenuHelp: TRMSubmenuItem;
    MenuHelpContents: TRMmenuItem;
    N1111: TRMSeparatorMenuItem;
    MenuHelpAbout: TRMmenuItem;

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

⌨️ 快捷键说明

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