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

📄 rm_dsggridreport.pas

📁 这是一个功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      Caption := 'Split Cells';
      OnClick := btnSplitClick;
      AddToMenu(FSelectionMenu);
    end;
    N3 := TRMSeparatorMenuItem.Create(Self);
    N3.AddToMenu(FSelectionMenu);
    itmInsert := TRMSubmenuItem.Create(Self);
    with itmInsert do
    begin
      Caption := 'Insert';
      AddToMenu(FSelectionMenu);
    end;
    itmInsertLeftColumn := TRMMenuItem.Create(Self);
    with itmInsertLeftColumn do
    begin
      Caption := 'Left Column';
      OnClick := itmInsertLeftColumnClick;
      AddToMenu(itmInsert);
    end;
    itmInsertRightColumn := TRMMenuItem.Create(Self);
    with itmInsertRightColumn do
    begin
      Caption := 'Right Column';
      OnClick := itmInsertRightColumnClick;
      AddToMenu(itmInsert);
    end;
    N10 := TRMSeparatorMenuItem.Create(Self);
    N10.AddToMenu(itmInsert);
    itmInsertTopRow := TRMMenuItem.Create(Self);
    with itmInsertTopRow do
    begin
      Caption := 'Top Row';
      OnClick := itmInsertTopRowClick;
      AddToMenu(itmInsert);
    end;
    itmInsertBottomRow := TRMMenuItem.Create(Self);
    with itmInsertBottomRow do
    begin
      Caption := 'Bottom Row';
      OnClick := itmInsertBottomRowClick;
      AddToMenu(itmInsert);
    end;

    itmSep1 := TRMSeparatorMenuItem.Create(Self);
    itmSep1.AddToMenu(itmInsert);
    itmInsertLeftCell := TRMMenuItem.Create(Self);
    with itmInsertLeftCell do
    begin
      Caption := RMLoadStr(rmRes + 258);
      OnClick := itmInsertLeftCellClick;
      AddToMenu(itmInsert);
    end;
    itmInsertTopCell := TRMMenuItem.Create(Self);
    with itmInsertTopCell do
    begin
      Caption := RMLoadStr(rmRes + 259);
      OnClick := itmInsertTopCellClick;
      AddToMenu(itmInsert);
    end;
    itmDelete := TRMSubmenuItem.Create(Self);
    with itmDelete do
    begin
      Caption := 'Delete';
      AddToMenu(FSelectionMenu);
    end;
    itmDeleteColumn := TRMMenuItem.Create(Self);
    with itmDeleteColumn do
    begin
      Caption := 'Column';
      OnClick := itmDeleteColumnClick;
      AddToMenu(itmDelete);
    end;
    itmDeleteRow := TRMMenuItem.Create(Self);
    with itmDeleteRow do
    begin
      Caption := 'Row';
      OnClick := itmDeleteRowClick;
      AddToMenu(itmDelete);
    end;
    itmDeleteSep1 := TRMSeparatorMenuItem.Create(Self);
    itmDeleteSep1.AddToMenu(itmDelete);
    itmDeleteLeftCell := TRMMenuItem.Create(Self);
    with itmDeleteLeftCell do
    begin
      Caption := RMLoadStr(rmRes + 268);
      OnClick := itmDeleteLeftCellClick;
      AddToMenu(itmDelete);
    end;
    itmDeleteTopCell := TRMMenuItem.Create(Self);
    with itmDeleteTopCell do
    begin
      Caption := RMLoadStr(rmRes + 269);
      OnClick := itmDeleteTopCellClick;
      AddToMenu(itmDelete);
    end;
    N6 := TRMSeparatorMenuItem.Create(Self);
    N6.AddToMenu(FSelectionMenu);

    itmCellType := TRMSubmenuItem.Create(Self);
    with itmCellType do
    begin
      Caption := 'Cell Type';
      AddToMenu(FSelectionMenu);
    end;
    itmMemoView := TRMMenuItem.Create(Self);
    with itmMemoView do
    begin
      Caption := 'Memo View';
      Checked := True;
      GroupIndex := 1;
      RadioItem := true;
      OnClick := itmMemoViewClick;
      Tag := rmgtMemo;
      AddToMenu(itmCellType);
    end;
    itmCalcMemoView := TRMMenuItem.Create(Self);
    with itmCalcMemoView do
    begin
      Tag := rmgtCalcMemo;
      Caption := 'Calc Memo View';
      GroupIndex := 1;
      RadioItem := true;
      OnClick := itmMemoViewClick;
      Tag := rmgtCalcMemo;
      AddToMenu(itmCellType);
    end;
    itmPictureView := TRMMenuItem.Create(Self);
    with itmPictureView do
    begin
      Tag := rmgtPicture;
      Caption := 'Picture View';
      GroupIndex := 1;
      RadioItem := true;
      OnClick := itmMemoViewClick;
      AddToMenu(itmCellType);
    end;
    itmSubReportView := TRMMenuItem.Create(Self);
    with itmSubReportView do
    begin
      Tag := rmgtSubReport;
      Caption := 'SubReport View';
      GroupIndex := 1;
      RadioItem := true;
      OnClick := itmMemoViewClick;
      AddToMenu(itmCellType);
    end;
    itmInsertBand := TRMSubmenuItem.Create(Self);
    with itmInsertBand do
    begin
      Caption := 'Band';
      AddToMenu(FSelectionMenu);
    end;
    itmSelectBand := TRMSubmenuItem.Create(Self);
    itmSelectBand.AddToMenu(FSelectionMenu);
    N4 := TRMSeparatorMenuItem.Create(Self);
    N4.AddToMenu(FSelectionMenu);
    itmFrameType := TRMMenuItem.Create(Self);
    with itmFrameType do
    begin
      Caption := 'Frame Type...';
      OnClick := itmFrameTypeClick;
      AddToMenu(FSelectionMenu);
    end;
    itmEdit := TRMMenuItem.Create(Self);
    with itmEdit do
    begin
      Caption := 'Edit...';
      OnClick := itmEditClick;
      AddToMenu(FSelectionMenu);
    end;
    padpopClearContents := TRMMenuItem.Create(Self);
    with padpopClearContents do
    begin
      Caption := 'Clear Contents';
      OnClick := padpopClearContentsClick;
      AddToMenu(FSelectionMenu);
    end;

    N100 := TRMSeparatorMenuItem.Create(Self);
    N100.AddToMenu(FSelectionMenu);
    padpopOtherProp := TRMMenuItem.Create(Self);
    with padpopOtherProp do
    begin
      Caption := 'Other Prop';
      AddToMenu(FSelectionMenu);
      RMSetStrProp(padpopOtherProp, 'Caption', rmRes + 913);
    end;
  end;

  procedure _CreateOneItem(aBandType: TRMBandType);
  var
  {$IFDEF USE_TB2K}
    lItem: TTBItem;
  {$ELSE}
    litem: TRMMenuItem;
  {$ENDIF}
    lMenuItem: TRMMenuItem;
  begin
{$IFDEF USE_TB2k}
    lItem := TTBItem.Create(ToolbarBorder.btnAddBand);
    lItem.Tag := Ord(aBandType);
    lItem.Caption := RMBandNames[TRMBandType(aBandType)];
    lItem.OnClick := OnAddBandEvent;
    ToolbarBorder.btnAddBand.Add(lItem);
{$ELSE}
    litem := TRMMenuItem.Create(FPopupMenuBands);
    litem.Caption := RMBandNames[aBandType];
    litem.Tag := Ord(aBandType);
    litem.OnClick := OnAddBandEvent;
    FPopupMenuBands.Items.Add(litem);
{$ENDIF}

    lMenuItem := TRMMenuItem.Create(itmInsertBand);
    lMenuItem.Caption := RMBandNames[TRMBandType(aBandType)];
    lMenuItem.Tag := Ord(aBandType);
    lMenuItem.OnClick := OnAddBandEvent;
    itmInsertBand.Add(lMenuItem);
  end;

  procedure _CreateBandsMenuItems;
  var
    bt: TRMBandType;
  begin
    for bt := rmbtReportTitle to rmbtGroupFooter do
    begin
      _CreateOneItem(bt);
    end;

    _CreateOneItem(rmbtChild);
  end;

