Delphi的Hint(1)

善良的傻傻姑娘

善良的傻傻姑娘

2016-02-19 20:45

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是Delphi的Hint(1),一起来学习了解下吧!

  Delphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置:

  ShowHint := True;

  Hint := ‘提示信息’;

  不必写一行代码,相当方便。

  

  但有时我们又想自己定制提示的效果,使其看起来更美观更具个人特色,没关系,Delphi完全有办法让你写出自己喜欢的Hint效果。

   

  Delphi的Hint功能实现归类在Application类中,所以我们可以在Application类中看到数个关于Hint的属性,这些属性可以设置Hint窗口的颜色,停留时间,出现时间等,设置了这些属性,将对整个工程的Hint功能起到影响。这样做的好处当然是统一了Hint的风格,并且让其他类不必去理会Hint的实现。

  我们可以建一个简单的工程,并放一个按钮,将按钮的ShowHint设为True,再对Hint设一个值。运行程序,当光标指到按钮上时,便会出现一个提示窗口。

  但如果我们在主窗口的创建事件中写下:

  procedure TForm1.FormCreate(Sender: TObject);

  begin

   Application.ShowHint := False;

  end;

  这些再运行程序,就不再有提示出现了,由此可知Application的ShowHint控制整个工程的Hint是否显示。

  如果你对于平常所见的Hint窗口的颜色感到厌烦,那么可以设Application的HintColor为其他颜色。但此时有一个问题,如果HintColor设为黑色,则提示字体也为黑色,就看不到提示信息了。为此,我们得了解另一个全局对象,事实上当程序运行时,会创建三个全局对象:Application,Screen,Mouse,三个对象的职责非常明显。Screen封闭了运行的工程在屏幕上的状态,它有一个HintFont的属性,允许你设置提示信息的字体。

  我们可以写如下的代码:

  procedure TForm1.Button1Click(Sender: TObject);

  begin

    Application.HintColor := clBlack;

    Screen.HintFont.Color := clWindow;

    Screen.HintFont.Size := 14;

  end;

  运行程序看看效果,提示字体变为白色,且变大了。

   

  另外Application有这三个属性:

  HintHidePause,HintPause,HintShortPause,控制着提示窗显示的时间等。HintHidePause指定提示窗口在屏幕上显示的时间,以毫秒为单位。HintPause则指定当你将光标移到有提示的控件上时,经过多长时间才会出现提示窗口,以毫秒为单位。而HintShortPause呢表示当你快速移动光标经过一组有Hint的控件时,显示Hint的间隔。比如有两个有Hint的控钮,当你的光标快速从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来实现,在网上找一个漫画式提示,有很多文章可用。这里不再说述。

  
   

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

Delphi的Hint(1)

编程语言 网络编程
Delphi的Hint(1)

Delphi的Hint(2)

编程语言 网络编程
Delphi的Hint(2)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi巧克力的滋味(1)

Delphi
Delphi巧克力的滋味(1)

关于VisiBroker For Delphi的使用(1)

Delphi
关于VisiBroker For Delphi的使用(1)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

扩展Delphi的线程同步对象(1)

Delphi
扩展Delphi的线程同步对象(1)

实现Hint的分行提示

编程语言 网络编程
实现Hint的分行提示

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

win7桌面背景没有居中或者其他的效果什么办

win7桌面背景没有居中或者其他的效果什么办

几种修复ACCESS数据库的实用方法

几种修复ACCESS数据库的实用方法
下拉加载更多内容 ↓