[返回]
中国计算机报1999年第53期

为控件巧添信息条

林 英 徐海智

  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

  注:该静态文本框内容及样式设计可依据实际情况而设定。
pb128_2.jpg (16129 bytes)
  图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,当鼠标掠过某控件时触发该事件。本程序就是利用这个事件。
pb128_3.jpg (40094 bytes)
  图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)
pb128_4.jpg (2687 bytes)
  图4

  至此本程序段编写完毕,运行该应用程序后,鼠标滑过cb—try按钮时,会出现想要的提示信息条。鼠标离开cb—try后,无该信息条出现(图4)。

  注:信息条的位置可根据用户对象控件的位置不同而自由设定。信息条的样式设计也可自由设计。