PB编程经验谈

原创 2001年07月06日 10:00:00
 

  PB作为数据库开发的工具,早已深受广大开发人员的认可,笔者在开发PB应用程序时,总结了一些编程的经验技巧,介绍给大家。

  1.添加启动声音

  对Win 98的启动声音一定不陌生吧,那么有没有想过为你的PB应用程序添加启动声音呢?使用Win32 API函数PlaySound很容易实现。方法是在“Global External Functions...”中添加如下函数声明:

  Function long PlaySound (String Filename,Int Mod,Int Flags ) Library ″winmm.dll″

  获得这个函数声明的最好的方法是使用Visual Basic中的“API Viewer”,只需把得到的结果改写成PB的格式,然后在Application的Open事件中添加如下代码:

  iRet=PlaySound(″C:/Program Files/Joint/Start.wav″,1,1)

  参数1指定启动声音文件,参数2指定播放模式,参数3指定播放标记。播放成功返回1,否则返回0。若因声音文件不存在等原因导致播放失败也不会产生错误提示,因此没有必要对返回值进行捕捉处理。

  2.使PB窗口居中

  在窗口属性的Position页中可以粗略地设置窗口的弹出位置。然而,你并不知道客户机的屏幕分辨率是多少(800×600还是1024×786),不如在Open事件中加入下列代码使其居中:

  GetEnvironment(Env)//获取客户机环境信息

  dy=(Pixelstounits(Env.ScreenHeight,YPixelsToUnits!)-this.Height)/2

  dx=(Pixelstounits(Env.ScreenWidth, XPixelsToUnits!)-this.Width)/2

  this.Move(dx,dy)

  //Env为Environment类型,dx,dy为Long类型3.使用ActiveX控件

  VB可以直接引用ActiveX控件,而PB只能通过“控件嵌套”的方法来引用。这种方法需要借助OLE容器。下面以Animation控件为例说明引用过程及约定。

  窗体设计时,选择OLE,在弹出的“Insert Object”对话框中选择“Insert Control”页,在Control Type下列出了系统中所有注册过的ActiveX控件,选择“Microsoft Animation Control”。对ActiveX控件的属性和方法的引用必须遵循“OLE控件.Object.属性(或方法)”的规则。如下代码通过调用Animation控件的属性和方法来自动播放一个视频剪辑:

  ole—1.Object.AutoPlay =True

  //设置为自动播放

  ole—1.Object.Open(″C:/Program Files/Joint/FireWork.avi″) //打开一个Avi文件

  若你的PB程序中使用了ActiveX控件,最好把相应的OCX文件与你的程序一起发布,并在安装程序中进行注册,因为客户机不一定注册了相应控件。注册的方法是用Regsvr32,若采用InstallShield来制作安装程序,也可以把所有要注册的OCX文件放到一个File Group中,然后将它的“Self-Registered”设置成Yes来自动注册。

  4.操纵LOB

  大对象(Large OBject)通常指大文本和大二进制对象,几乎每一种数据库都支持它。在PB中可以用UpdateBlob和SelectBlob语句来对它们进行处理。

  (1)用UpdateBlob来把大对象数据写入数据库

  在编写管理软件时,要求把员工的照片(Bmp文件)和工作经历(Doc文件)保存在数据库中,而不是像以前一样保存它们的文mpno=′9925′; //把图像数据写入数据库

  If SQLCA.SQLNRows〉0 Then Commit;

  End If

  注意,FileRead一次只能读取32K,若文件大于32K应分多次读取;UpdateBlob执行成功与否不能用SQLCode或SQLDBCode来判断,而要用SQLNRows是否大于0来判断。

  (2)用SelectBlob从数据库中读取大对象数据

  要查看员工的照片或工作经历,就应把相关信息从数据库中读出来。主要代码如下:

  Blob pic //把pic定义为二进制大对象(Binary large object)

  SelectBlob photo Into :pic From emp Where empno=′9925′;//把图像数据读到变量pic中

  p_1.SetPicture(pic) //用图像控件显示图像

  5.编译技巧

  (1)没有必要将pbl编译成机器码dll,即不要选择“Machine Code”。那样做意味着你至少要等待半个小时。编译成伪码pbd就行了。

  (2)把程序中用到的ico、bmp等文件打包到目标代码中。方法是:用记事本创建一个扩展名为pbr的资源文件,它的每一行是一个带完整路径的文件名,用于告诉编译器到何处去找用到的资源。

  (3)PB应用程序要独立运行,必须把Sybase/Shared下的几个共享库与你的程序一起发布,它们是:pbvm60.dll、pbodb60.dll、pbdwe60.dll。后台若使用MS SQL Server,还得带上pbmss60.dll;若使用Sybase SQL Anywhere,要带上pbo7360.dll;若使用Informix V7.x,要带上pbin760.dll。

