默认的Hint窗口展现如下:

这种情况下可以操作有窗口的背景颜色,字体样式

Application.Color

有的时候仅仅是文字满足不了我们的需求,比例如下格式:

这个时候就应该执行以下步骤:

1.新建一个单元,基层自:THintWindow;

2.重写THintWindow的PCPaint方法或者Paint方法来绘制自己想要的格式;

3.将全局变量HintWindowClass赋值为你所写的类(这步必须要在Application创建form之前);

请参见如下代码:

自定义类

unit MyHintWindow;

interface
uses
Forms,Windows,Messages,Controls,Themes,Classes,Graphics; type
TMyHintWindow = class(THintWindow)
protected
procedure NCPaint(DC: HDC); override;
procedure Paint; override;
end; TMyHintWindowClass = class of TMyHintWindow; implementation
var
tempBmp:TBitMap;
procedure init;
begin
tempBmp := TBitmap.Create;
tempBmp.LoadFromFile('Chrysanthemum.bmp');
end;
{ TMyHintWindow } procedure TMyHintWindow.NCPaint(DC: HDC);
begin
inherited;
//在这里写入绘画非客户区的代码
end; procedure TMyHintWindow.Paint;
var
clientRect:TRect;
begin
Self.Width := 500;
Self.Height := 500;
clientRect:= GetClientRect;
clientRect.Bottom := clientRect.Top + 3;
Canvas.Brush.Color := clred;
Canvas.FillRect(clientRect);
Canvas.Brush.Color := clWhite;
clientRect:= GetClientRect;
clientRect.Top := clientRect.Top + 3;
Canvas.FillRect(clientRect);
Canvas.TextOut(100,3,Caption);
Canvas.Draw(0,18,tempBmp);
end; initialization
init;
finalization
tempBmp.Free;
end.

工程单元代码如下:

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
MyHintWindow in 'MyHintWindow.pas'; {$R *.res} begin
Application.HintColor := $000000;
Application.HintHidePause := 10000;
HintWindowClass := TMyHintWindow;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

如何扩展VCL的hint的更多相关文章

  1. ORACLE常用SQL优化hint语句

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...

  2. 【温故Delphi】之VCL消息机制小结

    TObject消息分派 procedure Dispatch(var Message); virtual; #负责分派消息到特定VCL组件的事件处理函数 procedure DefaultHandle ...

  3. 如何编写Vault插件扩展Vault Explorer的功能

    今天练习了一下Vault Explorer的扩展程序,基本上是Vault SDK中的HelloWord示例程序.如果你刚刚开始接触Vault的二次开发,希望对你有帮助. 开始之前,你需要安装Vault ...

  4. Python学习笔记(迭代、模块扩展、GUI 、编码处理等)

    PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...

  5. Devexpress VCL Build v2014 vol 15.2.3 发布

    2016年第一个版本,继续修补. New Major Features in 15.2 What's New in VCL Products 15.2 Breaking Changes To lear ...

  6. Firefox扩展开发

    Firefox扩展开发 (插件开发) Extension开发 入门教程 5步走 五步走   首先需要知道什么是"Firefox插件".这里说的"插件"只是一个通 ...

  7. 以下是关于Controller的一些Hint

    在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互.CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了CI的核心,那么你的Contr ...

  8. PLSQL_PLSQL Hint用法总结(概念)

    2014-06-20 Created By BaoXinjian

  9. PLSQL_性能优化系列05_Oracle Hint提示

    2014-06-20 Created By BaoXinjian

随机推荐

  1. flashdevelop 开发技巧

    FlashDevelop用来编写AS3代码,Flash CS5用来编辑程序所需要的资源(图片,声音-),Flash CS5自带有Flex SDK,在目录 C:\Program Files\Adobe\ ...

  2. 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)

    题目链接 题意 : 给你两个n*n的矩阵,然后两个相乘得出结果是多少. 思路 :一开始因为知道会超时所以没敢用最普通的方法做,所以一直在想要怎么处理,没想到鹏哥告诉我们后台数据是随机跑的,所以极端数据 ...

  3. ExtJs之Ext.util.Format

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  4. Linux多线程之同步3

    需求 客户端将需要解决的task发送给服务器,服务器调用线程来解决客户端发送的task,解决完由线程负责将其发送回客户端.(用管道实现通信) 思路 1. server维护两个列表.一是客户端列表.二是 ...

  5. 创建CancellationTokenSource对象用于取消Task

    虽然使用线程池ThreadPool让我们使用多线程变得容易,但是因为是由系统来分配的,如果想对线程做精细的控制就不太容易了,比如某个线程结束后执行一个回调方法.恰好Task可以实现这样的需求.这篇文章 ...

  6. 李洪强iOS开发之多线程编程2-NSOperation

    前言 1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步.加锁问题,造成一些性能上的开销.我们也可以配合使用NSOperation ...

  7. Project Euler 102:Triangle containment 包含原点的三角形

    Triangle containment Three distinct points are plotted at random on a Cartesian plane, for which -10 ...

  8. 安卓app缓存设置

    无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户. Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛 ...

  9. SinoSure

    Sino,就是“中国.东方”的意思, 这个词只能作为前缀使用,不能单独讲.西方社会有时使用“Sino-”来表示“中国(的)”的意思,但是“Sino”均为连接词,并非单独用来表示“中国”之语.如表达中美 ...

  10. photoshop菜单显示不全的解决方法

    photoshop菜单显示不全? 解决方法,选择菜单 编辑->菜单,下拉菜单选择photoshop默认值