📄 preview.pas
字号:
unit Preview;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ReportControl, ExtCtrls, Buttons, StdCtrls;
type
TPreviewForm = class(TForm)
Panel1: TPanel;
ScrollBox1: TScrollBox;
ScaleComboBox: TComboBox;
PrintBtn: TSpeedButton;
PrevPageBtn: TSpeedButton;
NextPageBtn: TSpeedButton;
CloseBtn: TSpeedButton;
ReportControl1: TReportControl;
PageLabel: TLabel;
PrintThisPageBtn: TSpeedButton;
But1: TSpeedButton;
But2: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SaveDialog1: TSaveDialog;
procedure ScrollBox1Resize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NextPageBtnClick(Sender: TObject);
procedure PrevPageBtnClick(Sender: TObject);
procedure ScaleComboBoxChange(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure PrintThisPageBtnClick(Sender: TObject);
procedure But1Click(Sender: TObject);
procedure But2Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
PageCount: Integer;
CurrentPage: Integer;
procedure PrintFile(strFileName: string);
procedure SetPreviewMode(bPreview: Boolean);
end;
var
PreviewForm: TPreviewForm;
EE:Boolean;
implementation
{$R *.DFM}
procedure TPreviewForm.ScrollBox1Resize(Sender: TObject);
begin
if ClientRect.Right > ReportControl1.Width + 20 then
ReportControl1.Left := (ClientRect.Right - ReportControl1.Width) div 2
else
ReportControl1.Left := 10;
end;
procedure TPreviewForm.FormCreate(Sender: TObject);
var
strFileDir: TFileName;
begin
WindowsTaTe:=wsMaximized;
PageCount := 1;
CurrentPage := 1;
ScaleComboBox.ItemIndex := 3;
// PageLabel.Caption := IntToStr(CurrentPage) + ' of ' + IntToStr(PageCount);
PageLabel.Caption := IntToStr(PageCount) + ' 页中的第 ' + IntToStr(CurrentPage) + ' 页 ';
// ReportControl1.IsPreview := FPreview;
strFileDir := ExtractFileDir(Application.ExeName); //+ '\';
if copy(strfiledir, length(strfiledir), 1) <> '\' then strFileDir := strFileDir + '\';
if FileExists(strFileDir + 'Temp\1.tmp') then
ReportControl1.LoadFromFile(strFileDir + 'Temp\1.tmp');
end;
procedure TPreviewForm.NextPageBtnClick(Sender: TObject);
var
nPrevScale: Integer;
strFileDir: TFileName;
begin
nPrevScale := ReportControl1.ReportScale;
if CurrentPage >= PageCount then
Exit;
CurrentPage := CurrentPage + 1;
if CurrentPage >= PageCount then
begin
NextPageBtn.Enabled := False;
but2.enabled := false;
end;
PrevPageBtn.Enabled := True;
but1.enabled := true;
PageLabel.Caption := IntToStr(PageCount) + ' 页中的第 ' + IntToStr(CurrentPage) + ' 页 ';
// PageLabel.Caption := IntToStr(CurrentPage) + ' of ' + IntToStr(PageCount);
LockWindowUpdate(Handle);
strFileDir := ExtractFileDir(Application.ExeName); // + '\';
if copy(strfiledir, length(strfiledir), 1) <> '\' then strFileDir := strFileDir + '\';
if FileExists(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp') then
ReportControl1.LoadFromFile(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp');
ReportControl1.ReportScale := nPrevScale;
ReportControl1.Enabled:=EE;
LockWindowUpdate(0);
end;
procedure TPreviewForm.PrevPageBtnClick(Sender: TObject);
var
nPrevScale: Integer;
strFileDir: TFileName;
begin
nPrevScale := ReportControl1.ReportScale;
if CurrentPage <= 1 then
Exit;
CurrentPage := CurrentPage - 1;
if CurrentPage <= 1 then
begin
PrevPageBtn.Enabled := False;
but1.enabled := false;
end;
NextPageBtn.Enabled := True;
but2.Enabled := true;
PageLabel.Caption := IntToStr(PageCount) + ' 页中的第 ' + IntToStr(CurrentPage) + ' 页 ';
// PageLabel.Caption := IntToStr(CurrentPage) + ' of ' + IntToStr(PageCount);
LockWindowUpdate(Handle);
strFileDir := ExtractFileDir(Application.ExeName); // + '\';
if copy(strfiledir, length(strfiledir), 1) <> '\' then strFileDir := strFileDir + '\';
if FileExists(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp') then
ReportControl1.LoadFromFile(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp');
ReportControl1.ReportScale := nPrevScale;
ReportControl1.Enabled:=EE;
LockWindowUpdate(0);
end;
procedure TPreviewForm.ScaleComboBoxChange(Sender: TObject);
var
nScale: Integer;
begin
case ScaleComboBox.ItemIndex of
0: nScale := 200;
1: nScale := 150;
2: nScale := 125;
3: nScale := 100;
4: nScale := 75;
5: nScale := 50;
6: nScale := 20;
end;
ShowWindow(ReportControl1.Handle, SW_HIDE);
ReportControl1.ReportScale := nScale;
ScrollBox1Resize(Self);
ShowWindow(ReportControl1.Handle, SW_SHOW);
end;
procedure TPreviewForm.PrintBtnClick(Sender: TObject);
begin
SpeedButton2.Enabled:=True;
TReportRunTime(Owner).Print;
end;
procedure TPreviewForm.CloseBtnClick(Sender: TObject);
begin
Close;
end;
procedure TPreviewForm.PrintThisPageBtnClick(Sender: TObject);
begin
if ReportControl1.ReportScale <> 100 then
begin
ShowWindow(ReportControl1.Handle, SW_HIDE);
ReportControl1.ReportScale := 100;
ScrollBox1Resize(Self);
ShowWindow(ReportControl1.Handle, SW_SHOW);
end;
ReportControl1.PrintIt;
end;
procedure TPreviewForm.PrintFile(strFileName: string);
begin
ReportControl1.LoadFromFile(strFileName);
ReportControl1.PrintIt;
end;
procedure TPreviewForm.SetPreviewMode(bPreview: Boolean);
begin
ReportControl1.IsPreview := bPreview;
ReportControl1.Refresh;
end;
procedure TPreviewForm.But1Click(Sender: TObject);
var
nPrevScale: Integer;
strFileDir: TFileName;
begin
nPrevScale := ReportControl1.ReportScale;
CurrentPage := 1;
PrevPageBtn.Enabled := False;
but1.Enabled := False;
NextPageBtn.Enabled := True;
but2.Enabled := true;
PageLabel.Caption := IntToStr(PageCount) + ' 页中的第 ' + IntToStr(CurrentPage) + ' 页 ';
// PageLabel.Caption := IntToStr(CurrentPage) + ' of ' + IntToStr(PageCount);
LockWindowUpdate(Handle);
strFileDir := ExtractFileDir(Application.ExeName); // + '\';
if copy(strfiledir, length(strfiledir), 1) <> '\' then strFileDir := strFileDir + '\';
if FileExists(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp') then
ReportControl1.LoadFromFile(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp');
ReportControl1.ReportScale := nPrevScale;
ReportControl1.Enabled:=EE;
LockWindowUpdate(0);
end;
procedure TPreviewForm.But2Click(Sender: TObject);
var
nPrevScale: Integer;
strFileDir: TFileName;
begin
nPrevScale := ReportControl1.ReportScale;
CurrentPage := PageCount;
NextPageBtn.Enabled := False;
but2.Enabled := false;
PrevPageBtn.Enabled := True;
but1.Enabled := True;
PageLabel.Caption := IntToStr(PageCount) + ' 页中的第 ' + IntToStr(CurrentPage) + ' 页 ';
LockWindowUpdate(Handle);
strFileDir := ExtractFileDir(Application.ExeName); // + '\';
if copy(strfiledir, length(strfiledir), 1) <> '\' then strFileDir := strFileDir + '\';
if FileExists(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp') then
ReportControl1.LoadFromFile(strFileDir + 'Temp\' + IntToStr(CurrentPage) + '.tmp');
ReportControl1.ReportScale := nPrevScale;
ReportControl1.Enabled:=EE;
LockWindowUpdate(0);
end;
procedure TPreviewForm.SpeedButton2Click(Sender: TObject);
begin
SpeedButton2.Enabled:=Not TReportRunTime(Owner).CancelPrint;
end;
procedure TPreviewForm.SpeedButton1Click(Sender: TObject);
begin
{ With SaveDialog1 do
Begin
InitialDir := ExtractFilePath(application.ExeName);
FileName := IntToStr(CurrentPage)+'.ept';
If Execute Then
ReportControl1.SaveToFile(SaveDialog1.FileName);
End;}
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -