如何扩展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
随机推荐
- RMQ(st)
int dp[1111][12]; int a[1111]; int n; void RMQ_init() { for(int i=1;i<=n;i++) { d ...
- Unity 3D 游戏上线之后的流水总结
原地址:http://tieba.baidu.com/p/2817057297?pn=1 首先.unity 灯光烘焙 :Unity 3D FBX模型导入.选项Model 不导入资源球.Rig 不导入骨 ...
- ThinkPHP 单字母函数整理
TP所有单独的函数,除了两个用来生成项目的buildAppDir之类的,其余都在框架目录/Common/functions.php这个文件里. A函数(基本是Action的简写) A函数是用来实例化我 ...
- hdu 4389 X mod f(x) 数位DP
思路: 每次枚举数字和也就是取模的f(x),这样方便计算. 其他就是基本的数位Dp了. 代码如下: #include<iostream> #include<stdio.h> # ...
- 理解Node.js事件驱动编程
Node.js现在非常活跃,相关生态社区已经超过Lua(基本上比较知名的功能都有nodejs模块实现). 但是我们为何要使用Node.Js?相比传统的webserver服务模式,nodejs有什么优点 ...
- WebSocket 是什么原理?为什么可以实现持久连接
你可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计.在以前 HTTP 协议 ...
- js截取指定字节长度的字符串
默认的截取字符串都是根据字符长度或位置截取的,典型的两个方法是substr和substring. 这样导致的问题是截取同样长度的字符串时,多字节字符(汉字等)和单字节字符(半角英文字母.半角数字)占的 ...
- java异步操作实例
1.异步操作过程实例: A.开启一个线程一直执行耗时操作 B.通过每隔多长多件轮询线程是否实行完毕,thread.isCompleted() C.执行完毕后,通过回调函数返回真实信息 一个调用者在调用 ...
- 扩展 delphi 线程 使之传递参数.(给匿名线程增加参数)
新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...
- QStandardItemModel简单好用,QTableView带进度条
类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据.与此不 ...