论文部分内容阅读
摘要: 从实际工作需要出发,针对日常工作中打印控制窗口调用过多,影响工作效率的情况,而明确提出在一个窗口中实现所有常见打印控制的思路,并通过自己的辛勤开发而最终实现了该功能。
关键词: 打印控制;信息系统;医院
中图分类号:TP311.52 文献标识码:A 文章编号:1671-7597(2011)0520090-01
屈指算来,本人正式接触电脑也有近15年了,打印作为日常办公的一项功能,估计每个电脑操作人员也都是要经常使用的了,不知大家在日常使用中会不会觉得其中的有些操作还是比较繁琐呢。
一般在打印功能使用中比较常用的就是选择打印机、改变送纸方式、选择适合的纸张大小、改变页边距、指定打印份数等一些,还有如打印页指定、纸张方向、改变打印质量、打印到文件等一些较为常见的功能,以上所列举的一些控制功能在百分之九十以上的软件中都不是在一个窗口页面中实现完成,如果打印量较大而且相对内容类型较复杂的话,对操作者而言,将不得不频繁切换改变,无疑将极大地降低工作效率。
上述问题在我们医院信息管理系统的使用中就很明顯的凸现出来了,举个简单的例子来说,象住院收费室,有发票、收据、各种大小报表等一些,纸张大小不一样,格式也不同、有时还需要用到不同打印机,其它少数科室在这个方面的要求相对还要复杂一些,为此,经常有医院工作人员向我提出,能否根据不同的需要自动选择打印机、送纸方式、纸张大小及其它功能。由于以前已经安装的管理系统原开发公司早已解散,实现该功能自然无从谈起,为此,我下定决心,一定要在新的医院管理系统中实现该功能。
由于我们医院新的管理系统开发商使用的是Powerbuilder(以下简称PB)开发语言,加上本人对该语言也较为熟悉,于是,我决定自己开发一个通用打印窗口嵌入其中来供全院使用。
使用过PB开发语言的程序员都知道,PB本身作为一门强大的数据库前台开发语言,其打印控制功能还是很全面的,要说不足之处也就是前面所说的调用起来有些复杂罢了,因此我所需要做的工作就是把所有的常用打印控制功能集中在一个窗口实现并且有针对性的存储起来,然后再调用就达到目的了。
虽然说起来也是很简单的事情,但是真正去做的时候也还是颇费了一番心思,就拿选择打印机而言,PB本身提供的函数就是弹出窗口再返回结果的方式,显然不能满足这个要求,因此,本人还不得不打起了Windows注册表和API函数的主意。
通过多年来积累的经验,对于Windows系统在注册表中有关打印机设置的一些内容也算是轻车熟路了,它的一些有关打印机的主要参数都存储在HKEY_LOCAL_MACHINE╲SYSTEM╲CurrentControlSet╲Control╲Print╲Printers这个键值下面,操作注册表对于PB也还算是很轻松的事情了,所以在读取系统所安装的打印机和送纸方式这两个环节上基本没有遇到什么问题,只有在读取打印机并选择对应的送纸方式之后,如何调用相应的纸张的时候,才稍微遇到了一些麻烦。
终于轮到API函数出手了,经过一些资料的查阅之后,发现DeviceCap
Abilities这个API函数能够实现我所需要的相关功能,首先通过DeviceCapabilities函数把所有有关纸张的信息存储到所定义的数组当中,再通过代码循环折解得到所需要的结果,然后存储到程序中的下拉列表内面供操作人员进行选择。至此,几个较为关键的问题得到解决。
接下来就是一些锦上添花的过程了,象设置页边距、纸张方向、是否显示标尺、以及打印页码和份数的等都是PB本身提供的操作起来相对很简单的功能了,设置几个属性或参数就能很快搞定的事,几乎是三下五除二便完成了。
初战告捷,在一个窗口中把所有的常用打印控制功能都基本实现了,考虑到有时还需要添加自定义纸张,于是还做了一个添加纸张功能,其实也就是调用Windows系统自身的那个功能,就一句代码的事情——run
“Rundll32.exe printui.dll,PrintUIEntry/s”,第一次运用自己完成的打印预览窗口来预览相关数据时心中真别提有多爽了(附效果图如下)。
也许细心的你会从图中发现怎么没有缩放设定功能呀,就是么,这么重要的功能怎么能够不要呢?只是因为下面那一块实在放不下了,再扩充一些主预览窗口又变小了,似乎也有些不妥,思来想去,有了一个比较理想的解决方案,利用键盘加鼠标滚轮的操作方式很好的解决了这个问题。按下ALT键时前滚滚轮查看放大,后滚滚轮查看缩小。按下CTRL键时前滚滚轮打印放大,后滚滚轮打印缩小。
至此,所有需要实现的常见打印控制功能都实现了,唯一美中不足的地方是窗口关闭后又要重新设定。一款好程序没有不精益求精的理由,于是在PB独有的数据窗口方面又做起了文章,根据不同的操作者和不同的数据窗口在改变打印参数设定时分别予以存储,在后面调用同一打印服务时再自动调用相关参数,这样,便做到了最大程度的方便操作者,对其以后的操作应用可以节约很多宝贵的时间。
以上一些为本人利用PB开发医院信息管理系统打印预览窗口的一些经验之谈,在使用不同的开发工具完成类似功能时,具体操作方法也许有所差异,但倘能写出来对于同行们有些许抛砖引玉作用的话,便也是笔者很欣慰的事情了。
参考文献:
[1]马贵安、李明武、牛永生,PowerBuilder Win32 Api程序设计[M].清华大学出版社,2004.
[2]杨劲,轻松玩转Windows注册表(新版)[M].重庆出版社.
[3]华师傅资讯,Windows注册表24小时轻松掌握[M].中国铁道出版社.
关键词: 打印控制;信息系统;医院
中图分类号:TP311.52 文献标识码:A 文章编号:1671-7597(2011)0520090-01
屈指算来,本人正式接触电脑也有近15年了,打印作为日常办公的一项功能,估计每个电脑操作人员也都是要经常使用的了,不知大家在日常使用中会不会觉得其中的有些操作还是比较繁琐呢。
一般在打印功能使用中比较常用的就是选择打印机、改变送纸方式、选择适合的纸张大小、改变页边距、指定打印份数等一些,还有如打印页指定、纸张方向、改变打印质量、打印到文件等一些较为常见的功能,以上所列举的一些控制功能在百分之九十以上的软件中都不是在一个窗口页面中实现完成,如果打印量较大而且相对内容类型较复杂的话,对操作者而言,将不得不频繁切换改变,无疑将极大地降低工作效率。
上述问题在我们医院信息管理系统的使用中就很明顯的凸现出来了,举个简单的例子来说,象住院收费室,有发票、收据、各种大小报表等一些,纸张大小不一样,格式也不同、有时还需要用到不同打印机,其它少数科室在这个方面的要求相对还要复杂一些,为此,经常有医院工作人员向我提出,能否根据不同的需要自动选择打印机、送纸方式、纸张大小及其它功能。由于以前已经安装的管理系统原开发公司早已解散,实现该功能自然无从谈起,为此,我下定决心,一定要在新的医院管理系统中实现该功能。
由于我们医院新的管理系统开发商使用的是Powerbuilder(以下简称PB)开发语言,加上本人对该语言也较为熟悉,于是,我决定自己开发一个通用打印窗口嵌入其中来供全院使用。
使用过PB开发语言的程序员都知道,PB本身作为一门强大的数据库前台开发语言,其打印控制功能还是很全面的,要说不足之处也就是前面所说的调用起来有些复杂罢了,因此我所需要做的工作就是把所有的常用打印控制功能集中在一个窗口实现并且有针对性的存储起来,然后再调用就达到目的了。
虽然说起来也是很简单的事情,但是真正去做的时候也还是颇费了一番心思,就拿选择打印机而言,PB本身提供的函数就是弹出窗口再返回结果的方式,显然不能满足这个要求,因此,本人还不得不打起了Windows注册表和API函数的主意。
通过多年来积累的经验,对于Windows系统在注册表中有关打印机设置的一些内容也算是轻车熟路了,它的一些有关打印机的主要参数都存储在HKEY_LOCAL_MACHINE╲SYSTEM╲CurrentControlSet╲Control╲Print╲Printers这个键值下面,操作注册表对于PB也还算是很轻松的事情了,所以在读取系统所安装的打印机和送纸方式这两个环节上基本没有遇到什么问题,只有在读取打印机并选择对应的送纸方式之后,如何调用相应的纸张的时候,才稍微遇到了一些麻烦。
终于轮到API函数出手了,经过一些资料的查阅之后,发现DeviceCap
Abilities这个API函数能够实现我所需要的相关功能,首先通过DeviceCapabilities函数把所有有关纸张的信息存储到所定义的数组当中,再通过代码循环折解得到所需要的结果,然后存储到程序中的下拉列表内面供操作人员进行选择。至此,几个较为关键的问题得到解决。
接下来就是一些锦上添花的过程了,象设置页边距、纸张方向、是否显示标尺、以及打印页码和份数的等都是PB本身提供的操作起来相对很简单的功能了,设置几个属性或参数就能很快搞定的事,几乎是三下五除二便完成了。
初战告捷,在一个窗口中把所有的常用打印控制功能都基本实现了,考虑到有时还需要添加自定义纸张,于是还做了一个添加纸张功能,其实也就是调用Windows系统自身的那个功能,就一句代码的事情——run
“Rundll32.exe printui.dll,PrintUIEntry/s”,第一次运用自己完成的打印预览窗口来预览相关数据时心中真别提有多爽了(附效果图如下)。
也许细心的你会从图中发现怎么没有缩放设定功能呀,就是么,这么重要的功能怎么能够不要呢?只是因为下面那一块实在放不下了,再扩充一些主预览窗口又变小了,似乎也有些不妥,思来想去,有了一个比较理想的解决方案,利用键盘加鼠标滚轮的操作方式很好的解决了这个问题。按下ALT键时前滚滚轮查看放大,后滚滚轮查看缩小。按下CTRL键时前滚滚轮打印放大,后滚滚轮打印缩小。
至此,所有需要实现的常见打印控制功能都实现了,唯一美中不足的地方是窗口关闭后又要重新设定。一款好程序没有不精益求精的理由,于是在PB独有的数据窗口方面又做起了文章,根据不同的操作者和不同的数据窗口在改变打印参数设定时分别予以存储,在后面调用同一打印服务时再自动调用相关参数,这样,便做到了最大程度的方便操作者,对其以后的操作应用可以节约很多宝贵的时间。
以上一些为本人利用PB开发医院信息管理系统打印预览窗口的一些经验之谈,在使用不同的开发工具完成类似功能时,具体操作方法也许有所差异,但倘能写出来对于同行们有些许抛砖引玉作用的话,便也是笔者很欣慰的事情了。
参考文献:
[1]马贵安、李明武、牛永生,PowerBuilder Win32 Api程序设计[M].清华大学出版社,2004.
[2]杨劲,轻松玩转Windows注册表(新版)[M].重庆出版社.
[3]华师傅资讯,Windows注册表24小时轻松掌握[M].中国铁道出版社.