var
  i: Integer;
  lMenuItem: TRMMenuItem;

begin
  inherited CreateComp(aOwner, aDesignerForm);

  FGrid := nil;
  FDesignerForm := aDesignerForm;
  FPageStream := TMemoryStream.Create;

  _CreateComps;
  _CreateMainMenu;
  _CreateGridPopupMenu;
  _CreateBandsMenuItems;

  itmPictureView.Tag := rmgtPicture;
  itmSubReportView.Tag := rmgtSubReport;
  FAddinObjects := TStringList.Create;
  FAddinObjects.Clear;
  for i := 0 to RMAddInsCount - 1 do
  begin
    if not RMAddIns(i).IsControl then
    begin
      if (RMAddIns(i).ClassRef = nil) or (not RMAddIns(i).ClassRef.CanPlaceOnGridView) then Continue;

      lMenuItem := TRMMenuItem.Create(itmCellType);
      lMenuItem.GroupIndex := itmMemoView.GroupIndex;
      lMenuItem.RadioItem := True;
      lMenuItem.Tag := rmgtAddIn;
      lMenuItem.Caption := RMAddIns(i).ButtonHint;
      lMenuItem.OnClick := itmMemoViewClick;
      FAddinObjects.Add(RMAddIns(i).ClassRef.ClassName);
      itmCellType.Add(lMenuItem);
    end;
  end;

  FFieldListBox := TListBox.Create(Self);
  with FFieldListBox do
  begin
    Visible := False;
    Parent := FDesignerForm;
    Ctl3D := False;
    Style := lbOwnerDrawFixed;
    ItemHeight := 16;
    OnClick := OnFieldListBoxClick;
    OnDrawItem := OnFieldListBoxDrawItem;
  end;

  Localize;
  LoadIni;

