为PB增加一个漂亮的图形按钮
软件世界
大多用PowerBuilder(以下简称PB)编程的程序员都有这样一个烦恼:PB提供的标准按钮控件十分简陋,这在很大程度上限制了程序员想美化程序界面的能力。自看了《电脑报》2002年第25期的《巧用shape代替按钮》一文,笔者大受启发:在PB中能否也用图形控件代替按钮控件,通过捕捉图形控件的MouseDown、MouseUp等事件,切换相应的图片来达到按钮的效果呢?笔者经过的一番摸索,证实是可行的,感兴趣的读者不妨跟着笔者一起来为PB增加一个漂亮的图形按钮吧。
大家都知道,PB的标准图形控件是没有提供捕捉鼠标的MouseDown、MouseUp等事件的。但PB为我们提供了扩展标准控件的功能:定制可视用户对象(Standard Visual User Object),它允许我们在系统的标准控件上添加更多的事件、函数、变量等,再将它们封装生成一个新的、可重用的控件,我们可以像使用其他PB的标准控件般来使用它。利用PB这一特点,我们可以在原有的图形控件上添加MouseDown、MouseUp等事件。
创建一个定制可视用户对象十分简单:请点击“File”菜单下的“New”,从弹出的窗口中双击“Object”页面下的“Standard Visual”项,然后,再在弹出的“Select Standard Visual Type”窗口中选择“picture”即可。然后,我们就可以为它添加如下的代码了:
1.打开“Declare Instance Variables”面板,声明如下的实例变量:
string up_picturename //鼠标左键弹起后显示的图片名称
string down_picturename //鼠标左键按下后显示的图片名称
2.点击“Insert”菜单下的“Event”,为用户对象新增一事件。事件名称(Event Name)为:ue_mouseup;事件ID(Event ID)为:pbm_lbuttonup。并为它编写如下的代码:
this.picturename= this.up_picturename//当用户按下鼠标左键时,将图片切换为鼠标左键按下时的图片。
3.再点击“Insert”菜单下的“Event”,为用户对象新增一事件。事件名称(Event Name)为:ue_mousedown;事件ID(Event ID)为:pbm_lbuttondown。并为它编写如下的代码:
this.picturename = this.down_picturename//当用户放开鼠标左键时,将图片切换为鼠标左键弹起时的图片。
4.到属性设置窗口的“Other”页,将“Pointer”属性设置为“HyperLink!”。作用是:当用户将鼠标移入本控件时,将鼠标的指针变为一个手掌的形状。
至此,一个“图形按钮控件”就制作完成了!请以“uo_picbutton”保存该定制可视用户对象。以后要使用它时,我们就可以像选用PB的标准控件一样,从选择控件的下拉列表框中选择“Create User Object control”图标,再从弹出的“Select User Object”对话框中选择该用户对象,然后在窗口上要放置该用户对象的地方单击鼠标左键,它就会以一个控件的形式出现在窗口上。此时,大家将在它的属性设置窗口的“General”页面看到它比标准的图片控件多了两个属性:up_picturename以及down_picturename。请在这两个属性里设置鼠标按下以及弹起时两个状态的图片即可。
接下来要做的事,就是请大家充分发挥你Photoshop的功力,天马行空般设计你心目中各式各样的漂亮按钮吧。
以上程序在PowerBuilder7.0的编程环境下调试通过。