微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题实现超级链接效果新法
栏目软件世界
作者吕祖德
发布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就可以了。