我在做一系统中有如下需求:
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在运行。以上是我试验的一些方法,请大虾们指点,有无好的方法,大家多说说方法,能指点迷径的,万分感谢,进来讨论的同样感谢!!!!