PB程序使用串口

PB下从串口通信获取程控交换机计费数据的API调用    我是通过调用API实现的: 如你用的是二进制的,请把缓冲区改成BLOB型的。 首先定义外部函数:  Function Boolean ...
  • lwj0310
  • lwj0310
  • 2014年05月01日 21:23
  • 2176

超强PCB布线设计经验谈附原理图

在当今激烈竞争的电池供电 市场中,由于成本指标限制,设计人员常常使用双面板。尽管多层板(4层、6层及8层)方案在尺寸、噪声和性能方面具有明显优势,成本压力却促使工程师们重新考虑其布线策略,采用双面板。...
  • Tele_Anti_Nomy
  • Tele_Anti_Nomy
  • 2016年07月28日 20:59
  • 1324

PB协议说明与使用

http://www.cppblog.com/woaidongmao/archive/2009/06/23/88391.html 详解举例 http://blog.sina.com.cn/s/b...
  • mao834099514
  • mao834099514
  • 2016年12月28日 11:08
  • 653

pb一步步开发APP

APP越来越流行,客户需要开发APP,对习惯了pb开发者来说,如何开发APP是个让人头大的问题。其实pb开发APP是完全可行的。 下面就通过示例,一步步都大家如何开发一个APP。先上几张最后的效果图 ...
  • pcwe2002
  • pcwe2002
  • 2017年01月18日 17:29
  • 2437

PB控件属性之Tab

Tab控件-Tab 【其他】 ■调整标签页的顺序:点击标签以选中标签控件,在属性视窗中进入到Pageorder属性页,在Page Name列中点击选中要调整顺序的标签页,然后使用鼠标拖...
  • u012369435
  • u012369435
  • 2014年07月03日 11:21
  • 3684

PB动态数据管道技术实用编程

一、引言 使用过PowerBuilder(以下简称PB)的编程人员都知道,PB允许用户在程序运行过程中应用数据窗口方法或属性表达式查看或修改数据窗口对象的属性,还可以动态的创建数据窗口对象,并将这种...
  • linybo
  • linybo
  • 2014年04月13日 22:36
  • 1571

PB控件:Graph图形控件

Graph图形控件 【其他】 ■轴 类型轴--Category--String型、数值型、Date型、Datetime型和Time型 值轴--Value--数值型、Date型、...
  • tlammon
  • tlammon
  • 2016年05月15日 21:25
  • 2762

【PB】程序中连接数据库

PB程序中如何通过代码连接数据库?如何进行验证数据库的连接?这是很简单的一件事,不信您请看下文!...
  • Dongle_74
  • Dongle_74
  • 2017年06月26日 19:44
  • 504

PowerBuilder创建登录实例—你的心我终于懂了(二)

我们的这个简单的登录功能终于写完了,由于第一次使用PB,对其功能不太了解,所以操作步骤写的比较详细,但是本程序有一个缺点就是在第三步和第四步中,创建了数据窗口对象,到最后却没有用到,感觉有点多余,本来...
  • u010168160
  • u010168160
  • 2014年12月23日 07:58
  • 4521

PowerBuilder创建登录实例—你的心我终于懂了(一)

小编写这篇博客是因为在刚学者使用PowerBuilder的时候,连一个完整的小例子都不会做。上网找了各种资料,可是跟自己下的pb不是一个版本,有些东西找不到,而且没有一个完整的过程,有的是建数据库的,...
  • u010168160
  • u010168160
  • 2014年12月23日 07:57
  • 4224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB编程经验谈
举报原因:
原因补充:

(最多只允许输入30个字)