类型:转载 责任编辑:asp 日期:2007/03/01
我在做一系统中有如下需求:
1. 操作人员对rtf档的操作权限分为 修改、打印(修改时可以打印,打印时只能查看,不能修改)
2. 对rtf文档的修改,应有字体、大小、行距等的设置;
3. 修改后的rtf保存有sql server的记录中;
我尝试的方法如下:
一. 修改时在窗体中用dbrichedit控件,直接绑定到sql表,打印时用rave 控件绑定到sql表,可基本实现。但有二个问题1.richedit我没能解决行距的问题(字体、大小都能解决);2.打印时rave有中文不兼容,明明排版时好的打印时会出现乱码(可能是:rave可以自动折行,折行时将一个汉字分在上下二行中,第二行就出现乱码)。第二个问题是致命的,我无法解决。
二. 运用server中的word控件,排版、打印都能解决,也可以解决操作权限(我是这样解决的,修改时调出win word窗体,打印时在后台运行word不显示),但致命问题是,在调出word修改内容后保存不能解决,原因是word是win的窗体,它的菜单条和工具条都它自有的只能以文件保存,不知如何能让它保存时保存到sql中。
三. 这种方法我正在试。方法如下在窗体中加入ole对象(同时在窗体中加入菜单条),ole对象采用数据流从表中提取rtf的内容,修改时使ole对象处于修改状态(这时ole对象的菜单条会加入delphi窗体的菜单中,而且ole的菜单中没有”文件”这一菜单,可自行设计保存过程),保存过程用数据流存入sql中,打印时,我将ole对象的内容写入一临时文件中,再在窗体中加入word控件,调入临时文件打印(word在后台运行,不显示出来)。
但这种方法我没有解决的问题有1.ole对象用数据流从sql提取和写入(我想一定有人会,我没来得及试);2.ole对象在没有激活时没有滚动条,修改状态时有滚动条也有菜单条,有一种状态是中间状态它是激活的,有滚动条没有菜单条,也不能修改,我想窗体一进入就是中间状态,我没有实现。3.因为打印时会内存中会调入word,如果使用频率高就太慢了,而且调试时经常出现不能正常调入word,可能是内存中多个word在运行。
以上是我试验的一些方法,请大虾们指点,有无好的方法,大家多说说方法,能指点迷径的,万分感谢,进来讨论的同样感谢!!!!
推荐阅读