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