📄 rm_dsggridreport.pas
字号:
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 + -