我WordApplcation直接connect或者CreateoleObject都会打开新的窗口,
而用OleContainer打开word文档的话,会出现菜单和功能按钮,虽然可以通过类似CommandBars['Standard'].Visible:=False;的方法把屏蔽,但是有缺点
(1)这个是要先调用OleC.Doverb(0);显示界面,把工具按钮屏蔽会再用OleC.Doverb(0);刷新界面,会有一个闪烁的过程,对于比较慢的机器还可以在这个过程中看到有功能按钮的界面
(2)如果我的窗体有菜单的话,word的菜单还会和窗体本身的菜单融合
(3)用户可以通过水平滚动条左边的视图切换的按钮调处其他的功能按钮
(4)右键没有屏蔽我现在希望的是在一个容器里面(在程序窗体里面,不能另外打开窗口,我暂时只看到了用OleContainer,虽然有第三方的控件,但是我没有找到可以设置图片和文字环绕格式的,我需要在word文档里面插入图片,并要设置环绕格式)打开word文件,然后用程序提供的按钮完成插入问题、图片、保存等操作,而不出现也最好让用户不能使用word本事的菜单按钮,当然,我的按钮的代码还是调用Word哈我的想法是用OLEContainer作为显示的容器,用WordApplcation操作Word文档,从功能的角度都可以实现,主要问题有:
(1)如何让OLEContainer显示的内容避免上面提到的一些问题
(2)如何在文档里面准确定位插入
(3)对于图片的插入,我现在是 打开文件-》剪贴板-》word,妥否
(4)如何将OLEContainer和WordApplication关联,这点我现在也还不清楚哈往高手指点

解决方案 »

  1.   

    olecontainer不是不能控制word写入文档吗?只是调出文档编辑框而已
      

  2.   

    To jackwonder:OLEContainer可以写入文档啊,只是有些接口没有实现,控制有些限制
      

  3.   

    我是用OLE Container连接的WORD 读取的数据库
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      OleContainerFY1.CreateObjectFromFile('d:\1.doc',false);
      OleContainerFY1.DoVerb(1);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      MS: TMemoryStream;
    begin
      MS := TMemoryStream.Create;
      OleContainerFY1.SaveToStream(MS);
      with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Text := 'SELECT * FROM TABLE1';
        Open;
        Append;
        TBlobField(FieldByName('BL')).LoadFromStream(MS);
        Post;
        Application.MessageBox('succussful','fgyr',mb_ok);
      end;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Text := 'SELECT BL FROM TABLE1';
        Open;
        TBlobField(FieldByName('BL')).SaveToFile('d:\abc.doc');
      end;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      OleContainerFY1.LoadFromFile('d:\abc.doc');
      OleContainerFY1.DoVerb(1);
    end;procedure TForm1.Button5Click(Sender: TObject);
    begin
      OleContainerFY1.SaveToFile('d:\abc.doc');
      OleContainerFY1.DestroyObject;
    end;
      

  4.   

    To:fhuibo,谢谢先,我已经可以载入Doc文档,而且可以隐藏工具条了,但是我想控制Word的功能
      

  5.   

    先指定文挡中插入位置,然后拷贝你剪切版内容就可以解决这个问题。以前做过多个word合并的问题。现在忘记了