郁闷,账号密码找不回来了,新申请了一个账号上来发帖。
纠结了2周的问题,还是没有解决。
Delphi用Olecontainer实现word分页显示,由于olecontainer本身的问题,只能显示word的第一页,所以我做了一个分页显示的方案,大致思路就是把word的每一页内容都分别复制出来然后粘贴在一个olecontainer中,然后把所有的这些olecontainer都放在一个scrollbox上。但现在有一个问题:由于是通过对word内容进行复制粘贴的,如果整个word文档有项目编号的话,那么除了第一页的项目编号复制出来是正确的,后面的所有页中的项目编号复制出来再粘贴在olecontainer里时,编号都会发生变化,这是由于word的自动编号导致的。
求高手帮忙解决。或者有更好的分页显示word的方案,也望不吝赐教。

解决方案 »

  1.   

    好像也很难找到其他比较好的方法来实现显示Word内容(关键在于我只要显示,不要Word的那些菜单啊按钮啊什么的,就像在Panel里面显示Word的文字、图片、表格等等一样)。我想把Word里面显示文字的那块抠出来放在我的窗体里,但是也无解。
      

  2.   

    用jquery分页也不错啊  
      

  3.   

    汗,这个我没有接触过。不知道这位大哥有没有详细一点的实现思路?如果可以的话,我现学JQuery业可以啊。
      

  4.   

    考虑过把word文档另存为别的类型的文件,再打开浏览吗?或者说你的项目允许这么做吗?
      

  5.   

    转换成其他类型的文件也可以啊,关键是转换成什么格式才能保证文档原有的格式不变,而且可以很方便的在delphi里查看呢?
      

  6.   

    我是这样帮你实现的:
    1.用word打开test.doc 打印 选择 "Microsoft Office Document Image Writer",生成一个"test.mdi"文件;
    2.Delphi里菜单 Component -> Import ActiveX 加入 "Microsoft Office Document Imaging....." ActiveX控件;(成功后ActiveX选单下面增加了MiDocView组件)
    3.代码如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MODI_TLB, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
            Form1: TForm1;
            mv1: TMiDocView;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
            if mv1.PageNum = mv1.NumPages -1 then
                    exit;
            mv1.PageNum := mv1.PageNum + 1;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
            mv1 := TMiDocView.Create(nil);
            mv1.DocViewMode := miDOCVIEWMODE_SINGLEPAGEVIEW;
            mv1.FitMode := miPRINT_PAGE;
            mv1.FileName := 'd:\test.mdi';
            mv1.Parent := Panel1;
            mv1.Align := alClient;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
            mv1.Destroy;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
            if mv1.PageNum = 0 then
                    exit;
            mv1.PageNum := mv1.PageNum - 1;
    end;end.
      

  7.   

    1.用word打开test.doc 打印 选择 "Microsoft Office Document Image Writer",生成一个"test.mdi"文件;
    这一步怎么实现?我在word里没有找到这个嘛?
      

  8.   

    网上查一下吧,也许是装office的工具的时候带进去的
      

  9.   

    Microsoft Office Document Image Writer这个工具我机器上已经安装了,但是打印界面没有找到这个选项。而且这样的实现方法有一个问题,我不可能让每一个客户都在机器上安装这个呀。