老问题,搜索不到了,:)
所以请教具体代码,感谢……:)
需要把DOC文件显示在程序里,不是在外部打开
显示的格式需要是原来的样子,包括图片什么的,:)
而且不能编辑,如果用IE控件,发现它能编辑,而且出现标尺什么的,如何把他们去掉呢?
还有鼠标菜单,需要使鼠标两个键不能操作这个DOC,就是不能选择,也不能弹出菜单以前见过这个问题,现在搜索不到了,再次请教大家!!感谢

解决方案 »

  1.   

    补充一下:这些DOC文件以前在数据库里存着,有直接读出来的办法更好,:)
      

  2.   

    function OpenWordDocument(const AFileName: String;  //uses Comobj
      AControl: TCustomMemo): Boolean;
    var
      NewDoc: Variant;
      V: OleVariant;
    begin
      try
        try
          V := CreateOleObject('Word.Application');//建立自动化对象
          NewDoc :=V.Documents.Open(AFileName); //打开指定文件
          NewDoc.Content.Copy; //拷贝到剪贴板
          AControl.Lines.Clear;
          AControl.PasteFromClipboard; //粘贴
          NewDoc.Close; //关闭Word文件
        finally
          V.Quit; //释放自动化对象
        end;
        Result := True;
      except
        Result := False;
      end;
    end;
      

  3.   

    to : ljmanage
    AControl是什么,是Memo吗?
      

  4.   

    用server中的worddocument控件吧,这也许可以
      

  5.   

    ‘ljmanage(过客)’说的很好我来顶一下!!!!!
      

  6.   

    如楼上 ljmanage(过客) 所言即可:将doc文件copy到Memo中。
    AControl: Memo
      

  7.   

    用RichText控件,不过要使用RTF格式的文本!
      

  8.   

    编译不过去啊,V := CreateOleObject('Word.Application');//建立自动化对象
    这行提示 :
    [Error] Unit1.pas(36): Undeclared identifier: 'CreateOleObject'
      

  9.   

    谢谢,comobj用了,编译可以通过了,
    但是下面这一行
       NewDoc :=V.Documents.Open(AFileName); 
    提示“此命令无效”
      

  10.   

    你的需要不是很高,  干脆直接用控件吧在Server页下面,  把下面对着过客的改一改就OK了
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Filename:OleVariant;
    begin
      WordApplication1.Connect;
      WordApplication1.Visible:=True;
      Filename:='c:\1.doc';
      WordApplication1.Documents.Open(Filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      with WordDocument1 do begin
        Activate;
        While not ADOTable1.Eof do  // 将adotable1 里的field1和field2的内容写入worddocument
          Range.InsertAfter(ADOTable1['Field1']+';'+ADOTable1['Field2']+'.');
      end;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      WordDocument1.SaveAs;
      WordDocument1.Close;
      WordDocument1.Disconnect;
      WordApplication1.Disconnect;
      WordApplication1.Quit;
    end;
      

  11.   

    SYSTEM页的OleContainer控件装入文件
    OleContainer1.CreateObjectFromFile('d:\a.doc', False);
      

  12.   

    NewDoc :=V.Documents.Open(AFileName); //根据指定的文件名(包含路径)打开一个文件//打开文件的详细情况
    {open document} filename := //文件名,包含路径 confirmconversions := false; readonly := false; addtorecentfiles := false; passworddocument := ''; passwordtemplate := ''; revert := true; writepassworddocument := ''; writepasswordtemplate := ''; format := wdopenformatdocument; wordapplication.documents.open( filename, confirmconversions, readonly, addtorecentfiles, passworddocument, passwordtemplate, revert, writepassworddocument, writepasswordtemplate, format ); 
      

  13.   

    下面一行提示:  “此命令无效”
      WordApplication1.Documents.Open(Filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      

  14.   

    可能是你的office安装有问题
    我给你的那段代码在d6+office2000+win2000下面调试通过的
    Acontrol可以是Memo,或者RichEdit
      

  15.   

    ljmanage(过客) : Memo和RichEdit都无法显示图片呀
    显示的格式也和以前不一样了
      

  16.   

    过客的读取方法是可以的
    但如果你要保持原样,你必需去找个支持字节流的显示控件来,读出来让哪个控件显示
    好象有个控件叫txtextcontrolpro9可以达到要求(它可以支持9种文件格式,包括各类图片)
    你要保持原有文件的样貌,就必须换成字节流(如果存在数据库里,直接读出来就可以了)
      

  17.   

    没找到txtextcontrolpro9
    用其他办法不能把原来格式显示出来吗?
      

  18.   

    RICHTEXT显示的格式差距太大了,
    有没有其他容器,我只想打印的效果一样
    能不能把WORD转成PDF,然后显示呢?
      

  19.   

    ljmanage(过客) ( ) 的办法就很好嘛
      

  20.   

    http://snpack.fykj.com/OtherDownload.htm
      

  21.   

    OleContainer已知存在的重大BUG,导至无法在你的程序中使用它操作OLE对象。
    BUG有:(以操作Word为例)
       1.当使用OLEContainer在你的Form中时,如果你的Form中还有其它可以接收焦点的组件,你运行后点一下该组件,OLEContainer将被屏蔽。无法继续操作。
       2.当使用OLEContainer在你的Form中时,这时开启外部一个Word窗体或进入外部一个Word窗体时,再返回你的Form时,OLEContainer将被屏蔽。无法继续操作。
       你可以自己加个Borland 自带的OLEContainer测试一下是不是有这些问题,当然你可以手动激活,但我想你不会让用户这么操作吧。
    这两个严重BUG将导至我们Delphi,BCB程序员无法使用OLEContainer内嵌Word,现在福音来了你可以使用SnOLEContainer组件来开发了,SnOLEContainer继承于OLEContainer,修复上面二个严重BUG可以让你在程序中正常使用OLEContainer。演示Demo:
    http://snpack.fykj.com/OtherDown/TestOleWord.exe