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

📄 rm_dsggridreport.pas

📁 这是一个功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
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_GridReport, RM_Grid, RM_Designer, 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 COMPILER4_UP}, ImgList{$ENDIF}
{$IFDEF COMPILER6_UP}, Variants{$ENDIF};

type
  TRMGridReportDesigner = class(TRMCustomDesigner);

  TRMGridReportPageEditor = class;

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

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

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

    FBtnHighlight: TRMToolbarButton;
    ToolbarSep975: TRMToolbarSep;

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

    btnVTop: TRMToolbarButton;
    btnVCenter: TRMToolbarButton;
    btnVBottom: TRMToolbarButton;

    procedure Localize;
    procedure BtnHighlightClick(Sender: TObject);
  public
    constructor CreateAndDock(aOwner: TComponent; DockTo: TRMDock);
  end;

  { TRMToolbarBorder }
  TRMToolbarBorder = class(TRMToolbar)
  private
    FPageEditor: TRMGridReportPageEditor;
    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}
{$IFDEF USE_TB2K}
    btnDeleteBand: TRMSubmenuItem;
{$ELSE}
    btnDeleteBand: TRMToolbarButton;
{$ENDIF}

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

  { TRMToolbarGrid }
  TRMToolbarGrid = class(TRMToolbar)
  private
    FPageEditor: TRMGridReportPageEditor;
    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
    FPageEditor: TRMGridReportPageEditor;

    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;

  { TRMGridReportPageEditor }
  TRMGridReportPageEditor = class(TRMCustomPageEditor)
  private
    FPageObjectList: TList;
    FDesignerForm: TRMDesignerForm;
    FGrid: TRMGridEx;
    FAddinObjects: TStringList;
    FPageStream: TMemoryStream;
    FUndoBusy: Boolean;
    FFieldListBox: TListBox;

    Panel2: TRMPanel;
    ToolbarEdit: TRMToolbarEdit;
    ToolbarBorder: TRMToolbarBorder;
    ToolbarGrid: TRMToolbarGrid;
    ToolbarCellEdit: TRMToolbarCellEdit;
    FPopupMenuBands: TRMPopupMenu;
    FPopupMenuDeleteBands: TRMPopupMenu;

    // Grid 右键菜单
    FSelectionMenu: TRMPopupMenu;
    itmGridMenuBandProp: TRMMenuItem;
    itmCellProp: TRMMenuItem;
//    itmSplit1: TRMSeparatorMenuItem;
    itmMergeCells: TRMMenuItem;
    itmSplitCells: TRMMenuItem;
    N3: TRMSeparatorMenuItem;
    itmInsert: TRMSubmenuItem;
    itmInsertLeftColumn: TRMMenuItem;
    itmInsertRightColumn: TRMMenuItem;
    N10: TRMSeparatorMenuItem;
    itmInsertTopRow: TRMMenuItem;
    itmInsertBottomRow: TRMMenuItem;
    itmSep1: TRMSeparatorMenuItem;
    itmInsertLeftCell: TRMMenuItem;
    itmInsertTopCell: TRMMenuItem;
    itmDelete: TRMSubmenuItem;
    itmDeleteColumn: TRMMenuItem;
    itmDeleteRow: TRMMenuItem;
    itmDeleteSep1: TRMSeparatorMenuItem;
    itmDeleteLeftCell: TRMMenuItem;
    itmDeleteTopCell: TRMMenuItem;
    N6: TRMSeparatorMenuItem;
    itmCellType: TRMSubmenuItem;
    itmMemoView: TRMMenuItem;
    itmCalcMemoView: TRMMenuItem;
    itmPictureView: TRMMenuItem;
    itmSubReportView: TRMMenuItem;
    itmInsertBand: TRMSubmenuItem;
    itmSelectBand: TRMSubmenuItem;
    N4: TRMSeparatorMenuItem;
    itmFrameType: TRMMenuItem;
    itmEdit: TRMMenuItem;
    padpopClearContents: TRMMenuItem;
    padpopOtherProp: TRMMenuItem;
    N100: TRMSeparatorMenuItem;
    SelectionMenu_popCut: TRMMenuItem;
    SelectionMenu_popCopy: TRMMenuItem;
    SelectionMenu_popPaste: TRMMenuItem;
