PowerBuilder 编程技巧实例

本文介绍了PowerBuilder作为数据库前端开发工具的实用技巧,包括限制应用运行次数、实时帮助条实现、窗口与菜单的定制、数据窗口的动态调整、数据颜色变化以及文件输出策略。通过对PowerBuilder的深入理解和应用,开发者可以提升工作效率,实现更高效的企业级应用开发。
摘要由CSDN通过智能技术生成

随着数据库技术在各行各业的广泛应用,作为企业级数据库前端开发工具的Power Builder日益成为开发人员的得力助手。PowerBuilder以其开放的体系结构,友好的用户界面和简洁高效的开发环境赢得了众多程序员的喜爱,连续多年被评为美国计算机界的年度风云产品,在数据库开发工具领域占据了高达44%的市场份额。PowerBuilder进入我国的时间不长,许多编程人员希望了解并掌握这一先进工具。在这里,笔者将自己平日用PowerBuilder作开发的一些体会整理出来,奉献给大家。
PowerBuilder是由多个功能模块组成的可视化集成开发环境,是面向对象的开发工具,用它可以方便地建立起基于Windows的分布式数据库应用。其功能模块分别完成应用管理、窗口对象设计、菜单对象设计、数据窗对象设计和数据库查询等工作,这些功能模块由于PowerBuilder提供的色彩丰富的工具条而被称作"Painter"(画板)。下文便依据各模块作大的分类介绍相应的编程技巧。

一、有关应用的编程技巧仅让应用程序运行一次的技巧:

 有时需要限制一个PowerBuilder应用同时运行的实例(Instance)个数或仅让应用运行一次,我们可以通过调用WindowsSDK函数或使用PowerBuilder的Handle()函数来实现。
   先谈调用SDK函数的方法。为了调用SDK函数,需要在ApplicationPainter的菜单项Declare/GlobalExternalFunctions中定义:
   FunctionuintGetModuleHandle(stringModuleName)Library"Kernel.exe" FunctionuintGetModuleUsage(uintModuleHandle)Library"Kernel.exe"

下面这段程序写在Application的Open事件中。它先通过调用SDK函数GetModuleHandle()获得指定应用程序的句柄,然后调用GetModuleUsage()函数确定应用程序同时运行的实例个数。
uint IApplHandle
int App_num
IApplHandle=GetModuleHandle("ocmis.exe")
if IApplHandle>0 then
   App_num=GetModuleUsage(IApplHandle)
   if App_num>1 then
      Messagebox("注意","本程序已经运行!",Stopsign!)
      return
   endif
endif
Open(w_main)
  若需要限制应用同时运行的实例个数,比如仅允许同时运行N个实例,那么将上述程序中的语句 “if App_num>1 then”改为“if App_num>N then”即可。
  采用Handle()函数的方法更简洁一些,代码如下:
 int hand
 hand=Handle(this,TRUE)
 If hand>0 then
   Messagebox("注意","本程序已经运行!",Stopsign!)
   Halt
 else
 Open(w_main)
endif

 二、有关窗口的编程技巧

1、提供实时帮助条

中文之星2.0版的链形菜单管理器提供了实时帮助条,增强了系统的易用性,在PowerBuilder中也可以实现类似的功能。当鼠标移动到窗口中的某些控制(Control),如编辑器、图片等时,会在鼠标附近自动产生帮助条,实时地提示操作要领。

首先在窗口w_main中任意位置定义一个黄底黑字的静态文本st_help,设定st_help.visible=false,st_help.text=&Help;然后在该窗口模块的Declare/WindowFunctions...下定义函数show_help(),其参数只有一个,参数名为text,类型为string,通过传值方式接收参数;无返值。show_help()代码如下:
 if st_help.visible then
   return
endif
 st_help.text=text
 st_help.width=Len(st_help.text)*38
 st_help.x=w_main.PointerX()
 st_help.y=w_main.PointerY()+50
 if st_help.x+st_help.width>w_main.Workspacewidth() then
    st_help.x=w_main.Workspacewidth()-st_help.width
 endif
 if st_help.y+st_help.height>w_main.Workspaceheight()
   then st_help.y=w_main.Workspaceheight()-s

