delphi中的一个换行问题,使用WORD的一个错误信息; (100分)

  • 主题发起人 主题发起人 skyherohuang
  • 开始时间 开始时间
S

skyherohuang

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我的一个代码:
var
bmp:tbitmap;
WordApp,WordDoc:OleVariant;
trow,i:integer;
afterrow:olevariant;
begin
try
wordapp:=getactiveoleobject('word.application');//;这边会出错;'
except
try
WordApp:=CreateOleObject('Word.Application');//这边会出错;
except
exit;
end;

end;
WordApp.Visible:=True;
WordDoc:=WordApp.Documents.Add(template:='C:/WINDOWS/Profiles/ks/Application Data/Microsoft/Templates/quotation.dot',NewTemplate := False);
if savedialog1.execute then
wordapp.activedocument.saveas(savedialog1.filename);
i:=1;
table2.First;
while not table2.Eof do
begin
trow := worddoc.tables.item(2).Rows.Count;
afterrow := worddoc.tables.item(2).Rows.last;
worddoc.tables.item(2).Rows.Add(afterrow);
if not table2['photo']<>'' then
begin
bmp:=tbitmap.create;
bmp.Assign(image1.Picture.graphic);
ClipBoard.Assign(bmp);
worddoc.tables.item(2).cell(trow,i).range.paste;
end;
worddoc.tables.item(2).cell(trow, i+1).range.text := table2.fieldbyname('productid').asstring;
worddoc.tables.item(2).cell(trow,i+2).range.text:=table2.fieldbyname('ibox').asstring;

worddoc.tables.item(2).cell(trow,i+2).range.insertafter(#13);>
worddoc.tables.item(2).cell(trow,i+2).range.text:='acbd';
在这当中表格第二例中不能产生两行('ibox'的值与'ABCD),只有'ABCD',我发现(#13 )在cell中换不了行各位有什么看法??
table2.next;

end;
end;
原来的输出结果是
productid: ibox/abcd
ibox1
1
abcd
-------------------------
2 ibox2
abcd
现结果输出:
productid, ibox/abcd
1 abcd
-------------------------
2 abcd
 
推一下。
 
to:xzh2000
"推一下"是什么意思??
 
我想推一下就是up吧!
我觉得应该是这个错误
table2['photo'],不能用,应该将'photo'改成整数,即应该是table[1]这种格式
 
不太懂,
把#13换成#13#10看看
 
MSWord.Insert('Hello,Word:'#13);
 
第一个出错的原因是因为delphi的编译环境提供了自我保护功能,你需要已经启动一个word
对象后,才可以用Try...except结构,第二个出错的原因,看看是不是没有uses一些相关的单元
 
为什么不用Word.Selection.TypeParagraph来换行??
 
to 叶:我要实现的是,table里的cell内的换行,而不是整个word换行,
 
你可以这样办:
先将需要换行的地方用一个自定义的字符串来代替
操作完成后,再用该字符串替换成“^l”就成了。
----“^l”在WORD中表示人工换行
 
worddoc.tables.item(2).cell(trow,i+2).range.text:='acbd';
这句应改为
worddoc.tables.item(2).cell(trow,i+2).range.insertafter('acbd');

第一个错误在delphi环境中会出现,但这是delphi自我保护,编绎好后的程序不会出错,
第二个错误我没出现,可能你没安装word.
我用的是delphi7.0。
 
后退
顶部