2024年5月6日发(作者:)
维普资讯
第22卷第2期
2002年2月
文章编号:1001—9081(2002)2一(;093—02
计算机应用
Computer Appficafions
Ⅵ22.No.2
Feb.,2002
PowerBuilder数据窗口打印控制技术及通用打印模块的设计
黄洪
(浙江工业大学经贸管理学院管理科学与I程学科,浙江杭州310014)
摘要:文中介绍使用PowerBuilder开发信息系统时数据窗口的打印控制技术,包括打印预览、部
分打印、缩放打印、边界设置等,并给出了一个具有实用价值的可以挂接任何数据窗口的通用打印模
块设计实倒。
关键词:PowerBuilder;打印;数据窗 ;通用程序设计
中图分类号:3tB91.41 文献标识码:A
值为整型
1 引言
PB是目前开发信息系统的重要工具,其独有的数据窗El
技术使得对数据库数据的操纵和显示等相关程序的设计变得
非常方便。使用数据窗El,不仅可以查询显示数据,而且可以
通过使用 nt()和prlntdatawindow()函数方便地实现数据窗12
的打印。但信息系统的用户对打印常常需要实行更复杂灵活
的控制,如在打印之前进行预览、选择部分页面打印、改变纸
D uH蹦£
字符串
文档名称
Du e:c:打印方向
值为整型:J鲑省岛m (…):2水平;3垂直
n盼 :底部更面边界的宽度
值为整型
西n.L :页面边界的宽度
值为整型
M 目n.I{j 页面边界的宽度
值为整型
M峨 n 1砷:页面边界的宽度
张大小进行缩放打印、设置打印边界,等等。要象Word等字
处理软件一样允许用户设置各种打印选项, 实现上述对数
据窗口打印的完全控制,则必须了解数据窗口的打印属性并
进行较复杂的编程。本文将详细舟绍数据窗口打印的相关技
值为整型
∞ m:打印方向
术,并给出一个通用的数据窗口打印程序的设计方法。
值为整型0使用打印机的毓省设置 I横向:2纵向
,
2数据窗口的打印控制技术
对于数据窗口的打印控制,主要是通过设置数据窗口
R 打印的页面范泪
值为字符串,页_面数字用逗母分开。形如 1,2,5—1 。若为空
则打印所有页
print属性下的相关属牲来实现。获取和设置数据窗El的打印
届l生通常使用两种方法:点标记方法和数据窗El函数。其相
应的语法形式如下:
一
I ̄nge[ndude:指定打印页
值为整型 进一步指定要打印I-进范围中的哪些页:0打日I全
都页,l打印偶数更;2}丁印奇数页
Paper.Size打印纸张太小
点标记语法
ob 。c£D出W m .P m properet'
获取属牲值:
Ve ̄nb/e=d c曲酬
值为整型:O采用打印机的缺省设置:1到41舒剐对应不同太
小的标准纸张
设置属性值:
d ̄'-eontrd.Obj ̄t.1)nlaWin& ̄'Print property=
-
Pte ̄4ew:是否采用打印预览方式先时数据宦口
Yes采用:No不采用
Preview Rule ̄:在预览方式下是否显示标尺
Yes显示标尺 N0不娃示f缺省1
Preview zlx邢:预览时的显示比例
使用函数
k r DataWir ̄-Pnm),top=me)
获取属性值:
Va ̄ab]e=dve_mntm/D
值为整型,表示百舟比 缺省为100%
设置属性值:
dw—cl圳 .M 曲P HwLnd Print} 竹:value 1
若要将数据窗口进行缩放打印则还要用到下面一个属
性,该属性为数据窗El对象的缩放比例,值为整型,表示百分
比,缺省为100%。该属性的点标记形式为:
dw-contrd obj ̄t.DataWindow.Zoom,在函数中使用则取
DataWindow z0o
其中参数 一c0【|tm1是数据窗口控件名,property是打印
属性名,v ue是赋给属性的值。常用的打印属性及其取值如
下:
Color:确定是舌彩色打印
值为接型1彩色打印;2单色打印
c eH打印份数
收稿日期:2001—08—17
3通用打印程序的设计
通用数据窗口打印程序的设计思路是将皱打印的数据窗
作者简介:黄洪,副教授,主要研究方向:数据库系坑、管理信息系统、决策支持系统、电子商务
维普资讯
计算机应用
口(源数据窗口)复制到通用打印窗口的数据窗口(目标数据
窗口)中,通过对目标数据窗口的控制实现对源数据窗口的打
 ̄X)02阜
