




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SYBASEPowerBuilder 8.0 Tip(1)如何设定预设打印机?PowerBuilder程序在打印报表时,使用者必须先设定好操作系统预设的打印机,然后才能在程序执行中将报表打印出来。然而许多系统所产生的报表各不相同,需求各异,常常一个系统就会需要不同的打印机来满足其打印需求。对操作系统而言,不管各式各样的PowerBuilder程序行印需求,只是单纯的将工作交由预设打印机来完成,因此要打印各种不同需求的报表,主要解决方法就是在打印该报表前先更改操作系统的预设打印机,这样接下来要打印的报表就可以依需要的打印机来打印了。以往PowerBuilder程序在解决这类打印机切换问题时主要有
2、两个方法:第一个方法就是将预设打印机切换动作交由使用者自行完成。这种方法虽然减轻程序设计师的动作,并且在使用上也是一个最简单的方法,但是由于操作上极不方便,所以较少系统使用这种方式。第二个的方法就是更改操作系统的注册机码,由于预设打印机的信息会记录在注册机码内,所以更改注册机码内的数据,就等于更改操作系统的预设打印机了。一般程序设计师会使用PowerScirpt函数如:RegistryGet()或是RegistrySet(),分别用来读取及设定注册机码信息,利用这两个函数在程序执行阶段动态更改操作系统的预设打印机。这是一个可行的解决方案,但是仍有不方便之处,因为各操作系统注册机码位置并不相同,
3、在程序的撰写上必须要考量使用者的环境,另外RegistryGet()及RegistrySet()函数使用上也较不方便,程序设计人员必须知道并撰写冗长的注册机码地址。在PowerBuilder 8.0,提供了新的解决方案,可以更方便的设定打印机相关功能。PowerBuilder 8.0新增四个有关打印机的功能函数,其功能请参见下表:函数名称说明PrintGetPrinter得到预设打印机的名称PrintGetPrinters得到系统目前可获得的打印机名称列表PrintSetPrinter设定下次Print()函数所使用的打印机名称PrintSetupPrinter开启目前选定打印机的功能设定窗口
4、这四个函数在使用上都不会牵涉到操作系统的注册机码,所以程序设计人员直接呼叫使用即可,不必考虑操作系统版本,也不用撰写冗长的注册机码地址。以PrintGetPrinter()函数为例,呼叫它会传回型态为字符串的打印机名称,其中也包含了装置名称及端口号码,在这个函数你就不像RegistryGet()函数需要传入任何参数,才能得到目前系统的打印机名称。让我们稍加说明其它的函数:PrintGetPrinters()函数,与PrintGetPrinter()函数使用上相同,只是传回的字符串包含目前操作系统已安装的各类型打印机名称,各名称之间以n字符区分,从这个函数可以得知系统有哪些打印机,可做为将来你可
5、选择的机型。PrintSetPrinter()函数用来设定所要使用的打印机,所传入函数的参数就是打印机名称,可藉由PrintGetPrinters()函数得知。当你设定好后,呼叫报表打印Print()函数就会以该打印机打印了。至于PrintSetupPrinter()函数,则是呼叫打印机打印功能的设定窗口,你可在这个窗口设定打印机本身的功能属性。与原本PrintSetup()函数不同的是PrintSetup()函数还可让你先选择要设定的打印机,再来设定属性。我们可以使用上述函数更方便的解决打印机切换的问题,例如我们可以先呼叫PrintGetPrinters()函数得到系统目前可用的打印机,在挑
6、选好要使用的打印机后,再呼叫PrintSetPrinter()函数就可以切换到新的打印机了,若还想要进一步设定打印机打印功能,再呼叫PrintSetupPrinter()函数即可。让我们参考下面简单的范例。long ll_place string ls_setptr string ls_prntrs = PrintGetPrinters ( ) /读取系统目前有哪些打印机 /读取列表中最后一笔打印机名称 ll_place=lastpos (ls_prntrs, n) ls_setptr = Mid (ls_prntrs, ll_place + 1) /设定新的打印机 PrintSetPrint
7、er (ls_setptr) /呼叫打印机功能设定窗口 PrintSetupPrinter () 这个例子从所得的打印机列表上故意读取最后一笔打印机名称,如第5及第6行所示,在实作上,你应该会加入一些判断来获得你想要使用的打印机。至于其它程序行,你根本不用修改就可以符合这个系统的需求,在程序执行时期动态更改所使用的打印机。最后,你只要呼叫报表的Print()函数,就可以将报表以所需的打印机打印出去了。上述是PowerBuilder 8.0在印表功能上新增的函数介绍,相信对程序设计而言,能增加撰写程序的方便性,提供了更多的弹性。 SYBASEPowerBuilder 8.0 Tip(2)档案及目
8、录的处理以往PowerBuilder在对于档案及目录的处理上,总是觉得捉襟见肘,虽然PowerBuilder PFC有提供档案复制等等相关功能,但不是每个使用者都想要利用PFC来处理档案及目录,原因之一是PowerBuilder PFC相当复杂,对新手而言较难上手;之二则是PowerBuilder PFC程序代码在使用上多利用继承来完成,所以完成的程序代码容量较大,影响执行效率。若不是使用PowerBuilder PFC,解法之一就是呼叫PowerBuilder提供的RUN()函数,藉由传入RUN()函数内的字符串参数,来执行以往DOS的命令,然而这个方法有一个很大的致命伤,就是往往程序尚未复
9、制完成时,PowerBuilder下一行指令极可能就要参考到所复制出的档案,这个问题出在PowerBuilder并不会等待RUN()函数内的动作是否执行完毕,就会直接执行下一行PowerScript指令,虽然我们会藉由循环或设定Timer来做控制,但是这只是治标的方法罢了! 要解决上述的问题,就一般的解法而言,就是呼叫外界的API,由这些API来完成PowerBuilder所无法提供的部分。有关档案及目录处理的API文件名为KERNEL32.DLL,它提供了包含档案复制、建立目录、得到目前目录等等数十种与档案及目录相关的函数呼叫。但是呼叫外界API的方式需要注意KERNEL32.DLL的版本及
10、相关作业平台,若是在Unix平台上执行的程序,这些API就不能使用的。所以根本之道,还是希望由PowerBuilder自行提供相关函数,这样的解法才是一劳永逸。PowerBuilder 8.0在有关档案及目录处理的功能函数上,主要新增了7个相关函数,这些函数大幅解决档案及目录处理的相关问题,功能请详见下列表一:名称描述FileCopy档案复制FileMove搬移档案ChangeDirectory改变目前工作目录CreateDirectory建立一个新目录DirectoryExists判定所指定的目录是否存在?GetCurrentDirectory得到目前工作目录RemoveDirectory删
11、除一个目录表一:PowerBuilder 8.0新增档案及目录函数 例如函数FileCopy(),其语法如下:FileCopy ( sourcefile, targetfile , replace )其中sourcefile及targetfile数据型态皆为string,用来表示档案路径,至于replace数据型态为boolean,用来表示是否允许复制到已存在的档案。其范例如下,将目前目录的jazz.gif档复制一份至C:emusicjazz.gif,若C:emusicjazz.gif档案已存在,则允许覆写过去。 integer li_FileNum li_FileNum = FileCopy
12、 (jazz.gif , C:emusicjazz.gif, TRUE) 由上表得知,以往PowerBuilder未提供但是最常使用的动作:档案复制及搬移,在PowerBuilder 8.0终于提供这个功能函数了,我们可以不用PowerBuilder PFC来完成,也不用费心的准备KERNEL32.DLL档案。同样的,在目录处理的功能函数上,都是以往PowerBuilder版本皆未提供的,在PowerBuilder 8.0,你就可以新增目录或删除目录,知道自己所在目录位置,更改所在目录或是判断目录是否存在等等。在使用上我们常常搭配ListBox控制件,ListBox控制件提供一个函数,叫做Di
13、rList(),它可以将某目录下的子目录及档案内容显示在ListBox上,并且提供多重选取的功能,其行为类似档案总管。我们可以由ListBox控制件搭配PowerBuilder 8.0所新增有关目录及档案的函数,最后就可以做出一个类似档案功能的程序了,如下图所示:图一:由PowerBuilder所完成的档案总管SYBASEPowerBuilder 8.0 Tip(3)问:我的 DataWindow 报表时常会因为不同的字段而需要中文英输入法互相切换,请问有没有详细的作法? 答:要达到这一个目地,你必须要注意的地方是要在那一个 Event 下 Script 并且得到字段名称,另一个地方就是如何呼
14、叫这一个输入法。下面就是一个例子,我们的 DataWindow 有两个字段,User_Name这个字段是要输入中文,我们想用注音输入法;而Password这个字段是要输入英文,你可以参考下列步骤:一、在宣告函数的地方宣告globalexternalfunctions:function boolean ImmSimulateHotKey (UnsignedLong hWnd,UnsignedLong dwHotKeyID) library IMM32.dllfunction unsignedlong GetKeyboardLayout (unsignedlong wLayout)library user32.dllfunction boolean ImmIsIME(unsignedLong hklKeyboardLayout)library IMM32.DLL二、在使用的 DataWindow Control中的Itemfocuschanged这一个事件,加上下面的程序代码:ulong hklKeyboardLayoutchoose case case User_Name hklKeyboardLayout = GetKeyboardLayout(0)if not ImmIsIME(hklKeyboardLayout) thenImm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防欺凌教育幼儿园
- 股份制改革路径解决方案报告
- 新型农业种植技术方案
- 零售行业销售趋势预测报告表
- 鞋业行业鞋类设计与生产优化方案
- 企业市场营销团队激励与考核方案
- 精益管理在企业管理中的应用
- 项目实施风险管理解决方案研究
- 土地流转行业农村土地制度改革方案
- 新农民创业创新培训手册
- 《电子商务》专升本考试复习考题库(汇总600题)
- 内部审计工作规范手册
- 传承红色基因 做革命接班人-清明节缅怀先烈-高中下学期主题班会
- 2023年皖西卫生职业学院单招职业适应性测试题库及答案解析
- 2022年R1快开门式压力容器操作考试题及R1快开门式压力容器操作考试题库 -1
- 六字诀传统健身功法
- YY/T 1293.2-2022接触性创面敷料第2部分:聚氨酯泡沫敷料
- GA 923-2011公安特警专用车辆外观制式涂装规范
- 9润滑油基础油的生产
- 第2章化学工艺基础《化学工艺学(第二版)》米镇涛课件
- 文物建筑保护工程施工组织设计编制要求
评论
0/150
提交评论