📄 rm_prvdlg.pas
字号:
{*****************************************}
{ }
{ Report Machine v2.0 }
{ Report preview Dlg }
{ }
{*****************************************}
unit RM_PrvDlg;
interface
{$I RM.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Buttons, StdCtrls, Menus, RM_Const, RM_View, RM_Class,
TB97Tlbr, TB97Ctls, TB97
{$IFDEF Delphi4}, ImgList{$ENDIF};
type
TRMPreviewForm = class(TForm)
ProcMenu: TPopupMenu;
itmScale200: TMenuItem;
itmScale150: TMenuItem;
itmScale100: TMenuItem;
itmScaale75: TMenuItem;
itmScale50: TMenuItem;
itmScale25: TMenuItem;
itmScale10: TMenuItem;
itmPageWidth: TMenuItem;
itmOnePage: TMenuItem;
itmDoublePage: TMenuItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
ImageList1: TImageList;
N1: TMenuItem;
itmNewPage: TMenuItem;
itmDeletePage: TMenuItem;
itmEditPage: TMenuItem;
Dock971: TDock97;
ToolbarStand: TToolbar97;
btnAutoScale: TToolbarButton97;
btnOnePage: TToolbarButton97;
BtnExit: TToolbarButton97;
btn100: TToolbarButton97;
btnPageSetup: TToolbarButton97;
btnPageWidth: TToolbarButton97;
ToolbarSep972: TToolbarSep97;
btnPrint: TToolbarButton97;
ToolbarSep973: TToolbarSep97;
btnTop: TToolbarButton97;
btnSave: TToolbarButton97;
btnPrev: TToolbarButton97;
btnOpen: TToolbarButton97;
btnNext: TToolbarButton97;
btnLast: TToolbarButton97;
btnFind: TToolbarButton97;
ToolbarSep974: TToolbarSep97;
ToolbarSep975: TToolbarSep97;
tbLine: TToolbarSep97;
Dock972: TDock97;
Dock973: TDock97;
Dock974: TDock97;
N4: TMenuItem;
itmPrint: TMenuItem;
itmPrintCurrentPage: TMenuItem;
btnDesign: TToolbarButton97;
ToolbarSep971: TToolbarSep97;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure btnTopClick(Sender: TObject);
procedure btnPrevClick(Sender: TObject);
procedure btnNextClick(Sender: TObject);
procedure btnLastClick(Sender: TObject);
procedure btn100Click(Sender: TObject);
procedure btnOnePageClick(Sender: TObject);
procedure btnPageWidthClick(Sender: TObject);
procedure itmScale10Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure btnOpenClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure itmNewPageClick(Sender: TObject);
procedure itmDeletePageClick(Sender: TObject);
procedure itmEditPageClick(Sender: TObject);
procedure btnPageSetupClick(Sender: TObject);
procedure ProcMenuPopup(Sender: TObject);
procedure btnAutoScaleClick(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure itmPrintCurrentPageClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnDesignClick(Sender: TObject);
private
{ Private declarations }
FDoc: Pointer;
FViewer: TRMPreview;
FCmbZoom: TComboBox;
procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
procedure OnStatusChange(Sender: TObject);
procedure OnCmbZoomChange(Sender: TObject);
procedure OnCmbzoomKeyPress(Sender: TObject; var Key: Char);
procedure Localize;
public
{ Public declarations }
procedure Show_Modal(ADoc: Pointer);
property Viewer: TRMPreview read FViewer;
property Report: Pointer read FDoc;
end;
implementation
{$R *.DFM}
uses Printers, RM_Prntr, RM_PrDlg, RM_Utils, RM_CmpReg;
var
LastScale: Double = 1;
LastScaleMode: TRMScaleMode = mdNone;
LastAutoScale: Boolean = False;
procedure TRMPreviewForm.Localize;
begin
Font.Name := RMLoadStr(SRMDefaultFontName);
Font.Size := StrToInt(RMLoadStr(SRMDefaultFontSize));
Font.Charset := StrToInt(RMLoadStr(SCharset));
itmPageWidth.Caption := RMLoadStr(rmRes + 020);
itmOnePage.Caption := RMLoadStr(rmRes + 021);
itmDoublePage.Caption := RMLoadStr(rmRes + 022);
itmNewPage.Caption := RMLoadStr(rmRes + 030);
itmDeletePage.Caption := RMLoadStr(rmRes + 031);
itmEditPage.Caption := RMLoadStr(rmRes + 029);
itmPrint.Caption := RMLoadStr(rmRes + 40) + '...';
itmPrintCurrentPage.Caption := RMLoadStr(rmRes + 376);
btnOpen.Hint := RMLoadStr(rmRes + 025);
btnSave.Hint := RMLoadStr(rmRes + 026);
btnPrint.Hint := RMLoadStr(rmRes + 027);
btnFind.Hint := RMLoadStr(rmRes + 028);
btnOnePage.Hint := RMLoadStr(rmRes + 1858);
btnPageWidth.Hint := RMLoadStr(rmRes + 1857);
btnTop.Hint := RMLoadStr(rmRes + 32);
btnPrev.Hint := RMLoadStr(rmRes + 33);
btnNext.Hint := RMLoadStr(rmRes + 34);
btnLast.Hint := RMLoadStr(rmRes + 35);
btnPageSetup.Hint := RMLoadStr(rmRes + 24);
btnExit.Hint := RMLoadStr(rmRes + 23);
end;
procedure TRMPreviewForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if FormStyle <> fsMDIChild then RMSaveFormPosition(Self);
Action := caFree;
end;
procedure TRMPreviewForm.Show_Modal(ADoc: Pointer);
begin
FDoc := ADoc;
FViewer.Connect(ADoc);
FViewer.OnStatusChange := OnStatusChange;
N4.Visible := RMDesignerClass <> nil;
itmNewPage.Visible := N4.Visible;
itmDeletePage.Visible := N4.Visible;
itmEditPage.Visible := N4.Visible;
if not (csDesigning in TRMReport(ADoc).ComponentState) then
begin
FCmbZoom.Visible := pbZoom in TRMReport(ADoc).PreviewButtons;
tbLine.Visible := FCmbZoom.Visible;
btnFind.Visible := pbFind in TRMReport(ADoc).PreviewButtons;
ToolbarSep972.Visible := btnFind.Visible;
btnOpen.Visible := pbLoad in TRMReport(ADoc).PreviewButtons;
btnSave.Visible := pbSave in TRMReport(ADoc).PreviewButtons;
btnPrint.Visible := pbPrint in TRMReport(ADoc).PreviewButtons;
btnPageSetup.Visible := pbPageSetup in TRMReport(ADoc).PreviewButtons;
ToolbarSep975.Visible := btnOpen.Visible or btnSave.Visible or btnPrint.Visible or
btnPageSetup.Visible;
btnExit.Visible := pbExit in TRMReport(ADoc).PreviewButtons;
ToolbarSep973.Visible := btnExit.Visible;
end;
case TRMReport(ADoc).InitialZoom of
pzPageWidth: btnPageWidth.Down := TRUE;
pzOnePage: btnOnePage.Down := TRUE;
else
FViewer.LastScale := LastScale;
FViewer.ZoomMode := LastScaleMode;
// btn100.Down := TRUE;
end;
FViewer.AutoScale := LastAutoScale;
btnAutoScale.Down := FViewer.AutoScale;
btnPrint.Enabled := Printer.Printers.Count > 0;
FCmbZoom.Text := IntToStr(Round(FViewer.Zoom)) + '%';
tbLine.Visible := FCmbZoom.Visible;
btnDesign.Visible := pbDesign in TRMReport(FDoc).PreviewButtons;
ToolbarSep971.Visible := btnDesign.Visible;
if TRMReport(ADoc).ModalPreview and (not TRMReport(ADoc).MDIPreview) then
ShowModal
else
Show;
end;
procedure TRMPreviewForm.FormCreate(Sender: TObject);
begin
Localize;
FCmbZoom := TComboBox.Create(ToolbarStand);
with FCmbZoom do
begin
Parent := ToolbarStand;
SetBounds(0, 1, 80, 20);
DropDownCount := 11;
Items.Add('200%');
Items.Add('150%');
Items.Add('100%');
Items.Add('75%');
Items.Add('50%');
Items.Add('25%');
Items.Add('10%');
Items.Add(RMLoadStr(rmRes + 1857));
Items.Add(RMLoadStr(rmRes + 1858));
Items.Add(RMLoadStr(rmRes + 1859));
OnClick := OnCmbZoomChange;
OnKeyPress := OnCmbZoomKeyPress;
// OnChange := OnCmbZoomChange;
end;
ToolbarStand.OrderIndex[FCmbZoom] := 0;
FViewer := TRMPreview.Create(Self);
with FViewer do
begin
Parent := Self;
Align := alClient;
PopupMenu := ProcMenu;
AutoScale := False;
ParentForm := Self;
end;
end;
procedure TRMPreviewForm.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
begin
with Msg.MinMaxInfo^ do
begin
ptMaxSize.x := Screen.Width;
ptMaxSize.y := Screen.Height;
ptMaxPosition.x := 0;
ptMaxPosition.y := 0;
end;
end;
procedure TRMPreviewForm.btnTopClick(Sender: TObject);
begin
FViewer.First;
end;
procedure TRMPreviewForm.btnPrevClick(Sender: TObject);
begin
FViewer.Prev;
end;
procedure TRMPreviewForm.btnNextClick(Sender: TObject);
begin
FViewer.Next;
end;
procedure TRMPreviewForm.btnLastClick(Sender: TObject);
begin
FViewer.Last;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -