快速业务通道

Delphi的Hint入门指导

作者 凌众技术 来源 互联网 浏览 发布时间 2012-01-14
从Btn1移到Btn2时,Hint经过HintShortPause毫秒才会显示出来。   Application中有一个比较特殊的属性Hint,我们不禁要奇怪,Hint指定的是那个控件的提示呢。其实Hint属性的一个很大的用途是给那些没有办法直接出现Hint窗口的控件一个机会,使它们能够通过别的方式出现提示。比如菜单,我们没有办法使菜单出现Hint窗口,但我们可以使菜单的Hint出现在状态栏上的。   我们在上面的工程主窗口中加一个状态栏,并在加一个菜单控件,设置几个菜单项,并给每个菜单荐的Hint属性设置一些字符串。   然后写下:   procedure TForm1.FormCreate(Sender: TObject);   begin   Application.OnHint := WhenHint;   end;   procedure TForm1.WhenHint(sender: TObject);   begin   StatusBar1.SimpleText := Application.Hint;   end;   运行程序,当你指到菜单项时,看,状态栏上出现了提示了。   上面可以看到,通过一些简单的代码,就可以使得提示别具特色。但人们是永远不会满足的,他们总想能不能做更好看的Hint呢,甚至对Hint的窗口风格提出了要求。Delphi的工程师们早想到了这一点,他们通过类的继承设定了一个提示窗口的父类,即我们看到的那个Hint窗口,我们可以通过继承它并覆盖它所提供的虚拟方法来写自己的提示窗口。   去读一读HintWindow的源码吧,你只要覆盖几个虚拟方法,你就可以做出很漂亮的提示出来了。   Delphi的Hint虽然简单易用,但却不够灵活,因为它提供了统一的风格,所以你不能指定某个提示为错误指示,可某个提示为警告提示。关于这个,我们要用API来实现,在网上找一个漫画式提示,有很多文章可用。这里不再说述。   下面将给出一个定制Hint窗口的例子。这个自定义Hint窗口的效果不错,以玻璃为边框,并且有阴影的效果。 不过这之前,我们必须介绍一个如何定制,Hint的父类为THintWindow,在Controls单元中定义。我们看看几个虚拟方法,CreateParams设定窗口的风格,我们要覆盖掉它,使其没有边框。NCPaint画窗口的边框,我们也要覆盖它,因为我们不需要边框吗。Paint比较重要,为画Hint窗口客户区内容,当然要覆盖。不过最重要的当属ActivateHint,它会设定好窗口的大小,并显示它,我们就在这里定制一个类玻璃的窗口效果。下面给出该类的实现: unit wdHintWnd; interface uses Windows, Classes, Controls, Graphics, Forms, SysUtil

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号