//    N101: TRMSeparatorMenuItem;
    N102: TRMSeparatorMenuItem;

    // 主菜单
    FMainMenu: TRMMenuBar;
    MenuEdit: TRMSubmenuItem;
    MenuEditUndo: TRMMenuItem;
    MenuEditRedo: TRMMenuItem;
    N12: TRMSeparatorMenuItem;
    MenuEditCut: TRMMenuItem;
    MenuEditCopy: TRMMenuItem;
    MenuEditPaste: TRMMenuItem;
    MenuEditDelete: TRMMenuItem;
    MenuEditSelectAll: TRMMenuItem;
    N11: TRMSeparatorMenuItem;
    MenuEditCopyPage: TRMMenuItem;
    MenuEditPastePage: 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;
    MenuCellMerge: TRMMenuItem;
    MenuCellReverse: TRMMenuItem;

    MenuEditToolbar: TRMSubmenuItem;
    padSetToolbar: TRMSubmenuItem;
    itmToolbarStandard: TRMMenuItem;
    itmToolbarText: TRMMenuItem;
    itmToolbarBorder: TRMMenuItem;
    itmToolbarGrid: TRMMenuItem;
    itmToolbarInspector: TRMMenuItem;
    itmToolbarInsField: TRMMenuItem;
    itmToolbarCellEdit: TRMMenuItem;
    padAddTools: TRMmenuItem;
    MenuEditOptions: TRMMenuItem;
    // 主菜单结束

    function GetUnitType: TRMUnitType;
    procedure SetUnitType(aValue: TRMUnitType);

    procedure Localize;
    procedure SetGridProp;
    procedure SetGridNilProp;
    procedure RefreshProp;
    procedure SetGridHeader;

    procedure OnFieldListBoxClick(Sender: TObject);
    procedure OnFieldListBoxDrawItem(aControl: TWinControl; aIndex: Integer; aRect: TRect; aState: TOwnerDrawState);
    procedure OnGridDropDownField(aCol, aRow: Integer);
    procedure OnGridDropDownFieldClick(aDropDown: Boolean; X, Y: Integer);
    procedure OnGridDblClickEvent(Sender: TObject);
    procedure OnGridClick(Sender: TObject);
    procedure OnGridChange(Sender: TObject);
    procedure OnGridDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure OnGridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
      var Accept: Boolean);
    procedure OnGridRowHeaderClick(Sender: TObject; X, Y: Integer);
    procedure OnGridRowHeaderDblClick(Sender: TObject);
    procedure OnGridBeginSizingCell(Sender: TObject);
    procedure OnGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure OnGridBeforeChangeCell(aGrid: TRMGridEx; aCell: TRMCellInfo);

    procedure SelectionMenuPopup(Sender: TObject);
    procedure itmInsertLeftColumnClick(Sender: TObject);
    procedure itmInsertTopRowClick(Sender: TObject);
    procedure itmDeleteColumnClick(Sender: TObject);
    procedure itmDeleteRowClick(Sender: TObject);
    procedure btnMergeClick(Sender: TObject);
    procedure btnSplitClick(Sender: TObject);
    procedure btnDBFieldClick(Sender: TObject);
    procedure btnExpressionClick(Sender: TObject);
    procedure btnColumnMinClick(Sender: TObject);
    procedure btnColumnMaxClick(Sender: TObject);
    procedure btnRowMinClick(Sender: TObject);
    procedure btnRowMaxClick(Sender: TObject);
    procedure cmbBandsDropDown(Sender: TObject);
    procedure cmbBandsClick(Sender: TObject);
    procedure btnDeleteBandClick(Sender: TObject);
    procedure PopupMenuBandsPopup(Sender: TObject);
    procedure PopupMenuDeleteBandsPopup(Sender: TObject);
    procedure DeleteOneBand(aBandName: string; aBand: TRMView);
    function HaveBand(aBandType: TRMBandType): Boolean;
    procedure OnDeleteBandEvent(Sender: TObject);
    procedure OnAddBandEvent(Sender: TObject);
    procedure MenuCellPropertyClick(Sender: TObject);
    procedure itmInsertRightColumnClick(Sender: TObject);
    procedure itmInsertBottomRowClick(Sender: TObject);
    procedure itmInsertLeftCellClick(Sender: TObject);
    procedure itmInsertTopCellClick(Sender: TObject);
    procedure itmDeleteLeftCellClick(Sender: TObject);
    procedure itmDeleteTopCellClick(Sender: TObject);
    procedure itmMemoViewClick(Sender: TObject);
    procedure itmFrameTypeClick(Sender: TObject);
    procedure itmEditClick(Sender: TObject);
    procedure padpopClearContentsClick(Sender: TObject);
    procedure itmGridMenuBandClick(Sender: TObject);
    procedure Pan5Click(Sender: TObject);
    procedure MenuEditDeleteClick(Sender: TObject);
    procedure MenuEditSelectAllClick(Sender: TObject);
    procedure MenuEditCopyPageClick(Sender: TObject);
    procedure MenuEditPastePageClick(Sender: TObject);
    procedure MenuCellTableSizeClick(Sender: TObject);
    procedure itmRowHeightClick(Sender: TObject);
    procedure itmAverageRowHeightClick(Sender: TObject);
    procedure itmColumnHeightClick(Sender: TObject);
    procedure itmAverageColumnWidthClick(Sender: TObject);
    procedure SaveIni;
    procedure LoadIni;
    procedure itmToolbarStandardClick(Sender: TObject);
    procedure MenuEditOptionsClick(Sender: TObject);
    procedure MenuEditToolbarClick(Sender: TObject);
    function _GetSelectionStatus: TRMSelectionStatus;
    function _DelEnabled: Boolean;
    function _CutEnabled: Boolean;
    function _CopyEnabled: Boolean;
    function _PasteEnabled: Boolean;
    procedure SetBandMenuItemEnable(aMenuItem: TRMMenuItem);
  protected
    procedure Undo(aBuffer: PRMUndoBuffer);
    procedure AddAction(aBuffer: PRMUndoBuffer; aAction: TRMUndoAction;
      aObject: TObject; aRec: PRMUndoRec);
  public
    constructor CreateComp(aOwner: TComponent; aDesignerForm: TRMDesignerForm); override;
    destructor Destroy; override;

    procedure Editor_BtnUndoClick(Sender: TObject); override;
    procedure Editor_BtnRedoClick(Sender: TObject); override;
    procedure Editor_AddUndoAction(aAction: TRMUndoAction); override;

    procedure Editor_BeforeFormDestroy; override;
    procedure Editor_KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); override;
    procedure Editor_DisableDraw; override;
    procedure Editor_EnableDraw; override;
    procedure Editor_RedrawPage; override;
    procedure Editor_Resize; override;
    procedure Editor_Init; override;
    procedure Editor_EnableControls; override;
    procedure Editor_SetCurPage; override;
    procedure Editor_SelectionChanged(aRefreshInspProp: Boolean); override;
    function Editor_PageObjects: TList; override;
    procedure Editor_ShowContent; override;
    procedure Editor_ShowPosition; override;
    procedure Editor_FillInspFields; override;
    procedure Editor_OnInspGetObjects(aList: TStrings); override;
    procedure Editor_OnInspAfterModify(Sender: TObject; const aPropName, aPropValue: string); override;
    procedure Editor_DoClick(Sender: TObject); override;
    procedure Editor_SelectObject(aObjName: string); override;
    procedure Editor_SetObjectsID; override;
    procedure Editor_BtnDeletePageClick(Sender: TObject); override;
    procedure Editor_BtnCutClick(Sender: TObject); override;
    procedure Editor_BtnCopyClick(Sender: TObject); override;
    procedure Editor_BtnPasteClick(Sender: TObject); override;
    procedure Editor_MenuFilePreview1Click(Sender: TObject); override;
    procedure Editor_MenuFileHeaderFooterClick(Sender: TObject); override;

    property UnitType: TRMUnitType read GetUnitType write SetUnitType;
  published
  end;

implementation

uses
  Math, Registry, RM_Const, RM_Const1, RM_Utils, RM_EditorMemo,
  RM_EditorPicture, RM_EditorHilit, RM_EditorFrame, RM_EditorField, RM_EditorExpr,
  RM_Printer, RM_EditorFormat, RM_EditorCalc, RM_EditorGroup, RM_EditorBand,
  RM_DesignerOptions,
  RM_EditorCellProp, RM_EditorGridCols, RM_EditorCellWidth, RM_EditorHF,
  RM_wzGridStd;

const
  RM_AddInObjectOffset = 4;

type
  THackView = class(TRMView)
  end;

  THackReportView = class(TRMReportView)
  end;

  THackPage = class(TRMCustomPage)
  end;

  THackGridEx = class(TRMGridEx)
  end;

  THackDesigner = class(TRMDesignerForm)
  end;

var
  FUnitType: TRMUnitType;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{ TRMToolbarEdit }

constructor TRMToolbarEdit.CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
var

⌨️ 快捷键说明

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