社区
DataWindow
帖子详情
数据窗口打印问题(dw.print()与printdatawindow()的疑惑)
cooltnt
2002-10-27 05:43:11
1、当用modify改变DataWindow.Print.Copies值时用dw.print()打印时起不了多份打印的作用。
2、用modify改变纸张打印方向时,用printdatawindow打印时,始终打印一个方向,设置不起作用。
本人想要实现类似word的打印设置功能,不知用那个函数打印比较好。谢谢!!
...全文
775
2
打赏
收藏
数据窗口打印问题(dw.print()与printdatawindow()的疑惑)
1、当用modify改变DataWindow.Print.Copies值时用dw.print()打印时起不了多份打印的作用。 2、用modify改变纸张打印方向时,用printdatawindow打印时,始终打印一个方向,设置不起作用。 本人想要实现类似word的打印设置功能,不知用那个函数打印比较好。谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangjun
2002-10-31
打赏
举报
回复
楼上的弟兄厉害,好东西.先收下
ice2water
2002-10-27
打赏
举报
回复
没有一个函数可以实现,我给你一个仿word打印设置的方法,随便给多少分。
PB中一个类Word打印对话框的实现
Powerbuilder数据窗口可用于生成各种复杂的 报表,但如何让用户在使用时控制打印份数、打印范围等信息呢?
我们在开发我局MIS系统时,经过对我局报表打印 需求的分析,提出了如下的功能要求:
1.必须能够控制象打印份数、打印(页码)范围等信息,这是基本的要求。
2.我们系统中装有多台打印机,必须能让用户根据自己需要选择使用哪台打印机,必要时能对所选打印机进行配置。
3.在设计时,对每一个报表需要什么样的纸张,要多大的边距合适,都已确定,所以使用时不需要页面的设置。但由于不同的报表使用不同的纸张,必须在使用时给出提示,以便用有机会换上合适的纸张(或换用合适的打印机)。
根据以上要求,我们设计了如下图所示的对话框。 下面把设计过程以及用到的技术介绍一下。
首先使用窗口画板画出窗口,名字为w_printdlg,窗口类型为respons。“打印机”组框中的“名称”文本控制的名字为st_printname,“设置”按钮的名字为cb_printsetup。“页面范围”组框中的无线按钮组名字分别为rb_pagearrangeall、rb_pagearrangecurrent、rb_pagearrange,单行编辑框名字为sle_pagearrange,其enable属性为false。“副本”组框中的编辑域名字为em_copies。“打印”旁边的下拉列表框名字为ddlb_printwhat,列表有三项,分别为所选页面、偶数页、奇数页。“纸张”组框中的下拉列表框名字为ddlb_paper,列表内容为Poerbuiler定义的43种纸张类型,分别用0-42的数字来表示。“纵向”无线按钮的名字为rb_portrait,“横向”无线按钮的名字为rb_landscape。表示纵向和横向的图片框分别为p_portrait和p_landscape。 命令按钮“确定”和“取消”的名字分别为cb_ok和cb_cancel。
以上工作完成之后,就要着手编写程序。
首先为窗口定义实例变量idw_toprint,类型为datawindow,用于保存要打印的数据窗口。再定义一个窗口事件ue_initcontrols(也可以定义为窗口函数),其程序内容如下:
//eventue_initcontrols()
//设置窗口中各控件的初始值
st_printername.text = idw_toprint.object.
datawindow.printer //当前打印机名字
em_copies.text = "1" //默认打印份数为1
rb_pagearrangeall.checked = true //默认范围为全部页
sle_pagearrange.enabled = false //页面范围编辑框无效
ddlb_printwhat.SelectItem(1) //默认为“所选页面”
//打印方向
integer li_temp
li_temp = integer(idw_toprint.object.datawindow.print.orientation) //取出设计时的方向
if li_temp = 1 then//横向
rb_landscape.checked = true //选中
p_landscape.visible = true //图片显示
p_portrait.visible = false
elseif li_temp = 2 then //纵向
rb_portrait.checked = true
p_portrait.visible = true
p_landscape.visible = false
end if
//纸张类型
li_temp = integer(idw_toprint.object.datawindow.print.Paper.Size) //设计时的纸张类型
ddlb_paper.SelectItem(li_temp+1) //列表框中选中
然后,在窗口的open事件中编写如下脚本:
//openevent
//要使用OpenWithParm()打开,参数中包含要打印的数据窗口。
idw_toprint = message.powerobjectparm
//从参数中取出要打印的数据窗口
this.eventue_initcontrols()//初始化窗口各控件
在无线按钮rb_pagearrangall的clicked事件中编写脚本如下:
sle_pagearrange.enabled = false
在无线按钮rb_pagearrangcurrent的clicked事件中编写脚本如下:
sle_pagearrange.enabled = false
在无线按钮rb_pagearrang的clicked事件中编写脚本如下:
sle_pagearrange.enabled = true//当此无线按钮选中时才可用
在命令按钮cb_printersetup中编写如下脚本:
//cb_printersetup
PrintSetup() //设置打印机
parent.eventue_initcontrols()
在无线按钮rb_portrait的clicked事件中编写如下脚本:
//纵向
p_landscape.visible = false
p_portrait.visible = true//显示纵向图片框
在无线按钮rb_landscape的clicked事件中编写如下脚本:
//横向
p_portrait.visible = false
p_landscape.visible = true
在命令按钮cb_cancel的clicked事件中编写如下脚本
//cb_cancel执行程序
CloseWithReturn(parent,2) //如果选择取消,返回2
在命令按钮cb_ok的clicked事件中编写如下脚本
//cb_ok执行程序
string str_temp
integer li_temp
long ll_row
//打印什么
li_temp = ddlb_printwhat.FindItem(ddlb_printwhat.text,0) - 1
idw_toprint.object.datawindow.print.page.rangeinclude = li_temp
//打印范围
ifrb_pagearrangeall.checkedthen//全部页
str_temp = ""
elseifrb_pagearrangecurrent.checkedthen//当前页
ll_row = idw_toprint.GetRow()
idw_toprint.object.datawindow.print.preview = "Yes"
//设成预览模式
str_temp = idw_toprint.Describe("evaluate('Page()',"+String(ll_row)+")") //计算页码
idw_toprint.object.datawindow.print.preview = "No"
elseif rb_pagearrange.checkedthen //输入范围
str_temp = sle_pagearrange.text
end if
idw_toprint.object.datawindow.print.page.range=str_temp
//副本份数
iflen(em_copies.text)>0then
idw_toprint.object.datawindow.print.copies
=Integer(em_copies.text)
endif
//纸的方向
li_temp=0
if rb_landscape.checked then
li_temp=1
elseif rb_portrait.checked then
li_temp=2
endif
idw_toprint.object.datawindow.print.orientation=li_temp
//纸的尺寸
li_temp= ddlb_paper.FindItem(ddlb_paper.Text,0)
//第li_temp项
idw_toprint.object.datawindow.print.paper.size=li_temp
closewithreturn(parent,1)
几点说明:
1.原点访问语法:程序中多次用到了象datawindowcontrol.object.datawindow.print.attribute 语法,用语控制数据窗口的打印属性。原点访问语法用语代替原来的Discribe和Modify函 数,更符合面向对象的语言习惯。关于print属性的详细信息,请参见Powerbuilder帮助。
2.当前打印页的计算:先用GetRow得到当前行数, 再用Describe和Evaluate函数来计算数据窗口表达式,得出当前页号。注意在计算只前,先把要打印的数据窗口置成预览模式,否则计算出来的是显示页号,和打印页号不一致。
3.窗口内外信息的传递:虽然你可以用全局变量传递信息,但那决不是一个好的注意。使用OpenWithParm函数打开窗口可以向窗口传递一个参数,使用CloseWithReturn函数关闭窗口可以返回一个参数,根据参数的类型,其结果被放在系统全局变量message的相应成员中。如果要传递多个参数,可以把要他们定义为一个结构来传递。
用GRID格式的
数据
窗口
直接作报表
打印
用GRID格式的
数据
窗口
直接作报表
打印
非常方便,但网线移动及标题的
问题
却很另人烦脑
数据
窗口
打印
详解
数据
窗口
打印
详解 PowerBuilder中提供了两种常用的
打印
数据
窗口
的方法,一种是使用函数
pr
int
,使用该函数可以由D
ata
Window
自动维护
打印
作业;另一种是使用函数
Pr
int
D
ata
window
,该函数需要脚本来维护
打印
作业。使用
打印
作业应该首先启动
打印
作业,然后发送
数据
到
打印
机,最后关闭
打印
作业。典型脚本模式如下: Long ll_job Ll_job =
pb更新oracle表格,PB自定义retrieve刷新函数、PB导入excel表、
打印
2013年12月30日//定义一个
打印
工作longjob//打开
打印
设置job=
Pr
int
Open("一份
数据
文档")//指定
打印
数据
窗口
Pr
int
D
ata
Window
(job,
dw
_1)//关闭
打印
工作
Pr
int
Close(job)2013年12月17号//自定义刷新函数ue_refreshstringls_big_codels_big_code=
dw
_2.object.c_name[...
D
ATA
STORE应用
D
ata
Store 实际上就是去掉了显示属性的D
ata
Window
,如果要说其节约资源也许是可能的,,其用处就应该看你的程序中是否能用的到了,如一个
打印
表单,就可以建立表单格式的D
ata
Store 在
打印
按纽中只需给其赋值后,使用
Pr
int
D
ata
window
()即可
打印
,,是不是很方便吧,如果想要看到,只需使用ShareD
ata
(),连接到
数据
窗口
中即可看到,一般通过d
ata
s
linux(centos) golang安装
疑惑
→官网安装教程 照着教程操作完后成功
打印
出go版本信息 go version go1.15.8 linux/amd64 [
疑惑
] 每次重新打开命令
窗口
就无法
打印
出go的版本信息 [原因] 环境变量
问题
(下面的命令只能添加临时环境变量) export PATH=$PATH:/usr/local/go/bin [解决方法] 添加永久环境变量 环境变量设置 在目录 /etc/
pr
ofile.d/ 新建一个 go.sh 文件 写入 export PATH=$PATH:/usr/local/go/bin 新
DataWindow
606
社区成员
20,468
社区内容
发帖
与我相关
我的任务
DataWindow
PowerBuilder DataWindow
复制链接
扫一扫
分享
社区描述
PowerBuilder DataWindow
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章