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

📄 ureport.pas

📁 Delphi/BCB 各种版本都支持的Excel 读写控件.一成功应用在N个项目中 .
💻 PAS
字号:
unit UReport;
{$IFDEF LINUX}{$INCLUDE ../../FLXCONFIG.INC}{$ELSE}{$INCLUDE ..\..\FLXCONFIG.INC}{$ENDIF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtnrs, ExtCtrls, ToolWin, ComCtrls, OleCtrls, UFlDemoData,
  ActnList, Activex, UWaitCursor,
  {$IFDEF ConditionalExpressions}{$if CompilerVersion >= 14} variants,{$IFEND}{$ENDIF} //Delphi 6 or above
  {$IFDEF Excel97}Excel97, {$ELSE} Excel2000, {$ENDIF}

  Menus, SHDocVw;

type
  TReport = class(TForm)
    Panel1: TPanel;
    ToolBar: TToolBar;
    ToolButton5: TToolButton;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ActionList1: TActionList;
    ActionPrint: TAction;
    ActionPrintPreview: TAction;
    ActionZoom: TAction;
    ActionClose: TAction;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    WB: TWebBrowser;
    PopZoom: TPopupMenu;
    N501: TMenuItem;
    N1001: TMenuItem;
    N2001: TMenuItem;
    N751: TMenuItem;
    ToolButton2: TToolButton;
    procedure ActionCloseExecute(Sender: TObject);
    procedure ActionPrintPreviewExecute(Sender: TObject);
    procedure ActionPrintExecute(Sender: TObject);
    procedure N501Click(Sender: TObject);
    procedure N1001Click(Sender: TObject);
    procedure N2001Click(Sender: TObject);
    procedure ActionZoomExecute(Sender: TObject);
    procedure N751Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    procedure SetZoom(const Zoom: integer);
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.DFM}

procedure TReport.ActionCloseExecute(Sender: TObject);
begin
  Close;
end;

procedure TReport.ActionPrintPreviewExecute(Sender: TObject);
var
  pvain, pvaout:Olevariant;
  v: IOleCommandTarget;
  WaitCursor: IWaitCursor;
begin
  WaitCursor:=TWaitCursor.Create;
  //Couldnt find a way to implement this for excel files...
   pvain:=null; pvaout:=null;
   v:=WB.Document as IOleCommandTarget;
   try
     if v<>nil then v.exec(nil, OLECMDID_PRINTPREVIEW, 0,pvain,pvaout);
   finally
     v._Release;   //This is not automatically unreleased... dont ask why.
   end; //finally
end;

procedure TReport.ActionPrintExecute(Sender: TObject);
var
  pvain, pvaout:Olevariant;
  v: IOleCommandTarget;
  WaitCursor: IWaitCursor;
begin
  WaitCursor:=TWaitCursor.Create;
   pvain:=null; pvaout:=null;
   v:=WB.Document as IOleCommandTarget;
   try
     if v<>nil then v.exec(nil, OLECMDID_PRINT, 0,pvain,pvaout);
   finally
     v._Release;
   end; //finally
end;

procedure TReport.SetZoom(const Zoom: integer);
var
  v: _Workbook;
begin
  if not Supports(WB.Document, _Workbook, v) then exit;
   try
     if v<>nil then v.Windows[1].Zoom:=Zoom;
   finally
     v._Release;
   end; //finally
end;

procedure TReport.N501Click(Sender: TObject);
begin
  SetZoom(50);
end;

procedure TReport.N1001Click(Sender: TObject);
begin
  SetZoom(100)
end;

procedure TReport.N2001Click(Sender: TObject);
begin
  SetZoom(200);
end;

procedure TReport.ActionZoomExecute(Sender: TObject);
begin
  //Nothing
end;

procedure TReport.N751Click(Sender: TObject);
begin
  SetZoom(75);
end;


procedure TReport.FormShow(Sender: TObject);
var
  v: _workbook;
begin
  ActionZoom.Enabled:=Supports(WB.Document, _Workbook, v);
  if v<>nil then v._Release;
  ActionZoom.Visible:=ActionZoom.Enabled;
end;

end.

⌨️ 快捷键说明

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