标题实现超级链接效果新法
栏目软件世界
作者吕祖德
发布2001年44期
在《电脑报》的39期B6版中,有一个关于实现超级链接效果的好东东,笔者看了以后赶紧试了一下!运行之后发现,鼠标快速划过这些按钮时,竟然有好几个按钮变色而不能返回!仔细研究了一下,终于发现了比较好的解决办法,现介绍如下:
笔者用的是C++ Bbuilder,C++ Builder和Delphi中都有的一个TFont对象。改变窗体对象字体的显示效果,其实就是改变该窗体对象包含的TFont对象的属性。下面我们就利用TFont来实现超级链接的效果。
在窗体的头文件中声明一个私有对象和一个私有函数:
TFont *oldfont;
void _fastcall changefontcolor(TFont *Sender);
单元文件中定义这个函数:
void _fastcall examp::changefontcolor(TFont *Sender)
{if (!oldfont==NULL))
{oldfont->Color=clWindowFrame;
oldfont->Style=TFontStyles();}
//这一个判断是必需的,否则当你首次调用这个函数时,会因为oldfont无指向而造成程序错误。
oldfont=Sender;
Sender->Color=clBlue;
Sender->Style=TFontStyles()<<fsBold<<fsUnderline;}
当然你也可以把这个函数定义成内连(inline)的。
然后在控件的OnMouseMove中调用这个函数就可以了,下面是调用的例子:
changefontcolor(CBuilder_SpeedButton->Font);
最后在窗体的OnMouseMove写上下面的语句就可以了:
if (!oldfont==NULL))
{oldfont->Color=clWindowFrame;
oldfont->Style=TFontStyles();}
最后将该控件鼠标的指针改为crHandPoint就可以了。