如何将数据库中图形字段的内容粘贴到打开的WORD文档的光标处(100分)

  • 主题发起人 主题发起人 billxm
  • 开始时间 开始时间
B

billxm

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个数据库有图形字段,通过查询得到一些图形,我可以使用copytoclip将
此图形放入剪贴板中,然后,切换到WORD中,将剪贴板中的图形粘贴到光标处.
请问如何一次完成上述功能,直接将选择的图形粘贴到打开的WORD文档的光标处,需要使用WINDOWS的那些API函数,如何调用,起请给一些实例.
 
要用到ole, 忘olecontainer里发ctrl-v不就可以了么?
 
参考<<delphi4 编程技术内幕》 第16章用delphi 完成word和excel自动化
 
Delphi的Demos有这样的例子。不过我忘记是哪个了。
 
var
word,range:olevariant;
numpara:integer;
begin
word:=createoleobject('word.application');
numpara:=word.documents.item(1).paragraphs.count;
range:=word.documents.item(1).range(word.documents.item(1).paragraphs.
item(numpara).range.end);
range.paste;
end;
//参考<<delphi4 编程技术内幕>>p543-553
 
hubdog的方法应该可以,word.documents.item(1)可以用
word.currentDocement来代替,而且这样只能把图象粘贴在
文档的尾部。如果想自己控制,可以用word.selection.goto(......)
后面的自己查.
 
hubdog 说的是:
delphi4 编程技术内幕 第16章用delphi 完成word和excel自动化
 
呵呵, 机器上不敢装office那种大东东, 宏病毒怕怕:-(
 
我用delphi中的 copytoclipe将图形放入剪贴板,可否用range.paste;将其粘到
WORD的尾部.或者用range.pasteSpecial(,,,,WdpasteOleObject)
 
当然用Ole,我看别人该说的多说了.
 
在《delphi4编程技术内幕》中第16章关于完成word和excel自动化部分p545
procedure TChaxuForm.Button2Click(Sender: TObject);
var
Range:Variant;
numpara:integer;
begin
Clipboard.Assign(Image1.Picture);
//delphi语句是将控件image中的图形粘贴到剪贴板里。
WordApp:=GetActiveOleObject('Word.Basic');
WordApp.Visible:=True;
WordApp.Document.Add;
Range:= WordApp.documents.item(1).Range;
Range.Picture:=Image1.Picture;
//这一句不对,应该如何将图形放入Range中,书中是对文本举例Range.text
WordApp.documents.item(1).paragraphs.Add;
Range.Paste;//提示这句有问题,oleerror
Range.documents.Add.Content.Paste;//提示这句有问题,oleerror
end;?
 
还没结束,添几句.
 
procedure TForm1.Button1Click(Sender: TObject);
var
range,wordapp:olevariant;
numpara:integer;
document:olevariant;
begin
Clipboard.Assign(Image1.Picture);
WordApp:=CreateOleObject('Word.application');
WordApp.Visible:=True;
WordApp.Documents.Add;
numpara:=wordapp.documents.item(1).paragraphs.count;
range:=wordapp.documents.item(1).range(wordapp.documents.item(1).paragraphs.
item(numpara).range.start);
range.paste;
end;
//delphi5 下运行通过
可以把分分了吧。:-)
 
WordApp:=GetActiveOleObject('Word.Basic');//这是对有文字的文档进行添加
WordApp.Visible:=True;
//这一句和下一句运行时出错,“project project2.exe raised exception class EOleError with message 'Method'Visible 'not supported by automation object'.process stopped”

WordApp.Documents.Add;
请问是什么原因?
 
我运行
WordApp:=GetActiveOleObject('Word.Basic');//注意这么写一定是word已经运行了,否则用wordapp:=createoleobject('word.basic');
WordApp.Visible:=True;
WordApp.Documents.Add;
没有问题,
 
WordApp:=GetActiveOleObject('Word.Basic');//这是对有文字的文档进行添加
WordApp.Visible:=True;
//这一句和下一句运行时出错,“project project2.exe raised exception class EOleError
with message 'Method'Visible 'not supported by automation object'.process stopped”
WordApp.Documents.Add;
是在点击Button1Click按钮时,显示以上错误
 
//sorry ,应为getactiveobject('word.application');
//word.basic没有Visible属性当然出错
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,comobj;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
wordapp:olevariant;
begin
WordApp:=GetActiveOleObject('Word.application');//应为word.application,不是word.basic.
WordApp.Visible:=True;
WordApp.Documents.Add;
end;

end.
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部