如何扩展VCL的hint
默认的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的更多相关文章
- ORACLE常用SQL优化hint语句
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...
- 【温故Delphi】之VCL消息机制小结
TObject消息分派 procedure Dispatch(var Message); virtual; #负责分派消息到特定VCL组件的事件处理函数 procedure DefaultHandle ...
- 如何编写Vault插件扩展Vault Explorer的功能
今天练习了一下Vault Explorer的扩展程序,基本上是Vault SDK中的HelloWord示例程序.如果你刚刚开始接触Vault的二次开发,希望对你有帮助. 开始之前,你需要安装Vault ...
- Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...
- 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 ...
- Firefox扩展开发
Firefox扩展开发 (插件开发) Extension开发 入门教程 5步走 五步走 首先需要知道什么是"Firefox插件".这里说的"插件"只是一个通 ...
- 以下是关于Controller的一些Hint
在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互.CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了CI的核心,那么你的Contr ...
- PLSQL_PLSQL Hint用法总结(概念)
2014-06-20 Created By BaoXinjian
- PLSQL_性能优化系列05_Oracle Hint提示
2014-06-20 Created By BaoXinjian
随机推荐
- flashdevelop 开发技巧
FlashDevelop用来编写AS3代码,Flash CS5用来编辑程序所需要的资源(图片,声音-),Flash CS5自带有Flex SDK,在目录 C:\Program Files\Adobe\ ...
- 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)
题目链接 题意 : 给你两个n*n的矩阵,然后两个相乘得出结果是多少. 思路 :一开始因为知道会超时所以没敢用最普通的方法做,所以一直在想要怎么处理,没想到鹏哥告诉我们后台数据是随机跑的,所以极端数据 ...
- ExtJs之Ext.util.Format
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- Linux多线程之同步3
需求 客户端将需要解决的task发送给服务器,服务器调用线程来解决客户端发送的task,解决完由线程负责将其发送回客户端.(用管道实现通信) 思路 1. server维护两个列表.一是客户端列表.二是 ...
- 创建CancellationTokenSource对象用于取消Task
虽然使用线程池ThreadPool让我们使用多线程变得容易,但是因为是由系统来分配的,如果想对线程做精细的控制就不太容易了,比如某个线程结束后执行一个回调方法.恰好Task可以实现这样的需求.这篇文章 ...
- 李洪强iOS开发之多线程编程2-NSOperation
前言 1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步.加锁问题,造成一些性能上的开销.我们也可以配合使用NSOperation ...
- Project Euler 102:Triangle containment 包含原点的三角形
Triangle containment Three distinct points are plotted at random on a Cartesian plane, for which -10 ...
- 安卓app缓存设置
无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户. Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛 ...
- SinoSure
Sino,就是“中国.东方”的意思, 这个词只能作为前缀使用,不能单独讲.西方社会有时使用“Sino-”来表示“中国(的)”的意思,但是“Sino”均为连接词,并非单独用来表示“中国”之语.如表达中美 ...
- photoshop菜单显示不全的解决方法
photoshop菜单显示不全? 解决方法,选择菜单 编辑->菜单,下拉菜单选择photoshop默认值