{$IFNDEF USE_TB2k}
  FDesignerForm.MainMenu.Merge(FMainMenu);
{$ENDIF}
end;

destructor TRMGridReportPageEditor.Destroy;
begin
  SaveIni;
{$IFNDEF USE_TB2k}
  FDesignerForm.MainMenu.Unmerge(FMainMenu);
{$ENDIF}
  SetGridNilProp;
  FreeAndNil(FPageObjectList);
  FreeAndNil(FAddinObjects);
  FreeAndNil(FPageStream);

  inherited Destroy;
end;

procedure TRMGridReportPageEditor.SaveIni;
begin
  RMSaveToolbars('\GridReport', [ToolbarBorder, ToolbarEdit, ToolbarGrid, ToolbarCellEdit]);
end;

procedure TRMGridReportPageEditor.LoadIni;
begin
  RMRestoreToolbars('\GridReport', [ToolbarEdit, ToolbarBorder, ToolbarGrid, ToolbarCellEdit]);
end;

procedure TRMGridReportPageEditor.Localize;
begin
  RMSetStrProp(MenuEdit, 'Caption', rmRes + 163);
  RMSetStrProp(MenuEditCopyPage, 'Caption', rmRes + 861);
  RMSetStrProp(MenuEditPastePage, 'Caption', rmRes + 862);
  RMSetStrProp(MenuEditCut, 'Caption', rmRes + 166);
  RMSetStrProp(MenuEditCopy, 'Caption', rmRes + 167);
  RMSetStrProp(MenuEditPaste, 'Caption', rmRes + 168);
  RMSetStrProp(MenuEditDelete, 'Caption', rmRes + 169);
  RMSetStrProp(MenuEditSelectAll, 'Caption', rmRes + 170);
  RMSetStrProp(MenuEditUndo, 'Caption', rmRes + 164);
  RMSetStrProp(MenuEditRedo, 'Caption', rmRes + 165);

  RMSetStrProp(padSetToolbar, 'Caption', rmRes + 177);
  RMSetStrProp(padAddTools, 'Caption', rmRes + 178);
  RMSetStrProp(MenuEditToolbar, 'Caption', rmRes + 177);
  RMSetStrProp(MenuEditOptions, 'Caption', rmRes + 179);
  RMSetStrProp(itmToolbarStandard, 'Caption', rmRes + 181);
  RMSetStrProp(itmToolbarText, 'Caption', rmRes + 182);
  RMSetStrProp(itmToolbarBorder, 'Caption', rmRes + 180);
  RMSetStrProp(itmToolbarInspector, 'Caption', rmRes + 184);
  RMSetStrProp(itmToolbarInsField, 'Caption', rmRes + 110);
