为控件巧添信息条
林 英 徐海智
Powerbuilder提供了给工具栏添加信息条的直接方法,但对控件对象PB本身并没有提供函数或相应工具来直接实现这一功能。本文将向读者介绍有关PB
6.0编程的一个实践技巧,探讨了如何给任意窗口中的任意控件添加信息条,以显示想要的提示性信息。这样可使应用程序变得更生动、更酷。
创建一个窗口并放置一控件
创建一个新应用:myapp
创建一个新窗口w—mytry,窗口类型设为main(其它也可)。
在该窗口上放置一个command控件,name为cb—try,text为try。
图1
创建用户对象u—display—help
这里利用一个自建的用户对象作为提示信息条。创建用户对象的优点是利于应用程序的标准化和可重用性、可扩展性。
1.利用用户对象画笔创建一个新的用户对象u—display—help。(visual
custom类型)。如图1所示,该用户对象包含一个静态文本框st—1,其text可暂设为help。
2.为该用户对象创建一个用户函数f—display—help
在用户对象界面中,选中选单项decla→user object function项:创建一个新函数:f—display—help,主要功能是对用户对象中的静态文本进行赋值(图2)。
函数定义如下:
if helpstring=′try′ then
st—help.text=′实验程序′
end if
注:该静态文本框内容及样式设计可依据实际情况而设定。
图2
在窗口中放置一个用户对象控件并编写窗口的有关事件script
在该窗口中放置一个用户对象控件uo—display—help,存放上面创建的用户对象u—display—help。
1.为该窗口的open事件编写script:
uo—display—help.visible=false //使在窗口打开时无帮助信息条出现
2.为该窗口的mousemove事件编写script:
if (xpos〈cb—try.x) or ( xpos〉(cb—try.x + cb—try.width)) then
uo—display—help.visible=false
end if //使鼠标在控件cb—try区域之外时不出现信息提示框。
为要显示提示信息的控件cb—try定义事件:we—nchittest
Windows 提供了一个事件消息:we—nchittest,当鼠标掠过某控件时触发该事件。本程序就是利用这个事件。

图3
这里为 cb—try定义一个新事件:
点中控件cb—try, 选择主选单中的declare→user events....项(图3);ok后,该事件则定义完毕。
此时,编写cb—try的we—nchittest事件的script:
string helpstring
helpstring=cb—try.text
uo—display—help.visible=true
uo—display—help.f—display—help(helpstring)

图4
至此本程序段编写完毕,运行该应用程序后,鼠标滑过cb—try按钮时,会出现想要的提示信息条。鼠标离开cb—try后,无该信息条出现(图4)。
注:信息条的位置可根据用户对象控件的位置不同而自由设定。信息条的样式设计也可自由设计。