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

📄 rm_prvdlg.pas

📁 report machine 2.3 功能强大
💻 PAS
📖 第 1 页 / 共 2 页
字号:
end;

procedure TRMPreviewForm.btn100Click(Sender: TObject);
begin
  FViewer.Zoom := 100;
  LastScale := FViewer.LastScale;
  LastScaleMode := FViewer.ZoomMode;
end;

procedure TRMPreviewForm.btnOnePageClick(Sender: TObject);
begin
  FViewer.OnePage;
  LastScale := FViewer.LastScale;
  LastScaleMode := FViewer.ZoomMode;
end;

procedure TRMPreviewForm.btnPageWidthClick(Sender: TObject);
begin
  FViewer.PageWidth;
  LastScale := FViewer.LastScale;
  LastScaleMode := FViewer.ZoomMode;
end;

procedure TRMPreviewForm.itmScale10Click(Sender: TObject);
begin
  with Sender as TMenuItem do
  begin
    case Tag of
      1: FViewer.PageWidth;
      2: FViewer.OnePage;
      3: FViewer.TwoPages;
    else
      FViewer.Zoom := Tag;
    end;
    Checked := True;
  end;
  FCmbZoom.Text := IntToStr(Round(FViewer.Zoom)) + '%';
  LastScale := FViewer.LastScale;
  LastScaleMode := FViewer.ZoomMode;
end;

procedure TRMPreviewForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if FViewer.Doc = nil then Exit;
  if Key in [vk_Up, vk_Down, vk_Prior, vk_Next] then
    if FViewer.VScrollBar.Enabled then FViewer.VScrollBar.SetFocus;
  if Key in [vk_Left, vk_Right] then
    if FViewer.HScrollBar.Enabled then FViewer.HScrollBar.SetFocus;
  if Key = vk_Up then
    FViewer.VScrollBar.Position := FViewer.VScrollBar.Position - FViewer.VScrollBar.SmallChange
  else if Key = vk_Down then
    FViewer.VScrollBar.Position := FViewer.VScrollBar.Position + FViewer.VScrollBar.SmallChange
  else if Key = vk_Left then
    FViewer.HScrollBar.Position := FViewer.HScrollBar.Position - FViewer.HScrollBar.SmallChange
  else if Key = vk_Right then
    FViewer.HScrollBar.Position := FViewer.HScrollBar.Position + FViewer.HScrollBar.SmallChange
  else if Key = vk_Prior then
  begin
    if ssCtrl in Shift then
      btnPrev.Click
    else
      FViewer.VScrollBar.Position := FViewer.VScrollBar.Position - FViewer.VScrollBar.LargeChange;
  end
  else if Key = vk_Next then
  begin
    if ssCtrl in Shift then
      btnNext.Click
    else
      FViewer.VScrollBar.Position := FViewer.VScrollBar.Position + FViewer.VScrollBar.LargeChange;
  end
  else if Key = vk_Escape then
    btnExit.Click
  else if Key = vk_Home then
  begin
    if ssCtrl in Shift then
      FViewer.VScrollBar.Position := 0
    else
      Exit;
  end
  else if Key = vk_End then
  begin
    if ssCtrl in Shift then
      btnLast.Click
    else
      Exit;
  end
  else if ssCtrl in Shift then
  begin
		if (ssAlt in Shift) and (Chr(Key) = 'P') and btnPrint.Enabled then
			FViewer.PrintCurrentPage
    else if Chr(Key) = 'O' then btnOpen.Click
    else if Chr(Key) = 'S' then btnSave.Click
    else if (Chr(Key) = 'P') and btnPrint.Enabled then btnPrint.Click
    else if Chr(Key) = 'F' then btnFind.Click
    else if (Chr(Key) = 'E') and itmEditPage.Visible then itmEditPage.Click;
  end
  else if Key = vk_F3 then
  begin
    if FViewer.FindStr <> '' then
    begin
      if FViewer.LastFoundPage <> FViewer.CurPage - 1 then
      begin
        FViewer.LastFoundPage := FViewer.CurPage - 1;
        FViewer.LastFoundObject := 0;
      end;
      FViewer.FindNext;
    end;
  end
  else
    Exit;

  Key := 0;
end;

procedure TRMPreviewForm.btnOpenClick(Sender: TObject);
begin
  if FViewer.Doc = nil then
    Exit;

  OpenDialog.Filter := RMLoadStr(SRepFile) + ' (*.rmp)|*.rmp';
  with OpenDialog do
  begin
    if Execute then
      FViewer.LoadFromFile(FileName);
  end;