//  RMSetStrProp(itmToolbarGrid, 'Caption', rmRes + 0);
  RMSetStrProp(itmToolbarCellEdit, 'Caption', rmRes + 866);

  RMSetStrProp(MenuCell, 'Caption', rmRes + 807);
  RMSetStrProp(MenuCellMerge, 'Caption', rmRes + 805);
  RMSetStrProp(MenuCellReverse, 'Caption', rmRes + 806);
  RMSetStrProp(MenuCellProperty, 'Caption', rmRes + 694);
  RMSetStrProp(MenuCellInsertColumn, 'Caption', rmRes + 801);
  RMSetStrProp(MenuCellInsertRow, 'Caption', rmRes + 802);
  RMSetStrProp(MenuCellDeleteColumn, 'Caption', rmRes + 803);
  RMSetStrProp(MenuCellDeleteRow, 'Caption', rmRes + 804);
  RMSetStrProp(MenuCellTableSize, 'Caption', rmRes + 692);
  RMSetStrProp(MenuCellRow, 'Caption', rmRes + 245);
  RMSetStrProp(MenuCellColumn, 'Caption', rmRes + 246);
  RMSetStrProp(itmRowHeight, 'Caption', rmRes + 247);
  RMSetStrProp(itmAverageRowHeight, 'Caption', rmRes + 248);
  RMSetStrProp(itmColumnHeight, 'Caption', rmRes + 249);
  RMSetStrProp(itmAverageColumnWidth, 'Caption', rmRes + 250);
  RMSetStrProp(MenuCellInsertCell, 'Caption', rmRes + 252);
  RMSetStrProp(itmInsertCellLeft, 'Caption', rmRes + 808);
  RMSetStrProp(itmInsertCellTop, 'Caption', rmRes + 810);
  RMSetStrProp(SelectionMenu_popCut, 'Caption', rmRes + 166);
  RMSetStrProp(SelectionMenu_popCopy, 'Caption', rmRes + 167);
  RMSetStrProp(SelectionMenu_popPaste, 'Caption', rmRes + 168);
//  RMSetStrProp(SelectionMenu_popInsert, 'Caption', rmRes + 169);
//  RMSetStrProp(SelectionMenu_popDelete, 'Caption', rmRes + 169);

  RMSetStrProp(itmGridMenuBandProp, 'Caption', rmRes + 875);
  RMSetStrProp(itmCellProp, 'Caption', rmRes + 694);
  RMSetStrProp(itmMergeCells, 'Caption', rmRes + 805);
  RMSetStrProp(itmSplitCells, 'Caption', rmRes + 806);
  RMSetStrProp(itmInsert, 'Caption', rmRes + 702);
  RMSetStrProp(itmInsertLeftColumn, 'Caption', rmRes + 808);
  RMSetStrProp(itmInsertRightColumn, 'Caption', rmRes + 809);
  RMSetStrProp(itmInsertTopRow, 'Caption', rmRes + 810);
  RMSetStrProp(itmInsertBottomRow, 'Caption', rmRes + 811);
  RMSetStrProp(itmDelete, 'Caption', rmRes + 350);
  RMSetStrProp(itmDeleteColumn, 'Caption', rmRes + 812);
  RMSetStrProp(itmDeleteRow, 'Caption', rmRes + 813);
  RMSetStrProp(itmCellType, 'Caption', rmRes + 814);
  RMSetStrProp(itmFrameType, 'Caption', rmRes + 214);
  RMSetStrProp(itmEdit, 'Caption', rmRes + 153);
  RMSetStrProp(padpopClearContents, 'Caption', rmRes + 881);
  RMSetStrProp(itmMemoView, 'Caption', rmRes + 133);
  RMSetStrProp(itmCalcMemoView, 'Caption', rmRes + 197);
  RMSetStrProp(itmPictureView, 'Caption', rmRes + 135);
  RMSetStrProp(itmSubReportView, 'Caption', rmRes + 136);
  RMSetStrProp(itmInsertBand, 'Caption', rmRes + 860);
  RMSetStrProp(itmSelectBand, 'Caption', rmRes + 876);
end;

type
  TRMUndoObject = class(TObject)
  private
    FAryObjID: array of Integer;
    FAryRow: array of Integer;
    FAryCol: array of Integer;
  protected
  public
    constructor Create;
    destructor Destroy; override;
  end;

constructor TRMUndoObject.Create;
begin
  inherited Create;

  SetLength(FAryObjID, 0);
  SetLength(FAryRow, 0);
  SetLength(FAryCol, 0);
end;

destructor TRMUndoObject.Destroy;
begin
  SetLength(FAryObjID, 0);
  SetLength(FAryRow, 0);
  SetLength(FAryCol, 0);

  inherited Destroy;
end;

procedure TRMGridReportPageEditor.Editor_BtnUndoClick(Sender: TObject);
begin
  if FDesignerForm.Tab1.TabIndex = 0 then
  begin
    if FDesignerForm.CodeMemo.RMCanUndo then
    begin
      FDesignerForm.CodeMemo.RMUndo;
      Editor_ShowPosition;
    end;
  end
  else
  

⌨️ 快捷键说明

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