请求讲解

yuanqi007 2004-09-01 12:28:13
小弟按照PB的实例教程写了一段代码,其功能为:将数据窗口里的数据导入WROD中,有几个语句不是很明白,请求大家讲解。
建立了OLE对象:ole_object

constant long wdtablebehavior = 1
constant long wdautofitfixed = 0
constant long wdcell = 10
//请问,上面的3行语句都是对什么设置? constant 是什么?什么意思呢?

ole_object.selection.moveright(wdcell)
//上面的语句是什么意思呢?执行后有什么结果呢?selection是什么?能详细讲解下它的用法吗?

谢谢各位先啊,麻烦大家了
...全文
84 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
th820901 2004-09-01
  • 打赏
  • 举报
回复
轉:寫的很詳細,希望對你有幫助

http://search.csdn.net/Expert/topic/1362/1362178.xml?temp=.9982874

回复人: superneo(小菜一碟) ( ) 信誉:95 2003-01-16 09:54:26Z 得分:50



superneo 收藏的经典代码 3

通过ole技术,将datawindow(grid形式)的数据输出到word文档的思路

1 选择word文档的保存路径和名称。
integer li_rtn,i,j,m
string docname,named

li_rtn = GetFileSaveName("Select File", docname, named, "DOC", " Doc Files (*.DOC), *.DOC")

IF li_rtn = 1 THEN
//2 创建ole实例,并连接到word服务
//3 得到dw_1的行数和列数,还有列名
//4 创建word文档和表
//5 输出表的标题
//6 输出表的数据
//7 保存文档和销毁ole实例
End if

2 创建ole实例,并连接到word服务。
oleobject ole_object
ole_object=create oleobject
integer li_ret
li_ret=ole_object.connecttoobject("","word.application")
if li_ret <> 0 then
li_ret=ole_object.connecttonewobject("word.application")
if li_ret <> 0 then
messagebox("ole 错误","ole无法连接! 错误号: " + string(li_ret))
return 0
end if
ole_object.visible= true
end if

3 得到dw_1的行数和列数,还有列名。(这里假设没有计算列)
long ll_colnum,ll_rownum
string ls_colname[]
ll_colnum = Long(dw_1.object.datawindow.column.count)
ll_rownum = dw_1.rowcount()
for i = 1 to ll_colnum //得到数据列的名
dw_1.scrolltorow(1)
dw_1.setcolumn(i)
ls_colname[i]=trim(dw_1.GetColumnName())
next

4 创建word文档和表(表的行数和列数由步骤3得到)
ole_object.Documents.Add() //新建word文件
ole_object.ActiveDocument.tables.add(ole_object.selection.range,ll_rownum,ll_colnum) //新建word文件的表

5 输出表的标题
dw_1.setredraw(false)
string ls_title
for i = 1 to ll_colnum //输出标题
ls_title=dw_1.describe(ls_colname[i] + "_t" + ".text")
ole_object.Selection.TypeText(ls_title)
for m = 1 to f_cncharnum(ls_title)
ole_object.Selection.TypeBackspace()
next
ole_object.selection.moveright(12)
next

6 输出表的数据
string ls_value
for i = 1 to ll_rownum //输出数据到word文件
//ole_object.Selection.Font.Size = 15 //字体大小:小三
for j = 1 to ll_colnum
dw_1.scrolltorow(i)
dw_1.setcolumn(j)
ls_value = trim(dw_1.gettext())
ole_object.Selection.TypeText(ls_value)
for m = 1 to f_cncharnum(ls_value) //取出字符串中的中文个数
ole_object.Selection.TypeBackspace()
next
//ole_object.Selection.TypeParagraph //加一回车
ole_object.selection.moveright(12) //跳到下一格
next
next

w_1.setredraw(true)

7 保存文档和销毁ole实例
ole_object.ActiveDocument.SaveAs(docname, 0,false,"",True,"",False,False,False, False,False)
ole_object.disconnectobject()
destroy ole_object

8 完整代码
integer li_rtn,i,j,m
string docname,named

li_rtn = GetFileSaveName("Select File", docname, named, "DOC", " Doc Files (*.DOC), *.DOC")

IF li_rtn = 1 THEN

//2 创建ole实例,并连接到word服务
oleobject ole_object
ole_object=create oleobject
integer li_ret
li_ret=ole_object.connecttoobject("","word.application")
if li_ret <> 0 then
li_ret=ole_object.connecttonewobject("word.application")
if li_ret <> 0 then
messagebox("ole 错误","ole无法连接! 错误号: " + string(li_ret))
return 0
end if
ole_object.visible= true
end if

//3 得到dw_1的行数和列数,还有列名
long ll_colnum,ll_rownum
string ls_colname[]
ll_colnum = Long(dw_1.object.datawindow.column.count)
ll_rownum = dw_1.rowcount()
for i = 1 to ll_colnum //得到数据列的名
dw_1.scrolltorow(1)
dw_1.setcolumn(i)
ls_colname[i]=trim(dw_1.GetColumnName())
next

//4 创建word文档和表
ole_object.Documents.Add() //新建word文件
ole_object.ActiveDocument.tables.add(ole_object.selection.range,ll_rownum,ll_colnum) //新建word文件的表

//5 输出表的标题
dw_1.setredraw(false)
string ls_title
for i = 1 to ll_colnum //输出标题
ls_title=dw_1.describe(ls_colname[i] + "_t" + ".text")
ole_object.Selection.TypeText(ls_title)
for m = 1 to f_cncharnum(ls_title)
ole_object.Selection.TypeBackspace()
next
ole_object.selection.moveright(12)
next

//6 输出表的数据
string ls_value
for i = 1 to ll_rownum //输出数据到word文件
for j = 1 to ll_colnum
dw_1.scrolltorow(i)
dw_1.setcolumn(j)
ls_value = trim(dw_1.gettext())
ole_object.Selection.TypeText(ls_value)
for m = 1 to f_cncharnum(ls_value) //取出字符串中的中文个数
ole_object.Selection.TypeBackspace()
next
//ole_object.Selection.TypeParagraph //加一回车
ole_object.selection.moveright(12) //跳到下一格
next
next
dw_1.setredraw(true)

//7 保存文档和销毁ole实例
ole_object.ActiveDocument.SaveAs(docname, 0,false,"",True,"",False,False,False, False,False)
ole_object.disconnectobject()
destroy ole_object

End if


sywen 2004-09-01
  • 打赏
  • 举报
回复
constant 為常量的關鍵詞
constant long wdtablebehavior = 1
constant long wdautofitfixed = 0
constant long wdcell = 10
就是把=號後面的值賦給定義的常量。

Selection 对象代表窗体中的选定内容,每个窗体中只能有一个Selection 对象,而且只能激活一个 Selection 对象。
th820901 2004-09-01
  • 打赏
  • 举报
回复
1.說明三個常量,constant 是關鍵字,說明常量時照樣書寫就是

zysys 2004-09-01
  • 打赏
  • 举报
回复
1.定义常量,程序在任何地方使用wdtablebehavior,wdautofitfixed,wdcell 值为1,0,10

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