如何在FORM里无缝嵌入WORD(100分)

  • 主题发起人 主题发起人 Yuanqi
  • 开始时间 开始时间
Y

Yuanqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用OLE打开一个WORD文档,但不想新开一个WORD窗口,而是把这个窗口嵌在FORM里,就象我们平时在IE5里打开EMAIL附件里WORD文档那样。
 
很简单,直接使用OLE自动化就可以了,WORD窗口不会弹出来(你自己可以控制)
在那本<Delphi编程内幕>上有详细的说明
 
如果把word粘在ole容器中,当然有word的界面,
使用ole自动化,你的界面就可以随意设计,你可以在窗体中放一个Tmemo
和word之间传送文档。
if VarType(wordbasicobject)<>varDispatch then
wordbasicobject:=CreateObject('word.basic');
wordbasicObject.filenew;
for i:=0 to memo1.lines.count-1 do
wordbasicobject.insert(memo1.lines);
这段代码来自《delphi3开发使用手册》,我也正在学 :)
 
直接用OleContainer吧。
 
同意menxin的说法,使用OleContainer,
DoVerb(0)<<---这样可以实现内嵌,不会弹出一个WORD窗口

procedure TfmMain.btn_EditClick(Sender: TObject);
begin
OleDDMLP.DoVerb(0); //Excel Word
ExcelVar:=GetActiveOleObject('Excel.Application');//ExcelVar:=OleDDMLP.OleObject.Application ;
if Not IsMaxState then Begin
if ExcelVar.ActiveWindow.WindowState <> xlMaximized then
IsMaxState:=True ;
try
//Showmessage(IntToStr(ExcelVar.ActiveWindow.WindowState));
ExcelVar.ActiveWindow.WindowState := xlMaximized ;
except
IsMaxState:=False ;
end;
End;
end;

 
我的方法最简单!用WebBrowser。
var
TargetFrameName,PostData,Heads,Flags : OleVariant;
begin
TargetFrameName := '';
PostData := false;
Heads := '';
Flags := 0;
WebBrowser1.navigate('d:/test.doc', Flags, TargetFrameName, PostData, Heads);

绝对无缝嵌入!
 
多人接受答案了。
 
后退
顶部