| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
PB打印机选择列表的分析与实现---- Word的打印对话框中提供了一个选择打印机的下拉列表,但是我们在PowerBuilder编程中常用的是PrintSetup函数打开的Printer Setup设置窗口,在该窗口中,我们可以在列表框中选择我们所要的打印机。然而很遗憾的是这个Printer Setup窗口是英文界面。对于我们开发的纯中文界面的应用程序,其中却有着这样一个很重要的然而却是英文界面的窗口,我想,大多数程序员都是不能容忍的。PowerBuilder的打印控制是最难控制的,在网上见到的许多疑难问题大都与打印有关,但无论如何,我们的中文应用程序还是应该向用户提供这样一个中文的打印机选择窗口。 ---- 做一个类Word的打印对话窗口并不复杂,PowerBuilder的example程序中有完整的做好的窗体,PFC中也有类似的内容。将上面的英文文本及提示改为中文就行了。但该打印窗口没有提供象word一样的打印机选择下拉列表框。我们必须自己做一个。 ---- 通过对Windows 9X系统进行分析,我们能够知道Windows的打印机的信息一般存放在注册表及Win.ini文件中。这些信息分别位于系统注册表的HKEY_CURRENT_CONFIG\System\CurrentControlSet\ ---- 试验一:将注册表中上述目录的default的打印机值对改变为其它打印机,再运行printsetup函数,发现没有产生任何反应。而将win.ini文件中的[windows]下的devices的值对改变一下(哪怕胡乱输入几字符),再运行printsetup,打印机选择列表中立即体现出了相应的变化。 ---- 试验二:在注册表上述目录下添加一个主键,运行printsetup,没有发现打印机列表框中增加打印机,而在win.ini文件的[Devices]下随便增加一个,则printer setup窗口中立即增加了所输入的打印机。 ---- 因此,应从win.ini文件入手编制打印机选择下拉列表框。 ---- 可是,PowerBuilder提供了RegistryKeys能从注册表中某一主键下子所有主键条目的列表,却没有提供任何函数从ini文件中取相似的信息。当然,我们可以自己编一个,将win.ini文件内容一行一行地读入某字符串,使之与“[Device]”进行匹配判断,若是再继续向下读至某一行头一个字符为“[”的行并经过复杂的字符串处理以取得打印机列表(注:纯PB开发下)。但我们知道,windows增加打印机有专门的程序,而且,该程序会自动地同时在注册表及win.ini文件中同时增加打印机。因此我们可以这样入手:从注册表中取得打印机的列表信息,而从win.ini文件中取得及设置当前打印机信息。这样一来,问题就简单得多了。 ---- 经过以上分析论证,下面就开始做了。根据一般做法,我们会将该列表框封装成一个标谁的用户对象,以后开发时,只需在某窗体中调用这一用户对象就行了。 ---- 步骤一:新建一可视(visual)的标准(standard)的用户对象,在Select Visual Standard Type对话框中选择DropDownListBox(下拉列表框),点击“OK”按钮进入设计画面。 ---- 步骤二:开始编程。 ---- 1、定义两个实例变量 string is_windows_dirctory,is_winini_file ---- 2、定义两个函数: lu_Buf = 144 函数二:ouf_get_printer() integer li_rtn,li_ArrayUp,li_step IF li_rtn = 1 THEN 3、在constructor事件下编写下列代码: lb_PrinterExists = ouf_get_printer ( ) END IF ---- 4、在selectionchanged事件中输入: ---- 5、最后保存该用户对象(如保存为nvo_ddlb_of_printer)即可。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||