pb知识总结

  • 格式:doc
  • 大小:266.00 KB
  • 文档页数:32

用PowerBuilder制作指示灯

1999-04-10 00:00 来源: 作者: 责任编辑:·yesky 评论(0)

相信大家在安装各种软件或微软公司产品时都会注意到那直观可爱的条状指示灯,它总是以最直接的方式告诉我们工作的进程情况,在PowberBuilder 中也可以实现。

1. 创建一个应用程序(working-out)。

2. 创建一个窗口(w_01)。

3. 在应用程序的Open事件中最未尾Open()函数改为Open(w_01)。

4. 编辑w_01窗口。

5. 添加三个控件在 w_01窗口上,即两个Rectangle :r_1,r_2 和一个commandButton :cb_1。

6. 将 r_1的Fill Color:设为White 将Line Color:设为Black,将X设为243,Y设为645,Width设为1541,Height设为113。按Apply 或 OK即可。

7. 将 r_2的Fill Color:设为Blue 将Line Color:设为White,将X设为261,Y设为661,Width设为5,Height设为85。按“Apply” 或 “OK”即可。

8. 在cb_1的 clicked事件中添写:

r_1.visible= true

r_2.visible = true

int lock

lock=0

do while lock <100

lock = lock + 1

r_2.width=lock*15

loop

9. 按 “Run” 键运行此程序,就会看到一条从头走到尾的像安装Win98一样的指未灯出现在你的程序窗口上。

注* 此程序只是作为一个指示灯,那什么时候指示灯该向前走,什么时候指示灯该停,只要想办法用变量给Lock赋值就可以了。(Lige)

用PowerBuilder制作多媒体动画

2001-02-06 00:00

在枯燥乏味的应用程序界面上嵌入动感十足的图片不仅能为程序增色不少,而且还可以吸引用户的注意力。PowerBuilder(以下简称PB)中有图片控件,但是只能插入静止的位图图片(.BMP),那么如何使图片在PB窗口中动起来呢?下面就来介绍用PB制作多媒体动画的方法。

一、实现原理

通过PB工具栏的控件按钮在窗口中放入一个图片控件,因为在动画序列的每一阶段都需要一幅标准的位图图片。通常在应用程序的请求之下,Microsoft Windows会在固定的时间间隔发送事件消息。利用PowerBuild的Timer()函数,可以打开这个定时器,从而窗口可在每个间隔内收到一个Timer()事件。当窗口收到消息时,改变图片控件的属性以显示动画系列中一幅不同的帧。当窗口关闭时,须告知Windows停止发送Timer事件。

二、操作步骤

1.打开Application画板,创建一个新的应用库和相应的应用程序对象,分别叫做animate.pbl和animate。当提示是否生成应用程序模板时,回答No。

2.使用Windows画板创建一个新窗口。

点击Windows画板,弹出Select Windows窗口,点按“New”按钮建立一个新窗口。在新建窗口上按右键,选弹出菜单的“Properties...”,弹出Windows属性窗口,点General页,在Windows

Type的下拉列表中任选一种类型,如Response,接着设置窗口的属性Visible和Enabked为TRUE ,其它属性都设为FALSE,最后以w_animate为窗口名存盘。 3.在窗口中添置图片控件

点按Picture控件按钮,并将其命名为P_1并设置File Name为“lxscr000.BMP”。为了在显示位图时得到更好的执行效果,设置图片控件的OriginalSize属性为TRUE。

4.为w_animate窗口定义实例变量,以便程序在脚本的执行期间内用来保存值。

点击菜单declare中的Instance Variables菜单项,作如下变量声明:

//所设的变量是一个数组,其中包含了为生成动画而显示的每一幅位图的文件名,它将为窗口提供一系列图像并循环显示

string is_bitmaps[]={″lxscr000.bmp″,″ lxscr001.bmp″,″ lxscr002.bmp″,″ lxscr003.bmp″,″

lxscr004.bmp″,″ lxscr005.bmp″}

//用于跟踪当前的位图数,初始值为1指示第一张图片

integer ii_picture=1

//可得到的最大位图数

integer ii_maxpicture

5.初始化程序,以使窗口得到循环显示的位图数,同时设置要显示的第一幅位图以及安排Timer事件的发生。

在w_animate的open事件中编写如下代码:

//获取数组变量中的最大位图数

ii_maxpicture=UpperBound(is_bitmaps[])

