修改Dsoframer源码支持D7


1.修改OnDraw函数中的FDrawText或DrawText;
2 为过程FRunningInDesignMode()中的1个变体变量分配内存空间

VARIANT vtUserMode;
//添加下面这句:
memset(&vtUserMode,0,sizeof(VARIANT));
在VC++中重新编译,注册dsoframer.ocx.

3.获取word文档数据流及其与D7变体的数据交换
ovOption:=EmptyParam;
ovFormat:='Rich Text Format';
FramerControl1.ExecOleCommand($7001, ovOption, ovFormat, ovWBinary);
//OLECMDID_GETDATAFORMAT=$7001; 执行OLE命令获取数据流
if VarType(ovWBinary)<>varEmpty then begin
pBuf := VarArrayLock(ovWBinary);
Stream.Size := VarArrayHighBound(ovWBinary, 1)-VarArrayLowBoundovWBinary, 1) + 1;
Stream.Position := 0;
Stream.Write(pBuf^, FS.Size);
VarArrayUnlock(ovWBinary);
WriteWordBinaryToDataBase(Stream);//保存流数据到数据库

向WORD文档中写入流数据关键代码:
GetWordBinaryFromDataBase(Stream);//从数据库读出试题数据流
ovWBinary:=VarArrayCreate([0,msStream.Size-1],varByte);
pBuf := VarArrayLock(ovWBinary);
Stream.Position:=0;
Stream.Read(pBuf^, Stream.Size);
VarArrayUnlock(ovWBinary);
FramerControl1.ExecOleCommand($7002, ovOption, ovFormat, ovWordBinary);
//OLECMDID_SETDATAFORMAT=$7002; 执行OLE命令向Word文档写入试题数据流,呈递试题内容
数据流写入Windows剪贴板
var
pBuf, bufptr: Pointer; hbuf : THandle; nRfetc,nSize:integer;
begin
nRfetc:=RegisterClipboardFormat('Rich Text Format');
GetWordBinaryFromDataBase(Stream); //从数据库读出试题数据流
hbuf := GlobalAlloc(GMEM_MOVEABLE, Stream.size);
if hbuf=0 then begin OutOfMemoryError; exit;end;
bufptr := GlobalLock(hbuf);
try
Stream.Read(bufptr^, Stream.size);//将试题流写入到全局内存
Clipboard.SetAsHandle(nRfetc, hbuf);//将全局内存流放置Windows剪贴板
PasteContentOnWordPaper;//从剪贴板中试题数据粘贴到Word试卷
finally
GlobalUnlock(hbuf);
end;
GlobalFree(hbuf); Stream.Free;
end;

 

转载于:https://www.cnblogs.com/mikemao/archive/2013/05/22/3092791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Word精灵插件:Word增强辅助软件,可以把各种复杂的功能简化成插件的方式显示在状态栏上,比如批注、表格、替换、拆分、数学工具、提取字符、批量命名等工具。工作中使用可以极大的减轻工作量方便快捷。 Word精灵插件 支持32位和64位的Word,支持Word 2007、2010、2013和2016,不支持WORD 2003。同时也支持WPS。 功能介绍: 1、表格最佳宽度:让当前文档中的所有表格自动调整为最佳宽度。 2、导出所有批注:批量导出当前文档中的所有批注到Excel工作表中。 3、导出表格到Excel多表:导出表格时将每一个WORD表格保存在单独的工作表中,即WORD中有多少个表格,则在Excel中生成多少个工作表,逐一存放,同时还生成工作表目录。 4、导出表格到Excel单表:将当前文档中的所有表格导出到Excel工作表中,有多个表格时会按先后顺序在同一个工作表中逐一罗列出来。 5、统一图片尽寸:将指定路径中的所有图片统一分辨率。 6、批量缩放图片:按指定的倍数批量放大图片,或者按指定的百分比批量缩小图片。 7、批量插入图片:批量插入图片到当前文档中,可以选择图片名称的显示方式,以及定义图片的高度。 8、转换图片格式:将指定路径中的所有图片统一转换成相同的格式。 9、批量替换:对当前文档的内容、页眉、页脚执行批量替换,例如将1替换成A,将2替换成B,将3替换成C...... 10、批量导出图片:将当前文档中的所有图片导出到指定的路径下,保存为JPG格式的图片文件。 11、拆分文档:将WORD文件的每一页替换成一个文档,适用于每页之间不存在关联、可以独立成文的文档。例如调查表,文档的每一页有一个表格,拆分后每一个文档都拥有完整独立的内容。 12、多文档批量替换:对多个WORD文档执行替换,包含正文、页眉和页脚。同时还支持多个关键字替换,例如将1替换成A,将2替换成B,将3替换成C...... 13、插入编号:插入编号,包含5种样式。 14、段落缩进:让指定的段落首行缩进俩字符。 15、提取XX后的值:根据指定的位置提取其右方的数值,并保存在剪贴板中,您可以将它复制WORD中或者Excel中去。 16、提取XX前的值:根据指定的位置提取其前方的数值,并保存在剪贴板中,您可以将它复制WORD中或者Excel中去。 17、小数转百分比:将带有小数的值转换成百分比形式,支持批量转换。 18、金额大写:将小写的数值金额转换成人民币大写状态。在表格中时支持批量转换。 19、千分位分隔符:对整数大于3位的数值批量添加千分位分隔符。段落中的值一次只能转一个数值,表格中的值则可以批量转换。 20、计算表达式:将表达式转换成计算结果,支持批量转换。 21、标点统一全角半角:对选区或者全文统一标点符合的全角与半角状态。 22、删除空行:批量删除所有空白行。 23、批量命名文件:对指定路径下的指定类型的文件批量命名,包含在原文件名称的前面插入字符/在后面插入字符,或者替换部分字符,删除部分字符等命名方式。 24、快捷设置:快捷设置自动编号、禁止Internet及网络路径替换为超链接、禁止插入自动创建绘图画布和切换输入模式。 25、快捷搜索与删除:搜索指定的目标,每点一次搜索下一个,也可以删除所有找到的目标。 26、缩放文档内的图片:将当前文档中插入的图片按指定的百分比缩小或者放大,以及还原到原图大小。 27、解除限制编辑:解除WORD自带的“限制编辑”功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值