进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> DLEPHI -> 文章内容  
装扮工具提示条

什么是工具提示条?在Windows程序中,当鼠标移动到工具条相应的按钮上时,会弹出一个小窗口来说明该按钮的作用,这个小窗口就叫做工具提示条。一般情况下它的背景色为淡黄色,字体色为黑色。面对这样千篇一律的面孔不知你是不是有些厌烦,是否想过给它化化妆,使其改头换面呢?下面我们就以Delphi为工具,对它动些小手术。www.goodsgy.com

在Delphi中,我们可以设置控件的Hint和ShowHint属性来显示工具提示条。当然,这并不是我们所希望的效果。幸好Delphi在Application对象中给我们提供了HintColor属性,用它可以设置工具提示条的背景颜色。在程序主窗体的创建事件中写入Application.HintColor:=clRed,然后运行一下,怎么样?效果不错吧,背景变成红色了。接下来的问题是,我们如何来改变显示文字的颜色。(嗯,让我好好想想)www.goodsgy.com

Delphi中有一个THintWindow类,看名字就知道它是干什么的了。不错,Delphi就是通过它来实现工具提示条的。在它的创建方法(Create)中只有四条语句:www.goodsgy.com

Constructor THintWindow.Create(AOwner: TComponent);www.goodsgy.com

Beginwww.goodsgy.com

  Inherited Create (AOwner);www.goodsgy.com

  Color := $80FFFF;www.goodsgy.com

  Canvas.Font := Screen.HintFont;www.goodsgy.com

  Canvas.Brush.Style := bsClear;www.goodsgy.com

End;www.goodsgy.com

它首先重载了父类的创建方法,然后设置了背景颜色、字体和画刷样式。从这里可以设想一下,如果我们创建一个THintWindow的派生类,并重载它的创建方法,然后在此方法中重新定义字体,不就实现了我们所希望的效果吗?那就让我们行动起来吧。www.goodsgy.com

首先新建一应用程序,在Form1窗体上添加一个用于测试的按钮Button1,设置ShowHint属性为True,Hint属性为“这是一个按钮”,然后在代码页的Implementation部分前面声明MyHint类:www.goodsgy.com

Typewww.goodsgy.com

  MyHint=class (THintWindow)www.goodsgy.com

    Constructor Create (AOwner: TComponent); override;www.goodsgy.com

  End;www.goodsgy.com

该类只有一个方法,用override关键字来表示重载了父类(THintWindow)的创建方法。接着在Implementation部分写入此方法的代码:www.goodsgy.com

Constructor MyHint.Create(AOwner: TComponent);www.goodsgy.com

Beginwww.goodsgy.com

  inherited Create(AOwner);    //重载父类方法www.goodsgy.com

  with Canvas do begin    //设置字体www.goodsgy.com

    Font.Name := '楷体_GB2312';www.goodsgy.com

    Font.Color :=clYellow;www.goodsgy.com

    Font.Size :=20;www.goodsgy.com

    Brush.Style := bsClear;www.goodsgy.com

  End;www.goodsgy.com

End;www.goodsgy.com

在此过程中我们重新定义了字体的名称、颜色及大小,现在就可以使用这个新类了。那么如何使用呢?这里还要说明一点:在Delphi中有一个隐含的变量HintWindowClass,它的作用就是指定在程序运行时显示的工具提示条所使用的类,其声明如下:www.goodsgy.com

var HintWindowClass: THintWindowClass = THintWindow;www.goodsgy.com

在程序中我们可以动态改变此变量,如在主窗体的创建事件中写入:HintWindowClass:=MyHint;这样就可以让它使用我们新创建的类了。好了,现在来运行一下程序,看看效果如何?工具提示条的字体变成了楷体,尺寸也变大了,颜色……,怎么颜色没有改变呢?新的问题出现了,还是再看看THintWindow的代码吧。www.goodsgy.com

问题就出在THintWindow的Paint方法上,其代码如下:www.goodsgy.com

Procedure THintWindow.Paint;www.goodsgy.com

varwww.goodsgy.com

  R: TRect;www.goodsgy.com

Beginwww.goodsgy.com

  R := ClientRect;www.goodsgy.com

  Inc (R.Left, 2);www.goodsgy.com

  Inc (R.Top, 2);www.goodsgy.com

  Canvas.Font.Color := clInfoText;    //请注意这一句www.goodsgy.com

  DrawText(Canvas.Handle, PChar(Caption), -1, R, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DrawTextBiDiModeFlagsReadingOnly);www.goodsgy.com

End;www.goodsgy.com

原来THintWindow在它的Paint方法中又重新改变了字体颜色。没办法,只好重写Paint方法了。在MyHint类中再声明一个重载方法:Procedure Paint; Override;然后将THintWindow的Paint方法的代码照搬过来,再将Canvas.Font.Color := clInfoText;这一句删除掉。至此就大功告成了,再运行一下程序看看,这下一点问题都没有了。www.goodsgy.com

也许你会说:“其实我们也不用重载THintWindow的Create方法,只需重载Paint方法即可,然后在其中设置背景及字体,这样会省事得多啦。”当然,这样也行得通,不过你会发现有一点小小的遗憾,是什么?自己试试吧。(什么?没有?!当我没说!)www.goodsgy.com

在百度中搜索:装扮工具提示条
在Google中搜索:装扮工具提示条
在Yahoo中搜索:装扮工具提示条

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· [图文] 遗忘的百合 装扮您的Windows操作系..
· 要个性 可以花点儿米把QQ空间装扮一下
· 装扮个性QQ昵称必用的五个字符
· 用透明Flash装扮好QQ空间
 
· 小技巧:如何用Delphi创建快捷方式
· Delphi版模仿熊猫烧香病毒核心源码
· Delphi“判断服务器路径”与“清空日志文..
· 应用程序敏感键的实现
· 用Delphi实现远程屏幕抓取
· 用DEPHI为应用软件建立注册机制
· 利用Hook技术实现键盘监控
· Delphi编程实现Ping操作
· 通用Delphi数据库输入控件DBPanel的实现
· 用Delphi开发屏幕保护预览程序

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)