Delphi笔记-自定义提示窗口
unit pbHint; interface uses
Windows, Controls, Forms, Graphics; type
TPBHint=class(THintWindow) //要自定义提示窗口类,必须从THintWindow类继承
private
FRegion:THandle; //保存当前提示窗口的区域句柄,用来设置窗口的形状
procedure FreeCurrentRegion; //释当前的区域句柄
procedure SetRegion(Rect:TRect);
public
Destructor Destroy;override; //复盖析构函数
procedure ActivateHint(Rect:TRect;const AHint:String);override; //复盖该方法,在提示窗口弹出前,设置窗口的形状
procedure CreateParams(var params:TCreateParams);override; //复盖该方法,去掉WS_Border属性
procedure Paint;override; //复盖该方法,改变画笔的颜色,然后再画出提示内容
end; implementation { TPBHint } procedure TPBHint.ActivateHint(Rect: TRect; const AHint: String);
begin
with Rect do
begin
Right:=Right+Canvas.TextWidth('WWWW'); //这一句是为了让提示窗口的宽度增大4个字符
Bottom:=Bottom+Canvas.TextHeight('WWWWWW');
end;
SetRegion(Rect);
inherited;
end; procedure TPBHint.CreateParams(var params: TCreateParams);
begin
inherited;
params.Style:=params.Style and (not WS_BORDER);
end; destructor TPBHint.Destroy;
begin
FreeCurrentRegion;
inherited;
end; procedure TPBHint.FreeCurrentRegion;
begin
if FRegion<> then
begin
SetWindowRgn(Self.Handle,,true);
DeleteObject(FRegion);
FRegion:=;
end;
end; procedure TPBHint.Paint;
var tempRect:TRect;
begin
tempRect:=ClientRect;
Inc(tempRect.top,);
Canvas.Font.Color:=clRed;
Canvas.Brush.Color:=clWhite;
DrawText(Canvas.Handle,PChar(Caption),Length(Caption),tempRect,DT_NOPREFIX or DT_WORDBREAK or DT_CENTER or DT_VCENTER);
end; procedure TPBHint.SetRegion(Rect: TRect);
var tempRgn:HRGN;
begin
BoundsRect:=Rect;
FreeCurrentRegion;
with BoundsRect do
begin
FRegion:=CreateRoundRectRgn(,,Width,Height,,);
tempRgn:=CreateRectRgn(,,Width div -,);
CombineRgn(FRegion,FRegion,tempRgn,RGN_DIFF);
tempRgn:=CreateRectRgn(Width div +,,Width,);
CombineRgn(FRegion,FRegion,tempRgn,RGN_DIFF);
end;
if FRegion<> then
SetWindowRgn(Self.Handle,FRegion,true);
end; initialization
Application.ShowHint:=false; //先禁止提示窗口
HintWindowClass:=TPBHint; //将自定义的提示窗口类赋值给全局变量HintWindowClass,就可以替换掉原来的提示窗口了
Application.ShowHint:=true; //开启提示窗口
Application.HintColor:=clBlue; //改变提示窗口的背景颜色 end.
Delphi笔记-自定义提示窗口的更多相关文章
- delphi笔记之nativeXml 转
delphi笔记之nativeXml 使用 CreateName 建立可直接指定根节点的名称 var XmlDoc: TnativeXml; Node:TxmlNode; Begin XmlDoc ...
- iOS学习笔记-自定义过渡动画
代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...
- html5+css3+javascript 自定义提示窗口
效果图: 源码: 1.demo.jsp <%@ page contentType="text/html;charset=UTF-8" language="java& ...
- Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)
刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目 ...
- delphi 可以自定义边框的文本框TSkinNormalEdit思路(QQ2011风格)
需求: QQ我的资料中基本资料窗体中的文本框: 正常状态下,文本框只有一条看起来只有一个像素的边框,边框的颜色从上到下由深到浅的渐变,当鼠标定位到该文本框时,其边框会变粗,而且边框的颜色加亮显示 如下 ...
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
- iOS阶段学习第33天笔记(自定义标签栏(UITabBar)介绍)
iOS学习(UI)知识点整理 一.自定义标签栏 1.方法一 单个创建标签栏 #import "AppDelegate.h" #import "SecondViewCont ...
- AngularJS笔记--自定义指令
在前端开发中, 我们会遇到很多地方都会用到同一种类型的控件.AngularJS提供了自定义指令功能,我们可以在指令里面定义特定的html模板.提供给前台html调用. 一. 指令的简单定义. 下面定 ...
- JavaScript学习笔记-自定义集合类
//集合类Set( ES6标准才有的类,目前兼容性较差)//自定义集合类:extend = function (o,p){ //定义一个复制对象属性的类函数 for(var x in p){ o[x] ...
随机推荐
- PHP常用函数总结(二):
//=================图像处理=================================== //=================会话机制================== ...
- php curl模拟登录(半转载)
参考:http://our2848884.blog.163.com/blog/static/146854834201282039334/ php curl模拟登录 参考:http://blog.c ...
- FPGA配置方式
FPGA有多种配置/加载方式.粗略可以分为主动和被动两种.主动加载是指由FPGA控制配置流程,被动加载是指FPGA仅仅被动接收配置数据. 最常见的被动配置模式就是JTAG下载bit文件.此模式下,主动 ...
- 2013-7-28 802.11n帧聚合
芯片开发阶段的帧聚合迥异于商用AP,前者更偏向实现过程,后者偏向结果.也就是说用户在使用商用设备时不会管你特性是如何实现的,他们只关心效果,开启这个功能能否实实在在的提高AP的吞吐量. 网上搜索了众多 ...
- spring boot学习(6) SpringBoot 之事务管理
两个操作要么同时成功,要么同时失败: 事务的一致性: 以前学ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作: 用来 ...
- HDU 2066 一个人的旅行 (Dijkstra算法)
一个人的旅行 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- 夜神模拟器+seleinm抓取手机app(参考资料集合)
目前准备开始实现这个技术,将看起来还算可靠的参考链接粘贴如下: http://www.cnblogs.com/puresoul/p/4597211.html https://www.cnblogs.c ...
- HSSF NPOI 颜色
using System; using System.IO; using System.Windows.Forms; using NPOI.HSSF.UserModel; using NPOI.SS. ...
- Splunk 交流
1. 初识splunk Splunk Enterprise Splunk Free Splunk Universal Forwarder,通用转发器
- [UE4]射中机器人