以文本方式查看主题

-  蓝色快车PB俱乐部论坛  (http://pb.besoft.com.cnhttp://pb.besoft.com.cn/bbs/index.aspindex.asp)
--  PowerBuilder MIS编程  (http://pb.besoft.com.cnhttp://pb.besoft.com.cn/bbs/index.aspbbs.asp?boardid=1)
----  数据窗口的打印问题?高手请进  (http://pb.besoft.com.cnhttp://pb.besoft.com.cn/bbs/index.aspdispbbs.asp?boardid=1&rootid=3910&id=3935)


--  作者:woodbody
--  发布时间:2006/7/16 8:26:07

--  数据窗口的打印问题?高手请进
在PB中数据窗口的打印是一个较为现实的问题,如果有一个数据窗口A(创建此数据窗口时使用动态语句构建),现想将其进行打印预览并打印输出,应如何写代码。是不是要在预览窗口新建一个数据窗口B,并让A与B进行数据共享,之后利用B进行预览和打印。是不是因为A和B共享会使B保持与A的一致,也就是说当A进行了新的查询后,那么B会自动与A保持一致的查询结果。有没有高手会这样的问题呀。如何进行数据窗口的共享?如何进行打印的控制,比如字体边距等。
--  作者:wwqwcp
--  发布时间:2006/7/23 15:38:27

--  
下面是编写打印预览程序部份代码,可以参考!
powerobject my_object

my_object=message.powerobjectparm
if typeof(my_object)=datawindow! then //传递的是数据窗口对象
datawindow dw_data
dw_data=message.powerobjectparm
dw_print.dataobject = dw_data.dataobject   //对象
dw_data.sharedata(dw_print)  //数据
else
if typeof(my_object)=datastore! then //传递的是数据存储对象
   datastore ds_data
ds_data=create datastore
ds_data=message.powerobjectparm
dw_print.dataobject = ds_data.dataobject   //对象
dw_print.settransobject(sqlca)
dw_print.retrieve()
else
messagebox("错误","传送数据发生异常,停止传输……")
return
end if
end if
//开始我是以剪贴板的形式来传递数据的,后来在Kukoc大侠的帮助下改用共享数据的形式来传递
//效果更好,在此表示感谢!  ^_^
dw_print.object.datawindow.print.preview="yes"
cb_close.enabled=false
cb_next.enabled=false
cb_option.enabled=false
cb_print.enabled=false
cb_prior.enabled=false
cb_rule.enabled=false
sle_scale.enabled=false
vsb_scale.enabled=false
st_page.visible=false
//显示初使信息
open(w_msg)
//人为控制打印方向
if dw_print.object.datawindow.print.orientation="0" then //将默认改为纵向打印
dw_print.object.datawindow.print.orientation="2"
end if
//不可打印
If dw_print.RowCount () = 0 Then
cb_print.Enabled = False
cb_prior.Enabled = False
cb_next.Enabled = False
End If
//以适当的比例显示一页
this.postevent("ue_scale")
this.postevent("ue_setpage")


">