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

📄 rm_designer.pas

📁 这是一个功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
begin
  //
end;

procedure TRMCustomPageEditor.Editor_Tab1Changed;
begin
  //
end;

procedure TRMCustomPageEditor.Editor_OnFormMouseWheelUp(aUp: Boolean);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_InitToolbarComponent;
begin
  //
end;

procedure TRMCustomPageEditor.Editor_EnableControls;
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnDeletePageClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_OnInspAfterModify(Sender: TObject;
  const aPropName, aPropValue: string);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_MenuFilePreview1Click(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_MenuFileHeaderFooterClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BeforeFormDestroy;
begin
  //
end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{ TRMDefaultPageEditor }

constructor TRMDefaultPageEditor.CreateComp(aOwner: TComponent; aDesignerForm: TRMDesignerForm);
begin
  inherited CreateComp(aOwner, aDesignerForm);

  FPanel := TPanel.Create(Self);
  with FPanel do
  begin
    Parent := TWinControl(aOwner);
    Align := alClient;
    BevelOuter := bvLowered;
  end;
end;

destructor TRMDefaultPageEditor.Destroy;
begin
  inherited Destroy;
end;

procedure TRMDefaultPageEditor.Editor_BtnDeletePageClick(Sender: TObject);

  procedure _AlignmentSubReports(aPageNo: Integer);
  var
    i, j: Integer;
    t: TRMView;
  begin
    with FDesignerForm.Report do
    begin
      for i := 0 to Pages.Count - 1 do
      begin
        j := 0;
        while j < THackPage(Pages[i]).Objects.Count do
        begin
          t := THackPage(Pages[i]).Objects[j];
          if t.ObjectType = rmgtSubReport then
          begin
            if TRMSubReportView(t).SubPage = aPageNo then
            begin
              Pages[i].Delete(j);
              Dec(j);
            end
            else if TRMSubReportView(t).SubPage > aPageNo then
              TRMSubReportView(t).SubPage := TRMSubReportView(t).SubPage - 1;
          end;
          Inc(j);
        end;
      end;
    end;
  end;

  procedure _RemovePage(aPageNo: Integer);
  begin
    FDesignerForm.Modified := True;
    with FDesignerForm.Report do
    begin
      if (aPageNo >= 0) and (aPageNo < Pages.Count) then
      begin
        if Pages.Count = 1 then
          Pages[aPageNo].Clear
        else
        begin
          FDesignerForm.Report.Pages.Delete(aPageNo);
          FDesignerForm.Tab1.Tabs.Delete(aPageNo + 1);
          _AlignmentSubReports(aPageNo);

          FDesignerForm.CurPage := 0;
        end;
      end;
    end;
  end;

begin
  if FDesignerForm.DesignerRestrictions * [rmdrDontDeletePage] <> [] then Exit;

  if FDesignerForm.Report.Pages.Count > 1 then
  begin
    if Application.MessageBox(PChar(RMLoadStr(SRemovePg)),
      PChar(RMLoadStr(SConfirm)), mb_IconQuestion + mb_YesNo) = mrYes then
    begin
      _RemovePage(FDesignerForm.CurPage);
    end;
  end;
end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}

constructor TRMToolbarModifyPrepared.CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
begin
  inherited Create(AOwner);
  Visible := False;
//  BeginUpdate;
  Dockedto := DockTo;
  FDesignerForm := TRMDesignerForm(AOwner);
  ParentForm := FDesignerForm;
  DockRow := 4;
  DockPos := 0;
  Name := 'ToolbarModifyPrepared';
  CloseButton := False;

  btnModifyPreviedFirst := TRMToolbarButton.Create(Self);
  with btnModifyPreviedFirst do
  begin
    Width := 60;
    Images := FDesignerForm.ImageListModifyPreview;
    ImageIndex := 0;
    OnClick := btnModifyPreviedFirstClick;
    AddTo := Self;
{$IFDEF USE_TB2k}
    DisplayMode := nbdmImageAndText;
{$ELSE}
    DisplayMode := dmBoth;
{$ENDIF}
  end;
  btnModifyPreviedPrev := TRMToolbarButton.Create(Self);
  with btnModifyPreviedPrev do
  begin
    Width := 60;
    Images := FDesignerForm.ImageListModifyPreview;
    ImageIndex := 1;
    OnClick := btnModifyPreviedPrevClick;
    AddTo := Self;
{$IFDEF USE_TB2k}
    DisplayMode := nbdmImageAndText;
{$ELSE}
    DisplayMode := dmBoth;
{$ENDIF}
  end;
  Edit1 := TRMEdit.Create(Self);
  with Edit1 do
  begin
    Width := 64;
    Text := '1';
    OnKeyPress := Edit1KeyPress;
    AddTo := Self;
  end;
  btnModifyPreviedNext := TRMToolbarButton.Create(Self);
  with btnModifyPreviedNext do
  begin
    Width := 60;
    Images := FDesignerForm.ImageListModifyPreview;
    ImageIndex := 2;
    OnClick := btnModifyPreviedNextClick;
    AddTo := Self;
{$IFDEF USE_TB2k}
    DisplayMode := nbdmImageAndText;
{$ELSE}
    DisplayMode := dmBoth;
{$ENDIF}
  end;
  btnModifyPreviedLast := TRMToolbarButton.Create(Self);
  with btnModifyPreviedLast do
  begin
    Width := 60;
    Images := FDesignerForm.ImageListModifyPreview;
    ImageIndex := 3;
    OnClick := btnModifyPreviedLastClick;
    AddTo := Self;
{$IFDEF USE_TB2k}
    DisplayMode := nbdmImageAndText;
{$ELSE}
    DisplayMode := dmBoth;
{$ENDIF}
  end;
  btnAutoSave := TRMToolbarButton.Create(Self);
  with btnAutoSave do
  begin
    Width := 60;
    AllowAllup := True;
    GroupIndex := 1;
    OnClick := btnAutoSaveClick;
    AddTo := Self;
  end;

