打印预览
一、打印窗口
(一)、创建结构 s_preview ,具体步骤是:
File -> New -> PB Object -> Structure :
在结构成员名 Variable Name 中输入“dw_name”;
在结构类型 Type 中选择“String”;
以“s_preview”为对象名保存此结构。
(二)、在要被预览的窗口 w_1 中的“打印预览”按钮中写如下代码:
s_preview s_pass //定义一个结构对象实例
s_pass.dw_name="temp.psr" dw_1.Saveas("temp.psr",PSREPORT!,True) //在当前目录下保存为一个文件temp.psr
OpenWithParm(w_preview,s_pass)
窗口的open事件
dw_1.settransobject(sqlca) dw_1.retrieve()
二、w_print 窗口
1窗口的open事件
//接收从窗口w_1中传来的数据窗口数据并显示
s_preview s_accept
s_accept=Message.Powerobjectparm dw_1.Dataobject=s_accept.dw_name dw_1.Settransobject(SQLCA)
//设置初始默认值
dw_1.object.datawindow.print.preview='yes' //预览模式 dw_1.object.datawindow.print.preview.rulers='yes' //标尺 //1
ddlb_paper.text="默认纸张"
dw_1.object.datawindow.print.paper.size=9 //纸张
//2
dw_1.object.datawindow.print.orientation=2 //纵向
//3
dw_1.object.datawindow.print.color=1 //单色
//4
dw_1.object.datawindow.print.margin.top=200 //页边距 dw_1.object.datawindow.print.margin.bottom=200
dw_1.object.datawindow.print.margin.left=200 dw_1.object.datawindow.print.margin.right=200 //5
ddlb_print_pagerange.text="所有页"
dw_1.object.datawindow.print.page.rangeinclude = 0 // 打印范围:所有页
//6
dw_1.object.datawindow.print.Copies=1 //打印份数
2、窗口控件代码
//
(1)、rb_zoom_,按钮:
dw_1.object.datawindow.print.preview.zoom=25 dw_1.object.datawindow.print.preview.zoom=long(this.text) //em_zoom
//
(2)、cbx_ruler
if this.checked=true then
dw_1.object.datawindow.print.preview.rulers='yes' else
dw_1.object.datawindow.print.preview.rulers='no' end if
//
(3)、pb_firstpage等翻页按钮
dw_1.scrolltorow(0)
dw_1.scrollpriorpage()
dw_1.scrollnextpage()
dw_1.scrolltorow(10000000)
//
(4)、ddlb_paper
string str_paper
integer num
str_paper=this.text
if str_paper="默认纸张" then
num=9
else
num=integer(left(str_paper,2))
end if
dw_1.object.datawindow.print.paper.size=num
//
(5)、纸张方向
dw_1.object.datawindow.print.orientation=2 //纵向
dw_1.object.datawindow.print.orientation=1 //横向
//
(6)、色彩
dw_1.object.datawindow.print.color=1 //单色
dw_1.object.datawindow.print.color=2 //彩色
//
(7)、页边距
dw_1.object.datawindow.print.margin.top=long(em_up.text)*100 dw_1.object.datawindow.print.margin.bottom=long(em_down.text)*100
dw_1.object.datawindow.print.margin.left=long(em_left.text)*100
dw_1.object.datawindow.print.margin.right=long(em_right.text)*100
//
(8)、打印范围 ddlb_print_pagerange
choose case this.text
case "所有页"
dw_1.object.datawindow.print.page.rangeinclude = 0
case "奇数页"
dw_1.object.datawindow.print.page.rangeinclude = 1
case "偶数页"
dw_1.object.datawindow.print.page.rangeinclude = 2
case "当前页"
string curpage
curpage=dw_1.describe("evaluate ('page()',"+string(dw_1.getrow())+")")
dw_1.object.datawindow.print.page.range=curpage
//messagebox("",s)
end choose
//
(9)、自定义范围:
//cbx_page_self复选框:
if this.checked=true then
sle_pagerange.enabled=true
ddlb_print_pagerange.enabled=false
else
sle_pagerange.enabled=false
ddlb_print_pagerange.enabled=true
end if
//sle_pagerange文本框:
dw_1.object.DataWindow.Print.Page.Range=this.text
//说明按钮:
messagebox("页码范围设置","~r要打印第1页,输入: 1 ~r~r要打印 5 到 10 页,输入: 5-10 ~r~r要打印 1 , 2 和 5 到 10 页,输入: 1,2,5-10")
//
(10)、打印份数 em_copies
dw_1.object.datawindow.print.Copies=integer(this.text)
//(11)、补足空行 cb_insert_emptyrow
// long ll_pagerow = 25
// //每页打印行数
// long ll_count, ll_row
// ll_count = dw_1.retrieve() //取得现有报表的总行数
// ll_count = ll_pagerow - mod(ll_count, ll_pagerow)
// If ll_count < ll_pagerow Then // for ll_row=1 to ll_count
// dw_1.insertrow(0)
// next
// end if
3、打印按钮:
// 一、打印属性 //
// 1、纸张大小
string str_paper
integer paper_num
str_paper=ddlb_paper.text
if str_paper="默认纸张" then
paper_num=9
else
paper_num=integer(left(str_paper,2)) end if
dw_1.object.datawindow.print.paper.size=paper_num
//2、方向
if rb_portrait.checked=true then
dw_1.object.datawindow.print.orientation=2
else
dw_1.object.datawindow.print.orientation=1
end if
//3、颜色
if rb_siglecolor.checked=true then
dw_1.object.datawindow.print.color=1
else
dw_1.object.datawindow.print.color=2
end if
//4、页边距
dw_1.object.datawindow.print.margin.top=long(em_up.text)*100 dw_1.object.datawindow.print.margin.bottom=long(em_down.text)*100 dw_1.object.datawindow.print.margin.left=long(em_left.text)*100 dw_1.object.datawindow.print.margin.right=long(em_right.text)*100
//5、打印范围
if cbx_page_self.checked=true then
if sle_pagerange.text="" then
messagebox("提示","请输入数据~")
else
dw_1.object.DataWindow.Print.Page.Range=sle_pagerange.text
end if
else
choose case ddlb_print_pagerange.text
case "所有页"
dw_1.object.datawindow.print.page.rangeinclude = 0
case "奇数页"
dw_1.object.datawindow.print.page.rangeinclude = 1
case "偶数页"
dw_1.object.datawindow.print.page.rangeinclude = 2
case "当前页"
string curpage
curpage=dw_1.describe("evaluate ('page()',"+string(dw_1.getrow())+")")
dw_1.object.datawindow.print.page.range=curpage
//messagebox("",s)
end choose
end if
//6、打印份数
dw_1.object.datawindow.print.Copies=integer(em_copies.text)
//dw_1.object.datawindow.print.Filename="tmp.prn" //打印到文件
// 二、打印 //
if messagebox("提示","开始打印吗,",question!,yesno!)=1 then
long printjob
printjob=printopen()
printdatawindow(printjob,dw_1)
printclose(printjob)
end if