如何扩展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
随机推荐
- SOA之(2)——SOA架构基础概念与设计框架
SOA的设计框架 设计框架与架构相关的概念紧密相连,原则.模式和架构始终是与设计共舞的. SOA服务设计的原则中记录了一个基础的设计框架: 设计特性(Design Characteristic)——由 ...
- javascript实现数据结构与算法系列:循环链表与双向链表
循环链表(circular linked list) 是另一种形式的链式存储结构.它的特点是表中最后一个结点的指针域指向头结点,整个表形成一个环. 循环链表的操作和线性链表基本一致,仅有细微差别. w ...
- HDU3487 Play With Chains(Splay)
很裸的Splay,抄一下CLJ的模板当作复习,debug了一个下午,收获是终于搞懂了以前看这个模板里不懂的内容.以前用这个模板的时候没有看懂为什么get函数返回的前缀要加个引用,经过一下午的debug ...
- POJ 1422
#include <iostream> #define MAXN 350 using namespace std; int mat[MAXN][MAXN]; bool mark[MAXN] ...
- hdu 1669(二分+多重匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 思路:由于要求minimize the size of the largest group,由此 ...
- java三种调用方式(同步调用/回调/异步调用)
1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消息或事件的机制 ...
- MySql存储引擎特性对比
下表显示了各种存储引擎的特性: 其中最常见的两种存储引擎是MyISAM和InnoDB 刚接触MySQL的时候可能会有些惊讶,竟然有不支持事务的存储引擎,学过关系型数据库理论的人都知道,事务是关系型数据 ...
- JVM垃圾回收机制总结(5) :JDK垃圾收集器的配置命令
以下配置主要针对分代垃圾回收算法而言. 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理 ...
- 两则C++知识点
返回引用遵守的两条准则: 1. 不能返回局部变量: 2. 不能返回new出的量,因为可能是临时对象. const的用法: 1. 基本数据类型的写限制: 2. 函数的传入以及返回参数: 3. 类内的数据 ...
- opencv 人脸识别 (一)训练样本的处理
本文实现基于eigenface的人脸检测与识别.给定一个图像数据库,进行以下步骤: 进行人脸检测,将检测出的人脸存入数据库2 对数据库2进行人脸建模 在测试集上进行recognition 本篇实现 ...