⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jq6.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>改造HINT的输出方式</title>
</head>

<body stylesrc="API扩展Delphi函数.htm" bgcolor="#EEEEFF">

<p align="center"><big><big><big>改造HINT的输出方式</big></big></big></p>

<p>&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Delphi为每个可视构件(而非快速按钮专属)都提供了Hint 
&nbsp;<br>
及ShowHint特性,其中Hint属性指定文本提示盒中的文本, &nbsp;<br>
而ShowHint属性则决定鼠标指向构件时是否显示文本提示盒, &nbsp;<br>
当ShowHint值为True时,显示文本提示盒。用户可在对象监 &nbsp;<br>
视器(ObjectInspector)的属性栏中设置或在程序中修改Hint &nbsp;<br>
及ShowHint属性。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;除此之外,Delphi还在类TApplication中提供了 &nbsp;<br>
HintColor、HintPause、HintHidePause、HintShortPause几 &nbsp;<br>
个属性来控制文本提示盒的输出方式。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;一般来说,HintColor、HintPause、HintHidePause、 &nbsp;<br>
HintShortPause通常在Form的OnCreate事件中设定它们的值 &nbsp;<br>
(如有需要的话),如以下的一段程序。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureTMainForm.FormCreate(Sender:TObject); &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;begin &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Application.HintPause:0;{使文本提示盒立即出现} 
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Application.HintPause:clBlue;{以蓝色小方框的 &nbsp;<br>
方式出现} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Application.HintHidePause:10000;{延长停留时间 &nbsp;<br>
为10秒} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Application.HintShortPause:100; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;end; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;另外,在编程中,我们还可以通过TApplication的OnHint 
&nbsp;<br>
事件获取鼠标指向构件的Hint文本。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;事实上,Delphi提供的文本提示盒输出方框、文本字型都 
&nbsp;<br>
太小,既不美观亦不易看清。值得庆幸的是,Delphi2.0版提 &nbsp;<br>
供了全部构件的源代码,我们可以通过对类TApplication的 &nbsp;<br>
源码作一些小修改,增加一个HintFont的属性,即可象修改 &nbsp;<br>
HintColor一样来修改文本提示盒的字体、字型大小等。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;TApplication是在Forms单元里定义的,因此让我们打开 
&nbsp;<br>
Forms.pas单元文件来作以下一些修改: &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureSetHintColor(Value:TColor}; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureSetHintFont(Value:TFont); &nbsp;<br>
{1997.04.19Mynewidea} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;PropertyHintColor: &nbsp;<br>
TColorreadFHintColorWriteSetHintColor; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;PropertyHintFont:TFontwriteSetHintFont; &nbsp;<br>
{1997.04.19Mynewidea} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureTApplication.SetHintColor(Value:Color); &nbsp;<br>
上增加一个过程 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;{1997.04.19Mynewidea} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureTApplication.SetHintFont(Value:TFont); &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;beginif(Value nil)and(FHinWindow nil)then &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;FHintWindow.Canvas.Font:Value; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;end;{1997.04.19Mynewidea} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;别忘了在新增的语句旁作一些必要的注释,如上面的 
&nbsp;<br>
{1997.04.19Mynewidea},可以很清楚地知道哪些语句是你 &nbsp;<br>
自己加进去的。 &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;将修改后的Forms.pas存盘,然后重建库文件,以后在 
&nbsp;<br>
你的库文件里,类TApplication就多了一个属性HintFont, &nbsp;<br>
你就可以很轻易的通过HintFont属性来修改文本提示盒的字 &nbsp;<br>
体、字型大小了,如以下一段程序: &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;ProcedureTMainForm.FormCreate(Sender:TObject); &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Var &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewHintFont:TFont.Create; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;begin &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewHintFont:TFont.Create; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewHintFont.Name:′楷体-GB2312′;{设置字体为 
&nbsp;<br>
楷体} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewHintFont.Size:12;{设置字型大小为12} &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Application.HintFont:NewHintFont; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;end; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;此外,Delphi绘制文本提示盒是在类THintWindow的方法 
&nbsp;<br>
ActivateHint中通过WindowsAPI资源函数SetWindowPos来实 &nbsp;<br>
现的,这段代码在Controls.pas单元文件里,有兴趣的读者 &nbsp;<br>
可以进一步修改这段代码以绘制其他任意形状(如椭圆、圆等) 
&nbsp;<br>
而不仅仅是矩型方框的文本提示盒!但或许最好的方法是从类 &nbsp;<br>
THintWindow继承下来一个新类,并重载Activate

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -