BCB5:TrayIcon控件的使用、问题及对策
我个人认为BCB5这个控件的功能还不错,支持多幅自选图标动画、动画速度可调,使用也很简便。但今天听朋友谈起,才发现它有个小问题!
【通常使用】:通常将它与一个弹出式菜单关联,用它控制菜单的弹出,这也是它的主要功能,用一个ImageList控件来存放它所使用的图片。如你把编好的程序在WIN98下运行,便有可能遇到下面这个问题。
【问题】:在WIN98下(WIN ME 没实验)运行时,出现所谓”点2次“现象,即第一次点它(通常设为右键),菜单正常弹出,此时,你不点选菜单上的选项,将鼠标点其他地方(比如桌面),弹出菜单则隐藏。现在,你再次右击托盘图标TrayIcon,菜单本该再次弹出!呵呵,它却没有。等你再点它一次,这次菜单才弹出!很显然,这是不正常的,也是不应该的,尽管是个小问题。
【对策】:设置TrayIcon控件的Animate属性为true,一切OK!如想要静止图标,不要动画的,这个Animate属性仍要设为true,只是把ImageList控件中存放的其他图片删除掉,就留要的那个。否则,它们会自动循环动画。
【其他】:
[1] —— 如果ImageList中有2 幅以上图片,Animate设为true时,观察IconIndex属性,每次点选这个属性时,其数值不断变化,表明当前图片,间隔时间由AnimateInterval值确定。注意,修改的Animate属性不会马上生效,它在下一次打开该项目时生效。
[2] —— 一旦Animate为true且已生效后,不能再把icon属性设为空,也不能再删除ImageList控件,否则立即出现一连串AV(访问冲突),此时只有用任务管理器强行关闭BCB了,呵呵。即使把Animate 改为false也不能马上这么做,别忘了修改Animate值要下次才生效!所以关闭该项目再打开后就可以这么做了。