接受用户对打印内容的选取,并返回用户的选择结果 “打印
内容设置”按钮调用该窗口,并根据返回的值完成打印内容的
设置。
印控制。其具体实现方法如下(限于篇幅,仅给出关键部分的
脚本代码):
3 1通用打印窗口及其初始化
建立通用打印窗口w--print,其上包括一个目标数据窗口
控件 一print,以及对该数据窗口控件进行控制的若干命令
图2
按钮等如图1所示(为节省篇幅对数据窗口进行了压缩)。
图1
首先定义以下实例变量:
dat啪ndow dw…:
intege ̄1 p“nL rT e=I.ii-prl 。0p I,
ikpagecount.iLrange--incl ̄le=0
ng{ pnnLrange=~0;
在该窗口打开时,完成从源数据窗口到目标数据窗口的
复制,并进行相关初始设置。窗口打开事件的脚本如下:
blab lblh-d ̄statusidw-seurce=me a f)州 e pa肺
//按取赦打印的数据窗口对象(源数据窗口)
//根据瓿取的数据窗口对象柏语法,在数据窗口控{牛
d u兀m巾动态创建目标数据宙l l对象
dw_print creme(id e de l)ef”data ̄ndow syntax"1
//获取泺数据窗口的完整状忠,并以之设置d pnnt中的目标数
据窗口对象}l勺状态
ldw—getfullstate(1bLdwstatus)
nt sefullstat ̄(1 d ̄-ztatus)
//根据操数据窗口的排序规则对目标数据窗口进行排序,并重新
计算分组数据
面m.sort()
dw_ptint 州 p c()
/,将目标数据窗口设置成打印欲览方式井显示标j己
dw-ptint.modify(“datawindow.prim p ̄'iew datat ̄ndow.print.
口r …【… )
I埘ev哪 L SlInwpa ()//触发用户定义事件,获得并显示页码
this.title=dw_prim d ̄be(’data ̄ndow.v,in【d0cu口 一)
//显示打印数据窗口文档的名
ern- ̄sle曲n=r100% //显示缩放打印的初始比例
dmⅨ ∞k【em= 100%’
/,显示打印预览的初始显示比例
if dw_pfint.RowCotmt()=0 Then
//投有数据,使得个打印设置按钮无效
cb—pd咄Ea ̄led=F
eb-set ̄r Enabled=蹦
ch Ⅱ【.ETⅢ ed=F 吕e
ch-last Enabled=F e
eh-…Fambled=f
eh-n哪Enab[耐=False
mdif
3 2数据窗口打印内窖的选取
建立一个reporase型窗1:3 w_wlmt_ta.-ptlrtt如图2,该窗1:3
本窗口的 确定 命令按钮的脚本如下:
String lB—Tt
if ii-pdnLnrode=1 th帆
一
nLr =。0,
endif
lffi—pdn ̄mode=2 11lcn
{s—p玎nL硼 8l p且gLra 1 m
Ifis_pfinLt'ang ̄= Or kNu¨(L pdnL T )’Fhm
¨_I nLmde=1
L Drin ̄range= 0
Et1tj
E
L1一pnn ̄mpies=ln ( n~∞py m)
IL咖=S ̄ing(ii—pfint-copies)+ * +stxing(ii—r ̄nge-include)
+ * 十&S (iLpnnL 1+ ”+ 一 L
C[ ̄WithRetura(Parent,】LT【l1 J
“打印内容设置”命令按钮的脚本如下:
stirng IL p ,】
inte ̄r li-6 .1i—seco ̄
】0 g lEon'redraw
0perI( 一 诅L n—p nt)
Message.Dt ̄lePann=一1 rl ̄en
I"U ̄IIm 0
£r】dⅡ
/,从返回的字符串中析出要设置的参数
ts-mpann=Message SCdn 盯m
lL6 =P昭(1 |etp n. *”,1)
ikllnnt-copim=Integer(Mid(1s_ ̄.1 1L6 一lJ)
】L—nd=Pos(】L憎p 瑚, * .h_ r8E十1)
ii-range-include=integer(Midns— par【『1.IL 【十I.[i-seeocxt
一
1L-6商一11)
ILfirst=Iksecocxt
ti_secmd=P ̄(1s-re,pann. * .1L 十1)
ikpfint-mode=iate ̄r c!v[td(】LⅡmmn.[i-first+I,1k ̄nd一
】L6 一1"
{s—pnnLr Mid([s-re,pann,I1 d+l,Len(IL p明n)
一
ti_sectmd)
dw_pfim a,jec【.DalaWit ̄"Print c叩i =【Lp nLc叩 髑
//设置打印份戥
Choose Case ik Tn—n ode //设置打印范围
Case1 ,,打印生都
dw-ptlnt Object l ̄mWindow.Print.P }Range=
Case 2 //?E尉打印
dw print,Object D {nd㈣Pdnt Page.R岫 =LL
P n ̄r/mge
(下转第96页)
维普资讯
计算机应用
在取消紧急通行后,方可恢复正常通行,反之亦然。
利用VB6.0作为开发工具,在Windows98环境下,实现了
lal ̄ll7.LinkPoke
2OO2丘
上位机与Pig之间的串行通信,成功地在交通信号灯控制系
统中进行了实验。部分通信程序如下:
定义公用变量;
Publicflag,flgln AsInteger
l", ̄bhc n sL
h Ⅱ
下面是黄灯亮的控制程序
Ifn(=4 Then
Shape2 FillCol0r=&tWFFF&
S}la FillCol_1r=&HH1下F&
Shapel FillCdor=&H0&
Ska ̄3 FiIlCdor=&嗽
下面是南北紧急通行控制程序:
ne Sub Commm ̄l_ClJekf
日mDe4 FillCcam-=&HOg,
Sk .FillCd ̄=&H0&
丌i =I
Hag I
[abeD.C叨 帅= ,’
If =I T11m
[abe17.1jnkMcde=2
[abe17 IinkP&e
End
Skmpe6.E1]Col ̄=&H
Sh瞄.FillCd ̄=&I-WF0 ̄
ShaDe1.Fil1Color=&肿&
EndIf
5结束语
随着PLC应用的日益普及,对PLC的监控和管理显得非
常必要。在PLC与上位机的实时通信中,上位机通过通信程
序对PLC进行读写操作,而Pig无需做复杂的编程,通过通
End Sub
下面是取消紧急通行的程序:
蹦 Sob Cmmand4一C1 ck c'
LInlo ̄dMe
Ttre ̄l Fmalaled=Fdge
l"ur ̄l E,udaled=Fak ̄e
Fad
信模块和简单的设置即可响应上位机的命令。
本文所述的通信程序已成功地用于上述的控制系统中。
通过该通信软件,利用C ̄ZNBUS的性能和特点,对一定距离内
的交通干道上的各个十字路1:3的交通状况进行监视和控制,
完成“点控制”向“线控制”的跨越。同时本程序实现了上位机
下面是南北通行绿灯亮东西红灯亮的控制程序
lf n>14 7md n<=20 T11肌
Shape6.nI1Cd_1r=&Hf
Sh ̄_3 阳1Cd_1r=越
Sh ̄oe1.FfllCo]or=&H0&
Sha ̄2.FiIICo]or=&}l0&
sII印e5 FillColor=&m&
Sty,4 FiIIC oF=&} &
Lal ̄13 CⅡDd0n=
&
与PLC之间的通信,不仅适用于交通管理,对于建筑管理、消
防管理和楼宇自动化皆有一定的借鉴意义。
参考文献
I1】邬宽明.c 总线原理和应用系统设计【M】.北京:北京航空航
天大学出版社,1996.
【2】阳宪惠现场总绒技术及其应用【M】北京:清华大学出版社.
1999
Label3.LinkMode=2
(上接第 页)
c心 3
]l-c ̄rrenn'ow= —pfint
1L Te【1忡
()
I dⅡ
//当前页
=dv_Frint.d ̄fibe( evaluate( page(1 . +stirng
Ⅱli_scale(10
T Text= 1O%
IL-scale=10
EndIf
{】LcuT眦1廿0w)+ ) )
iflea(k_emTentpnge)>0 1hen
dw-wnt modify( DataWi.dow.Zoom= +St:rlng(Integer(1i_scale}”
3.4打印机、打印纸等的选择及打印边界的设置
+1 d
㈣
if
End凸0㈣
nt.岫( datawlndow print page range=
在打印机设置命令按钮的单击事件脚车中,调用
ntSc.tup()函数即可实现打印机的选择,打印纸的选择,打印
方向控制等设置,而打印页面边界的设置则可通过拖动数据
pB +” )
dv,'-pfint.0 【DamWindo ̄'Prim page rangeindude=ti_I 目e—
窗口标尺上的标志直观地完成,不必使用数据窗口的打印属
性来实现。这样可充分利用PowerBuilder的现有资源,简化程
序设计的复杂程度。
i ̄luae g/设置打印贞面
3 3数据窗口缩放打印的实现
缩放打印的控制是通过一个editmask控件en ̄scale和两
4结语
上述打印控制程序具有通用性,可将其单独保存在一个
pbl库中,研制信息系统时,只需将诙pbl库包含在应用中即
可;在需要打印某数据窗121时,只需用函数OpenWithPam ̄( —
Drlnt,datawindowttame)调用密1:3 w_print即可。
参考文献
【1】 f美)s —Collagher, 【n|耵Herhe ̄.Pt ̄erBm'lder5 0程序设计太
全【M】.北京:机械工业出版杜.1997
个命令按钮控件cb_mmller、cL1arg盯来实现的,用命令按钮
来改变缩放比例(呵Lsc .text的值)并触发ett ̄scale控件的
modiifed事件.em scale控件的modiifed事件脚本如下:
Integer It- ̄cale
IfThla.Text= T11肌
1】一8c e=1130
nse
lL8cale=Integer(肌dfThis.Text,l,flen(this t L)一1”)
发布评论