//  EndUpdate;
  Localize;
end;

procedure TRMToolbarModifyPrepared.Localize;
begin
  RMSetStrProp(btnModifyPreviedFirst, 'Caption', rmRes + 218);
  RMSetStrProp(btnModifyPreviedPrev, 'Caption', rmRes + 219);
  RMSetStrProp(btnModifyPreviedNext, 'Caption', rmRes + 220);
  RMSetStrProp(btnModifyPreviedLast, 'Caption', rmRes + 221);
  RMSetStrProp(btnAutoSave, 'Caption', rmRes + 222);
end;

type
  THackPages = class(TRMPages)
  end;

  THackEndPage = class(TRMEndPage)
  end;

procedure TRMToolbarModifyPrepared._EditPreparedReport(aNewPageNo: Integer);
var
  liEndPage: TRMEndPage;
  liPicture: TPicture;
  libkPic: TRMbkPicture;
  lipicLeft, lipicTop, liPicWidth, liPicHeight: Integer;
  w: Word;
begin
  if FDesignerForm.Modified then
  begin
    if btnAutoSave.Down then
      w := mrYes
    else
      w := Application.MessageBox(PChar(RMLoadStr(SSaveChanges) + '?'),
        PChar(RMLoadStr(SConfirm)), mb_YesNoCancel + mb_IconQuestion);

    if w = mrYes then
    begin
      FDesignerForm.Report.EndPages[FDesignerForm.EndPageNo].ObjectsToStream(FDesignerForm.Report);
      FDesignerForm.Report.CanRebuild := False;
      RMDesigner.Modified := False;
      FDesignerForm.Report.Modified := True;
    end
    else if w = mrCancel then
      Exit;
  end;

  FDesignerForm.Modified := False;
  FDesignerForm.EndPageNo := aNewPageNo;
  libkPic := FDesignerForm.Report.EndPages.bkPictures[FDesignerForm.Report.EndPages[aNewPageNo].bkPictureIndex];
  if libkPic <> nil then
  begin
    liPicture := TPicture.Create;
    liPicture.Assign(libkPic.Picture);
    lipicLeft := libkPic.Left;
    lipicTop := libkPic.Top;
    liPicWidth := libkPic.Width;
    liPicHeight := libkPic.Height;
  end
  else
  begin
    liPicture := nil;
    lipicLeft := 0;
    lipicTop := 0;
    liPicWidth := 0;
    liPicHeight := 0;
  end;

  try
    THackPages(FDesignerForm.Report.Pages).FPages.Clear;
    FDesignerForm.Report.EndPages[FDesignerForm.EndPageNo].StreamToObjects(FDesignerForm.Report, False);

    liEndPage := FDesignerForm.Report.EndPages[FDesignerForm.EndPageNo];
    THackPages(FDesignerForm.Report.Pages).FPages.Add(liEndPage.Page);

    if liPicture <> nil then
    begin
      THackReportPage(liEndPage.Page).FbkPicture.Assign(liPicture);
      liEndPage.Page.bkPictureWidth := liPicWidth;
      liEndPage.Page.bkPictureHeight := liPicHeight;
    end;
    liEndPage.Page.BackPictureLeft := lipicLeft;
    liEndPage.Page.BackPictureTop := lipicTop;
  finally
    liPicture.Free;
    FDesignerForm.CurPage := 0;
    Edit1.Text := IntToStr(FDesignerForm.EndPageNo + 1);
  end;
end;

