全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1316
推到 Plurk!
推到 Facebook!

嵌入word的对象的实现

尚未結案
wxss2004
一般會員


發表:14
回覆:4
積分:3
註冊:2004-07-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-28 13:02:21 IP:221.216.xxx.xxx 未訂閱
各位大哥: 我在K.top一直想和各位高手请教一些关于用delphi 实现ActiveX Document Server的问题。问题的提出是源于这样一个需求。我做了一个 类似图形编辑的软体,用自己的程序生成自己定义的文件格式。但用户提出,需要将编辑好的东西嵌入到word文档里。我见到类似的软件实现 了这个功能(如公式编辑器):它们在word里注册了一个可插入的对象,当我们新插入一个自己的对象,双击这个对象的时候,就可以回到我 自己的软体里来编辑这个对象。编辑完成,退出程序,word里的对象也更新了。 我在网上找了很久,也请教了很多高手,但似乎用delphi难以实现这样的功能。甚至连如何注册成一个可插入的对象都让我难以下手。后 来我发现borland新闻组里有人介绍一篇1999年的文章介绍过这类的实现,还有源码(http://www.thedelphimagazine.com/disks/dmag43.zip ,http://www.thedelphimagazine.com/disks/dmag42.zip, 在comcorn目录里)。该程序建立了一个Tmemo类型的可插入对象,并成功地实现 了注册成一个可插入的对象。我把Tmemo类型换成其他类型如TButton,Tpanel都可以, 但有几个问题似乎是还没有解决: 1.双击word里的这个对象,不能回到自己的软体进行编辑。更谈不上如何将编辑后的结果再更新到word里了。(老外的这个程式里提供了一些 思路,即重载SaveToStream(const Stream: IStream);和LoadFromStream(const Stream: IStream);来传递对象的信息,但似乎没起作用), 各位老大,这些地方该如何改进呢? 2。老外的程序的这个TActiveXDocument对象是从TActiveXControl继承来的,在word里点击它似乎无法获得焦点,反复几次后就出错了。 是不是选择从TActiveXControl继承本身就是错的?应该从哪个对象继承呢?TActiveFormControl? 3。我所见过的可以实现上述需求的软体(如公式编辑器)是这样操作的,在word里单击对象,则选中,双击对象则调出程式主界面,开始编辑 ,存盘后退出,更新word里的对象显示。这个在程序里,我想是要重载DOverb方法来实现吧,但我一直没有成功。:(,怎么样能找到并响应这 个双击事件呢? 也许,关注这个问题的朋友会在http://www.evocorp.com/Delphi/ADDActiveDocuments.htm里找到另外的线索,我比较了它和comcorn的区别, 很明显的是,他们之间有很类似的地方(作者在2004年才做的更新),而且,它没有demo,根据它提示的方法,我花了9牛2虎的力气建立了一 个sample,但效果和dmag42.zip,comcorn有同样的问题。 我自己写的demo,基本上是沿袭了dmag42.zip的框架(想要的大哥说一声,email给您),注意,不要用它给的AxCtrls.pas(delphi自己有), 在uses里要加入Variants,omgw.[1] := 1;改成omgw.width[1] := 1;就可以编译成功了。运行一次程序,在word里,你就会发现,在插入-- 对象里有一项“delphi activex Document object”了。 这个问题很有挑战性,我研究了很久,但始终不得要领,希望各位大哥齐心协力,能在此基础上有所突破,让小弟寝食能安。 这真是一个难于归类的问题,但希望其他版的版主也能关注,尝试一下如何解决这个问题,小弟不甚感激。 我们经过的日子都在你震怒之下;我们度尽的年岁好像一声叹息。我们一生的年日是七十岁,若是强壮可到八十岁;但其中所矜夸的不过是劳苦愁烦,转眼成空,我们便如飞而去。
系統時間:2024-07-01 5:45:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!