end;

procedure TRMPreviewForm.btnSaveClick(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  if FViewer.Doc = nil then
    Exit;

  s := RMLoadStr(SRepFile) + ' (*.rmp)|*.rmp';
  for i := 0 to RMFiltersCount - 1 do
    s := s + '|' + RMFilters(i).FilterDesc + '|' + RMFilters(i).FilterExt;

  SaveDialog.Filter := s;
  SaveDialog.FilterIndex := 1;
  if SaveDialog.Execute then
  begin
    FViewer.SaveToFile(SaveDialog.FileName, SaveDialog.FilterIndex);
  end;
end;

procedure TRMPreviewForm.btnPrintClick(Sender: TObject);
begin
  FViewer.Print;
end;

procedure TRMPreviewForm.OnCmbZoomChange(Sender: TObject);
begin
  case FCmbZoom.ItemIndex of
    0: FViewer.Zoom := 200;
    1: FViewer.Zoom := 150;
    2: FViewer.Zoom := 100;
    3: FViewer.Zoom := 75;
    4: FViewer.Zoom := 50;
    5: FViewer.Zoom := 25;
    6: FViewer.Zoom := 10;
    7: FViewer.PageWidth;
    8: FViewer.OnePage;
    9: FViewer.TwoPages;
  end;
end;

procedure TRMPreviewForm.OnCmbZoomKeyPress(Sender: TObject;
  var Key: Char);
begin
  if (Key = #13) then
  begin
  	try
  	  FViewer.Zoom := StrToIntDef(FCmbZoom.Text, 100);
    except
    end;
  end;
end;

procedure TRMPreviewForm.btnFindClick(Sender: TObject);
begin
  FViewer.Find;
end;

procedure TRMPreviewForm.itmNewPageClick(Sender: TObject);
begin
  FViewer.AddPage;
end;

procedure TRMPreviewForm.itmDeletePageClick(Sender: TObject);
begin
	FViewer.DeletePage(FViewer.CurPage - 1);
end;

procedure TRMPreviewForm.itmEditPageClick(Sender: TObject);
begin
  FViewer.EditPage(FViewer.CurPage - 1);
end;

procedure TRMPreviewForm.btnPageSetupClick(Sender: TObject);
begin
  FViewer.DlgPageSetup;
end;

procedure TRMPreviewForm.ProcMenuPopup(Sender: TObject);
begin
  N4.Visible := FViewer.CanModify;
  itmNewPage.Visible := N4.Visible;
  itmDeletePage.Visible := N4.Visible;
  itmEditPage.Visible := N4.Visible;
end;

procedure TRMPreviewForm.btnAutoScaleClick(Sender: TObject);
begin
	FViewer.AutoScale := btnAutoScale.Down;
  LastAutoScale := btnAutoScale.Down;
end;

procedure TRMPreviewForm.BtnExitClick(Sender: TObject);
begin
  if TRMReport(FDoc).ModalPreview then
    ModalResult := mrOk
  else
    Close;
end;

procedure TRMPreviewForm.itmPrintCurrentPageClick(Sender: TObject);
begin
	FViewer.PrintCurrentPage;
end;

procedure TRMPreviewForm.FormShow(Sender: TObject);
begin
  if FormStyle <> fsMDIChild then
    RMRestoreFormPosition(Self);
end;

procedure TRMPreviewForm.OnStatusChange(Sender: TObject);
begin
  case FViewer.ZoomMode of
    mdPageWidth: btnPageWidth.Down := TRUE;
    mdOnePage: btnOnePage.Down := TRUE;
  else
    if Round(FViewer.Zoom) = 100 then
      btn100.Down := TRUE
    else
    begin
      btn100.Down := FALSE;
      btnPageWidth.Down := FALSE;
      btnOnePage.Down := FALSE;
    end;
  end;

  if btnPageWidth.Down then
    FCmbZoom.ItemIndex := 7
  else if btnOnePage.Down then
    FCmbZoom.ItemIndex := 8
  else if btn100.Down then
    FCmbZoom.ItemIndex := 2
  else
    FCmbZoom.ItemIndex := FCmbZoom.Items.IndexOf(IntToStr(Round(FViewer.Zoom)) + '%');
end;

procedure TRMPreviewForm.btnDesignClick(Sender: TObject);
begin
	FViewer.DesignReport;
end;

end.

⌨️ 快捷键说明

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