Delphi中OleContainer1打开WORD文档时(1.怎么去除工具栏或一直显示)。按钮(2.实现打印预览)和(3.另存为图片格式)
只要回答到点上的朋友高手都有分数谢谢了!

解决方案 »

  1.   

    从以前的大富翁论坛上抄的,至少是10年前的代码了,不知道是否用的上。           自定义快速报表的打印预览窗口 
                           作者:李兴华    Quick Report 中提供的默认打印预览窗口是英文界面的,如果开发的中文软
    件中带有这种英文显示,不免有些小小的缺憾。因此有必要实现中文界面的打印预
    览窗口。但是Delphi提供的源代码中并没有打印预览窗口的.PAS源文件,这就无法
    直接修改源码,只能全部自己编程实现。经多次实践,笔者模仿实现了与默认预览
    窗口外观类似,功能相同的打印预览窗口。步骤如下:     1. 新建一个窗体,设置Name为MyPreview。     2. 在窗体上添加一Toolbar控件,模仿默认预览窗口创建相应的
    Toolbutton,并设置各按钮的Hint提示。     3. 添加一Panel控件,对齐方式置为alBottom。再在此Panel上放一
    ProgressBar(左对齐)和Panel(右对齐),分别显示报表装载进度和其他提示信息。     4. 添加QRPreview控件,对齐方式置为alClient。     5. 添加OpenDialog,设置Filter属性为*.QR;添加SaveDialog,设置
    Filter属性为*.QR|*.TXT|*.HTM|*.CSV,设置DefaultExt属性为*.QR。     6. 双击各个Toolbutton,输入相应代码。     可以按以下方法调用自定义预览窗口。     重载TQuickRep的OnPreview事件,输入如下代码:procedure TRptForm.RptFormPreview(Sender: TObject);
    begin
    with TMyPreview.Create(Application) do
    begin
         QRPreview1.QRPrinter := TQRPrinter(Sender);
         CurRep := self;
    Show;
    end;
    end; 附各成员方法的具体实现:
    unit Myprv;interface
    uses
      Windows, Messages, SysUtils, Classes,
     Graphics, Controls, Forms, Dialogs,
      ComCtrls, ToolWin, qrprntr,Quickrpt,
    StdCtrls, ExtCtrls,qrextra,qrhtml;
    type
      TMyPreview = class(TForm)
        QRPreview1: TQRPreview;
    ToolBar1: TToolBar;
    (其余成员变量和成员方法声明略。)
    private
        { Private declarations }
        FPageCount : integer; // 生成报表的总页数
      public
        { Public declarations }
        CurRep : TQuickRep; // 所预览的报表
    procedure UpdatePanelShow;
      end;
    implementation{$R *.DFM}
    procedure TMyPreview.UpdatePanelShow;
    begin //更新显示
         Panel2.Caption :=
    '第'+inttostr(QRPreview1.PageNumber)+
       '页总'+inttostr(FPageCount)+'页';
    end;
    procedure TMyPreview.ToolButton2Click(Sender: TObject);
    begin //ZoomToFit缩放至全屏
         QRPreview1.ZoomToFit;
    end;
    procedure TMyPreview.ToolButton3Click(Sender: TObject);
    begin //ZoomTo100% 缩放至实际大小
         QRPreview1.Zoom:=100;
    end;
    procedure TMyPreview.ToolButton4Click(Sender: TObject);
    begin //ZoomToWidth 缩放至页宽
        QRPreview1.ZoomToWidth;
    end;
    procedure TMyPreview.ToolButton6Click(Sender: TObject);
    begin //First page
         QRPreview1.PageNumber := 1;
         UpdatePanelShow;
    end;
    procedure TMyPreview.ToolButton8Click(Sender: TObject);
    begin //prior page
         QRPreview1.PageNumber := QRPreview1.PageNumber+1;
         UpdatePanelShow;
    end;
    procedure TMyPreview.ToolButton7Click(Sender: TObject);
    begin //next page
         QRPreview1.PageNumber := QRPreview1.PageNumber-1;
         if QRPreview1.PageNumber =0 then
            QRPreview1.PageNumber:=1;
         UpdatePanelShow;
    end;
    procedure TMyPreview.ToolButton9Click(Sender: TObject);
    begin //Last page
         QRPreview1.PageNumber := FPageCount;
         UpdatePanelShow;
    end;
    procedure TMyPreview.QRPreview1PageAvailable(Sender: TObject;
      PageNum: Integer);
    begin //get pagecount
         FPageCount := PageNum ;
         UpdatePanelShow;
    end;
    procedure TMyPreview.FormClose
    (Sender: TObject; var Action: TCloseAction);
    begin
         CurRep := nil;
         Action := caFree;
    end;
    procedure TMyPreview.ToolButton14Click(Sender: TObject);
    begin //close the window
         Close;
    end;
    procedure TMyPreview.ToolButton11Click(Sender: TObject);
    begin //print setup
         QRPreview1.QRPrinter.PrintSetup;
    end;
    procedure TMyPreview.ToolButton13Click(Sender: TObject);
    begin //print
        QRPreview1.QRPrinter.Print;
    end;
    procedure TMyPreview.ToolButton16Click(Sender: TObject);
    begin //save button
        if SaveDlg1.Execute then
        begin
         if (SaveDlg1.FIlterIndex <>1)and(CurRep = nil)then Exit;
         case SaveDlg1.FilterINdex of
            //--*.QR
         1: QRPreview1.QRPrinter.Save(SaveDlg1.FileName);
            //--*.TXT
         2: CurRep.ExportToFilter
    (TQRAsciiExportFilter.Create(SaveDlg1.FileName));
            //--*.HTM
         3: CurRep.ExportToFilter
    (TQRHTMLExportFilter.Create(SaveDlg1.FileName));
            //--*.CSV
         4: CurRep.ExportToFilter
    (TQRCSVExportFilter.Create(SaveDlg1.FileName));
         end;
        end;
    end;
    procedure TMyPreview.ToolButton17Click(Sender: TObject);
    begin //load button
         if OpenDlg1.Execute then
            QRPreview1.QRPrinter.Load(OpenDlg1.FileName);
    end;
    procedure TMyPreview.QRPreview1
    ProgressUpdate(Sender: TObject;
      Progress: Integer);
    begin //updage progress bar
        ProgressBar1.Position := Progress;
    end;
    procedure TMyPreview.SaveDlg1TypeChange(Sender: TObject);
    begin //set DefaultExt property of Savedialog
         with SaveDlg1 do
         case FilterIndex of
         0: DefaultExt := '.QR';
         1: DefaultExt := '.TXT';
         2: DefaultExt := '.HTM';
         3: DefaultExt := '.CSV';
         end;
    end;
    end.//end of Unit
         以上程序在Windows NT 4.0 中文版(Service Pack 3),Delphi 3.0
    环境下调试通过。
      

  2.   

    自己做打印预览是比较费时间的(个人觉得意义不大)
    和客户,领导沟通下,直接用word自带的打印预览,另存等功能吧。
    总有些人喜欢想些不切实际的所谓“需求”,考验我们这帮苦B的程序猿。