//设置位图显示初始值

p_1.picturename=is_bitmaps[ii_picture]

//每秒钟给w_animate窗口发送一个Timer事件

timer(1,this)

6.当窗口收到一个Timer事件后,它应该前进到序列中的下一帧。为Timer事件编写如下脚本。

if ii_picture=ii_maxpicture then

ii_picture=1

else

ii_picture=ii_picture+1

end if

p_1.picturename=is_bitmaps[ii_picture]

7.在窗口的Close 事件中编写如下代码使当窗口关闭时关掉Timer事件。

Timer(0,this)

8.编写脚本实现鼠标单击w_animate窗口时关闭该窗口。

在w_animate的clicked事件中键入close(this)。

9.编写脚本实现按任意键时关闭该窗口。

在w_animate的key事件中键入close(this)。

10.打开Application画板,按下面的方式处理应用程序的Open事件。

Open(w_animate)

11.保存并运行此应用程序。

三、编程要点

1.Windows能够以每秒钟18次的速度发送Timer事件,并支持16个定时器同时运行,当不再使用时将定时器关闭是一个很好的习惯。

2.如果你想加快显示速度,可将第五步中Timer()函数的第一个参数改小,如0.5,反之改大。

这样在屏幕上就可得到一幅生动的多媒体动画。你可以根据自己的喜好随意更改循环显示的图片,也可把上述程序应用于任何窗口界面,为你的应用程序界面增添动感。示例中多媒体动画将一直持续显示,直到你用鼠标点击窗口或按下任意键。(湖北 卢群)

PowerBuilder制作IE风格的图标按钮

本站最新推出 无须注册直接投稿 投递文章减小字体 增大字体 本文介绍在PowerBuilder中实现IE风格的图标按钮的技巧。在C++ Builder开发工具中,有一种图标按钮(SpeedButton),这种按钮可以在鼠标移入按钮后,在图片的周围会出现凸出的边框,鼠标移出按钮后边框消失。而在PowerBuilder中没有提供这种功能的按钮,为了使开发的应用程序界面更丰富,我们使用自定义图形控件(Picture)扩展并实现了---- 本文介绍在PowerBuilder中实现IE风格的图标按钮的技巧。在C++ Builder开发工具中,有一种图标按钮(SpeedButton),这种按钮可以在鼠标移入按钮后,在图片的周围会出现凸出的边框,鼠标移出按钮后边框消失。而在PowerBuilder中没有提供这种功能的按钮,为了使开发的应用程序界面更丰富,我们使用自定义图形控件(Picture)扩展并实现了此功能,这种方法设计出的程序简洁实用。

---- 一、实现功能

---- 按钮可以显示四种状态图形:

---- 1、Normal状态;

---- 2、Disabled状态;

---- 3、MouseOver状态(鼠标进入按钮区);

---- 4、ClickDown状态(鼠标按下)。

---- 二、关键方法

---- 1、当鼠标进入按钮区域时,控件图片改换成MouseOver状态的图片,并设置状态信号;

---- 2、鼠标滑入按钮区域后用Windows API函数SetCapture来捕获鼠标输入消息,跟踪鼠标位置;

---- 3、当监测到鼠标滑出按钮区域时,用ReleaseCapture函数释放鼠标捕获,恢复按钮图片到Normal状态并设置状态信号;

---- 4、改变控件的图片(PictureName)前,先用ReleaseCapture释放鼠标捕获,然后改变PictureName属性值,接着重新调用SetCapture函数,因为改变图片后PowerBuilder重新建立了控件窗口,窗口的句柄(hWnd)也随之改变了。

---- 三、设计过程

---- 1、新建“User Object” -〉选择Visual的Standard类 -〉选择“Picture”;

---- 2、定义全局的或局部的外部函数:

// *******************************

// Declare External Functions

// *******************************

function ulong SetCapture

(ulong hwnd) library "user32.dll"

function boolean ReleaseCapture

(ulong hwnd) library "user32.dll"

function boolean DrawEdge(ulong hdc,

ref rect qrc, uint edge, uint grfFlags)

library "user32.dll"

---- 3、定义结构数据类型

RECT

{

long left

long top

long right

long bottom

}

---- 4、定义控件共享变量:

// *******************************

// Declare Shared Variables

// *******************************

boolean sb_SuppressHoverBorder

---- 5、定义控件实例变量:

// *******************************

// Declare Instance Variables