pb案例开发集锦,适合初学者学习,有经验也可以看看,里头有很多巧妙的应用。我在这里列出所有的目录。 源程序使用说明一、功能 本光碟中提供了与图书完全一致的程序源代码和编译好的可执行文件,读者可以直接执行这些可执行文件,以便更加直观的体会案例运行的效果;如果想进一步研究案例的源代码,可以将相应文件夹下的文件在PowerBuilder10.0开发环境中打开,然后编译运行。二、内容 本光碟中包含图书中的每个案例的源代码、可执行文件和所有资源文件,具体组织结构如下: 第1章 窗体与控件 案例1 创建应用、窗口与控件 案例2 目录浏览器 案例3 文件浏览器 案例4 图片浏览器 案例5 用户密码验证 案例6 等待窗口 案例7 使用滚动条 案例8 使用进度条 案例9 电子时钟 案例10 修改系统时间 案例11 颜色对话框 案例12 IP地址编辑框 案例13 人民币大小写金额的转换 第2章 菜单与MDI窗口 案例1 创建窗口菜单 案例2 带底图的MDI窗口 案例3 带浮动图标的工具栏 案例4 隐藏和显示任务栏 案例5 右键菜单 案例6 调用HtmlHelp文件 案例7 动态打开窗口 案例8 记事本 第3章 数据处理基础 案例1 创建数据库 案例2 设置表格颜色 案例3 比例图显示数据 案例4 动态设置数据窗口风格 案例5 使用选项卡 案例6 使用下拉子数据窗口 案例7 动态设立数据窗口 案例8 在窗口中编辑数据 案例9 学生学号排序 案例10 数据窗口排序 案例11 利用DataStore共享数据 案例12 关联与条件查询 案例13 数据查询 案例14 模糊查询 案例15 键盘模拟器 案例16 将数据保存到Word文件中 案例17 将数据保存到Excel文件中 第4章 数据库高级操作 案例1 定义数据窗口的检索参数 案例2 窗口之间传递函数 案例3 在SQL查询中使用变量 案例4 在Grid类型报表的Header区增加文字标题 案例5 使用动态SQL查询数据 案例6 两种不同查询方法的比较 案例7 外部数据源窗口的使用 案例8 更新由多个表生成的数据窗口 案例9 把数据窗口信息存为Html格式文件 案例10 数据窗口查询模式的应用 案例11 数据窗口的树形视图表示 案例12 数据窗口中实现字段的组合 案例13 数据窗口中的数据共享 第5章 网络与通信 案例1 Ping指定IP地址范围内的计算机 案例2 实现串口通信 案例3 制作收发电子邮件程序 案例4 使用组件收发电子邮件 案例5 Web服务器程序 案例6 调用WinFax发送传真 案例7 超级链接的制作 案例8 使用超级链接控件 案例9 获本机名和IP地址 案例10 使用多线程下载网页 案例11 Socket通信客户端 案例12 Socket通信服务器端 案例13 FTP客户程序 第6章 API函数的应用 案例1 使用API函数实现透明窗体 案例2 制作位图菜单 案例3 控制窗口 案例4 获得系统信息 案例5 创建文件和目录 案例6 显示和设置时间 第7章 报表打印 案例1 报表打印预览 案例2 报表的打印 案例3 数据窗口的预览和打印实现 案例4 使用混合编程实现打印控制 案例5 使用PowerPrinter动态链接库实现打印扩展 案例6 数据窗口的打印 第8章 多媒体与图形 案例1 播放Gif动画 案例2 播放Flash动画 案例3 播放AVl文件 案例4 可连续播放的音乐播放器 案例5 带记忆的MP3播放器 案例6 播放WAV 案例7 播放指定的AVI-MID-WAV文件 案例8 CD播放器 案例9 播放光驱内所有VCD节目 案例10 生肖查询 案例11 位图动画 案例12 浏览大幅BMP图片 案例13 利用Picture制作小动画 案例14 制作屏幕保护程序 案例15 设计滚动字幕 案例16 制作动画光标 第9章 文件与系统 案例1 判断驱动器属性 案例2 清空回收站 案例3 使应用程序窗口总在最顶层 案例4 将程序设置成自动执行的程序 案例5 控制光驱的弹开与关闭 案例6 修改显示器像素色值 案例7 获得应用程序的当前路径 案例8 获磁盘序列号 案例9 在程序中启动ODBC数据源管理器 案例10 实现定时关闭计算机 第10章 其他技巧与应用 案例1 Windows窗口的枚举 案例2 多线程的实现 案例3 使用PB获得CPU的速度、型号和生产商 案例4 磁盘格式化的实现 第11章 综合应用案例 案例1 库存管理系统 案例2 C/S应用程序设计案例――工资管理 案例3 B/S应用程序举例―――简单链接与查询 三、运行环境 系统环境:Windows XP/Intel P4/1.7G/256M 开发工具:PowerBuilder10.0+Power Dynamo3.6 IIS信息服务器:Internet Information Server 5.0 数据库系统:Adaptive Server Anywhere 8.0 网页设计工具:FrontPage 2000四、注意事项 1、运行本书涉及数据库实例时,必须设置数据库连接,关于数据库连接的设置在本书"第3章 案例1"有详细说明。读者自己配置数据库,运行前必须重新设置路径。所有使用到的数据库文件都在光盘根目录下“数据库”文件夹内,请根据本机有关设置重新定位源代码相关设置。数据库有问题的请仔细调试,详细情况看设置。 2、界面设置图片的实例必须重新设置图片路径,大部分图片在在本例目录下,读者也可以自行选择图片。许多实例运行后的界面没有图片,与书稿中的图不一致,请仔细检查是否是源代码中的路径的问题,是否是因为用的绝对路径的问题。 3、少数几个程序需要特殊的设置,特别是客户服务器结构的应用程序,请参看书中的具体设置。 4、少数程序可执行文件出现问题可生成EXE+PBD模式,问题就可以解决!光盘中例程出现的问题:FAQ:第2章 案例2 无图,运行前必须重新设置路径第5章 案例1 Ping不了只有单独连接因特网正常运行,通过局域网、宽带等连接因特网(或曾经连接过局域网),IP地址已经多次改变,不符合PING的原理。第5章实例4 不能建立邮件列表需要设置端口、服务器参数等第5章实例8 无图,运行前必须重新设置路径
配套光盘使用说明 (1) 本光盘是《PowerBuilder数据库开发经典案例解析》的配套光盘,与图书一起发行,不得单独出售。 (2) 本光盘的主要内容包括各章示例程序的代码及数据库文件。光盘的说明文件为Readme.txt,就是本文件。 (3) 示例程序是按照它们出现的章顺序编排的。 (4) 光盘上的示例程序都是在PowerBuilder 9.0和SQL Server 2000个人版下调试通过的,不同的版本可能存在差别。另外,使用的操作系统是Microsoft Windows 2000(Professional,Server),原则上,操作系统对程序没有影响,不过,作者没有在其他操作系统平台上调试这些程序。在配套光盘上,作者提供了示例程序的源代码。另外需要注意的是,作者建议读者重新编译所有示例程序,进而熟悉它们的结构和基本功能。 (5) 要运行本光盘各章节“代码”目录下的程序,需要安装SQL Server 2000,并建立起相应数据库。各个实例数据库文件存放在相应“建库脚本”目录下,有两种方法建立数据库。一是在SQL Server的企业管理器中点击“数据库”右键,单击【所有任务】|【附加数据库】菜单命令,选择相应的数据库文件(扩展名为mdf),单击确定按钮就可以了;另一种方法是通过SQL Server的企业管理器的恢复数据库功能,从数据库备份文件恢复,备份文件的扩展名为bak。 建立数据库后需要建立ODBC连接到数据库,建立的方法可以参考图书第一章1.6.4小节中的小知识。第一章程序通过INI文件直接连接数据库,后面各个实例对应的ODBC数据源名称分别为:hrmlink、mrplink、caiwulink、liblink、hotellink、hislink和eislink。 (6) 如果安装了PowerBuilder 9.0,则不需要安装其他软件,否则需要单独拷贝“运行程序所需文件”目录下DLL文件到“C:\WINNT\SYSTEM32”下面。 (7) 第五章至第八章实例运行前,需要拷贝相应的“ICON目录”到该实例运行的目录底下,完成第(5),第(6)和第(7)点后,实例程序就可以正确运行了。 (8) 光盘的所有文件都被默认地设置为只读文件,而所有程序在重新编译时都必须重新创建这些文件,所以在重新编译之前必须将所有文件修改为可写。 (9) 本光盘上所有程序都只供学习之用,未经作者许可,它们不得用于任何商业目的。 (10) 清华大学出版社几位编辑同志在本光盘的出版过程中付出了辛勤劳动,他们对本光盘的出版给予支持,在此对他们的工作表示感谢! 由于时间仓促,光盘中示例程序出现错误在所难免。发现其中的问题后,如果方便,麻烦读者告知作者。另外,如果您要对本书内容的修改提出建议,也麻烦您告知作者(email:ilikeit@126.com)。 谢谢使用本光盘! 作者 2004.8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值