procedure TRMToolbarModifyPrepared.btnModifyPreviedFirstClick(Sender: TObject);
begin
  if FDesignerForm.EndPageNo <> 0 then
  begin
    _EditPreparedReport(0);
  end;
end;

procedure TRMToolbarModifyPrepared.btnModifyPreviedPrevClick(Sender: TObject);
begin
  if FDesignerForm.EndPageNo > 0 then
  begin
    _EditPreparedReport(FDesignerForm.EndPageNo - 1);
  end;
end;

procedure TRMToolbarModifyPrepared.btnModifyPreviedLastClick(Sender: TObject);
begin
  if FDesignerForm.EndPageNo <> FDesignerForm.Report.EndPages.Count - 1 then
  begin
    _EditPreparedReport(FDesignerForm.Report.EndPages.Count - 1);
  end;
end;

procedure TRMToolbarModifyPrepared.btnModifyPreviedNextClick(Sender: TObject);
begin
  if FDesignerForm.EndPageNo < FDesignerForm.Report.EndPages.Count - 1 then
  begin
    _EditPreparedReport(FDesignerForm.EndPageNo + 1);
  end;
end;

procedure TRMToolbarModifyPrepared.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  liPageNo: Integer;
begin
  if Key = #13 then
  begin
    try
      liPageNo := StrToInt(Edit1.Text);
      if liPageNo < 0 then
        liPageNo := 0;
      if liPageNo > FDesignerForm.Report.EndPages.Count - 1 then
        liPageNo := FDesignerForm.Report.EndPages.Count - 1;
      if FDesignerForm.EndPageNo <> liPageNo then
      begin
        _EditPreparedReport(liPageNo);
      end;
    except;
      Edit1.Text := IntToStr(FDesignerForm.EndPageNo);
    end;
  end;
end;

procedure TRMToolbarModifyPrepared.btnAutoSaveClick(Sender: TObject);
begin
  FDesignerForm.AutoSave := btnAutoSave.Down;
  TRMToolbarButton(Sender).Down := FDesignerForm.AutoSave;
end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{ TRMToolbarStandard }

constructor TRMToolbarStandard.CreateAndDock(AOwner: TComponent; DockTo: TRMDock);

  procedure _CreatePageButtons(aIsReportPage: Boolean);
  var
    i: Integer;
    lButton: TRMToolbarButton;
  begin
    for i := 0 to RMDsgPageButtonCount - 1 do
    begin
      if RMDsgPageButton(i).IsReportPage <> aIsReportPage then Continue;

      lButton := TRMToolbarButton.Create(Self);
      with lButton do
      begin
        Images := FDesignerForm.ImageListStand;
        ImageIndex := StrToInt(RMDsgPageButton(i).ButtonBmpRes);
        if RMDsgPageButton(i).IsReportPage then
          OnClick := FDesignerForm.btnAddPageClick
        else
          OnClick := FDesignerForm.btnAddFormClick;

        lButton.Hint := RMDsgPageButton(i).Caption;
        Tag := i;
        AddTo := Self;

        SetLength(FAryButton, Length(FAryButton) + 1);
        FAryButton[Length(FAryButton) - 1] := lButton;
      end;
    end;
  end;

begin
  inherited Create(AOwner);
  Visible := False;
//  BeginUpdate;
  Dockedto := DockTo;
  FDesignerForm := TRMDesignerForm(AOwner);
  ParentForm := FDesignerForm;
  DockRow := 0;
  DockPos := 0;
  Name := 'ToolbarStandard';
  CloseButton := False;

  btnFileNew := TRMToolbarButton.Create(Self);
  with btnFileNew do
  begin
    ImageIndex := 0;
    Images := FDesignerForm.ImageListStand;
    OnClick := FDesignerForm.btnFileNewClick;
    AddTo := Self;
  end;
{$IFDEF USE_TB2K}
  btnFileOpen := TRMSubmenuItem.Create(Self);
{$ELSE}
  btnFileOpen := TRMToolbarButton.Create(Self);
{$ENDIF}
  with btnFileOpen do
  begin
    ImageIndex := 1;
    Images := FDesignerForm.ImageListStand;
    OnClick := FDesignerForm.btnFileOpenClick;
    DropdownCombo := True;
{$IFDEF USE_TB2k}
    Self.Items.Add(btnFileOpen);
{$ELSE}
    AddTo := Self;
    DropdownMenu := FDesignerForm.FPopupMenuOpendFiles;
{$ENDIF}
  end;
  btnFileSave := TRMToolbarButton.Create(Self);
  with btnFileSave do
  begin
    ImageIndex := 2;
    Images := FDesignerForm.ImageListStand;
    OnClick := FDesignerForm.btnFileSaveClick;
    AddTo := Self;
  end;
  ToolbarSep971 := TRMToolbarSep.Create(Self);

⌨️ 快捷键说明

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