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

📄 preview.pas

📁 国产的报表控件
💻 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 + -