大家帮忙分析分析,NND,今天见鬼了,有关OLE WORD(100分)

  • 主题发起人 主题发起人 kmask
  • 开始时间 开始时间
K

kmask

Unregistered / Unconfirmed
GUEST, unregistred user!

我用ole方式调用WORD,在某个表格内追加指定的行数
...
wapp:olevariant;
...
begin
wapp:=createoleobject('word.application');

...


就下面这个过程,完成追加行的任务。

见鬼了,我调用word的过程中如果wapp.visible:=false下面这个过程就会出错
如果wapp.visible:=true;就一切OK.怎么回事??? 帮忙分析分析

procedure tfrmsalelist.appendrows(tblindex:integer;rows:integer);
var
curtbl:olevariant;
begin
curtbl:=wdoc.tables.item(tblindex);
curtbl.select;
wapp.selection.insertrowsbelow(rows);
end;
 
当然要
wapp.visible=true;
否则你也没法对WORD操作,你也无法得到word的ActiveDocument对象
 
不会吧,我屏蔽掉以上的那个过程,其他针对DOCUMENT的操作都正常啊,包括建表格,替换,
书写……
 
屏蔽掉以上的那个过程之后,你可以得到Word,但是所进行的操作都是在后台进行。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=558671
看看有用没有。
 
还有其他见解么?
 
没问题呀。一下是实验全部源程序。
uses comobj;
var
Word_Handle, Doc_Handle: OleVariant;

procedure TForm1.Button1Click(Sender: TObject);
var
Tmp_Int: Integer;
begin

try
Word_Handle := GetActiveOleObject('Word.Application');
except
try
Word_Handle := CreateOleObject('Word.Application');
except
end;
end;
// Word_Handle.Visible := True;
Doc_Handle := word_Handle.Documents.open(FileName := 'C:/1.doc', ReadOnly := False, AddToRecentFiles := False);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
curtbl: olevariant;
begin
curtbl := Doc_Handle.tables.item(1);
curtbl.select;
Word_Handle.selection.insertrowsbelow(1);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Word_Handle.Visible := True;
end;
 
我曾经试过让word的visible=false,然后进行打印操作,但是发生了错误
 
对此问题,我还有一点补充。
是在一个for循环里面调用appendarow过程。
第一次执行时正确,以后就不行了。

而且,当wapp.visible:=true时,全部正常,即使循环100次。
我想知道错在哪里。为什么。

请各位继续讨论。
 
报告什么错
 
你可以不追加行,用拆分行来做。把一行拆成n行

我觉得错误可能是因为在不可见的状态下Selection无法定位,
我记得好象ActiveWindow中才有Selection的。
 
对啦,就是WORD不可见,定位无效的问题

有劳各位
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
542
import
I
I
回复
0
查看
697
import
I
后退
顶部