Delphi实现菜单项上出现提示
type
TMenuHintWindow = class(THintWindow)
private
FTimerShow: TTimer;
FTimerHide: TTimer;
procedure TimerShowTimer(Sender: TObject);
procedure TimerHideTimer(Sender: TObject);
procedure ApplicationHint(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end; constructor TMenuHintWindow.Create(AOwner: TComponent);
begin
inherited;
FTimerShow := TTimer.Create(nil);
FTimerShow.OnTimer := TimerShowTimer;
FTimerShow.Interval := Application.HintPause;
FTimerShow.Enabled := False; FTimerHide := TTimer.Create(nil);
FTimerHide.OnTimer := TimerHideTimer;
FTimerHide.Interval := Application.HintHidePause;
FTimerHide.Enabled := False;
Application.OnHint := ApplicationHint;
end; destructor TMenuHintWindow.Destroy;
begin
if Assigned(FTimerShow) then FTimerShow.Free;
if Assigned(FTimerHide) then FTimerHide.Free;
inherited;
end; procedure TMenuHintWindow.ApplicationHint(Sender: TObject);
var
vHandle: THandle;
vClassName: array[..] of Char;
begin
TimerHideTimer(FTimerHide);
if Application.Hint <> '' then
begin
vHandle := WindowFromPoint(Mouse.CursorPos);
GetClassName(vHandle, vClassName, SizeOf(vClassName));
if not SameText('#32768', vClassName) and
(HTMENU <> SendMessage(Handle, WM_NCHITTEST, ,
MakeLong(Mouse.CursorPos.X, Mouse.CursorPos.Y))) then
Exit;
FTimerShow.Enabled := True;
FTimerHide.Enabled := True;
end;
end; procedure TMenuHintWindow.TimerHideTimer(Sender: TObject);
begin
ReleaseHandle;
FTimerShow.Enabled := False;
FTimerHide.Enabled := False;
end; procedure TMenuHintWindow.TimerShowTimer(Sender: TObject);
var
vRect: TRect;
begin
if Application.Hint <> '' then
begin
vRect := CalcHintRect(MaxInt, Application.Hint, nil);
OffsetRect(vRect, Mouse.CursorPos.X + , Mouse.CursorPos.Y + );
ActivateHint(vRect, Application.Hint);
end;
TTimer(Sender).Enabled := False;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
TMenuHintWindow.Create(Self);
end;
Delphi实现菜单项上出现提示的更多相关文章
- 建立CMenu菜单项,实现选中菜单项点击左键响应事件
这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项: CMenu menu; VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项 m ...
- TortoiseSVN菜单项功能说明
TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...
- 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询
前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...
- 配置Delphi工具菜单 转
配置Delphi工具菜单 Delphi工具菜单是可配置的.缺省时,Delphi Tools工具菜单的菜单项为[Database Desktop].[Image Editor].[Package Col ...
- 每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询
前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为Share ...
- qt之菜单项定制
qt实现菜单,简单的界面QMenu+QAction完全可以实现,在加上qss的支持,可以定制出比较美观的菜单,qt的菜单一般用在托盘.按钮和工具栏上. 当然啦,也有很多软件有比较美观的托盘菜单,比如3 ...
- Android开发 ---代码创建选项菜单、隐藏菜单项、菜单的生命周期,菜单按钮图标设置、搜索框、xml中设置子菜单
1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> < ...
- 基于electron+vue+element构建项目模板之【自定义标题栏&右键菜单项篇】
1.概述 开发平台OS:windows 开发平台IDE:vs code 本篇章将介绍自定义标题栏和右键菜单项,基于electron现有版本安全性的建议,此次的改造中主进程和渲染进程彼此语境隔离,通过预 ...
- SharePoint 2013:自定义ECB菜单项的添加
本文分别介绍了两种常用的添加ECB菜单项的方式. 声明式创建 这也是微软最佳实践推荐的方式.在VS中创建一个SharePoint空解决方案,并添加一个“空元素”类型的SPI. 在Elements.xm ...
随机推荐
- WSDL 文档-一个简单的 XML 文档
WSDL 文档是利用这些主要的元素来描述某个 web service 的: <portType>-web service 执行的操作 <message>-web service ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎
文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thym ...
- lftp的安装
lftp的安装 安装依赖的包 yum -y install make readline-devel gnutls* 解压上传的包 tar -jxf lftp-4.0.1.tar.bz2 cd到解压 ...
- Android 1.5-7.0(持续更新)安全机制一览
Android 1.5 ProPolice to prevent stack buffer overruns (-fstack-protector),在缓冲区buffer与返回地址之间加入Canary ...
- Buildroot lmbench使用方法
/********************************************************************** * Buildroot lmbench使用方法 * 说明 ...
- 归并排序merge_sort
将区间递归分解,直到区间只有2个元素,然后比较大小,排序,等递归回来的时候就将排序好的子区间再排序合并....一直排序合并,最后就排序完成了. (可以做范围大的逆序数的题) #include < ...
- CodeForces - 710F:String Set Queries (二进制分组 处理 在线AC自动机)
ou should process m queries over a set D of strings. Each query is one of three kinds: Add a string ...
- 20155219 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验内容及步骤 1.使用JDK编译.运行简单的java程序 先在命令行中按老师要求输入,之后编译运行,如下图. 具体代码如下: package src.shiyan1; import java.u ...
- git 应用
git - 简易指南 助你开始使用 git 的简易指南,木有高深内容,;). 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹, ...
- JOISC2019 简要题解
第18回 日本情報オリンピック 春合宿 オンラインコンテスト (JOISC2019) 官网 Day 1 試験 (Examination) description 有\(N\)个学生,每个学生有两科成绩 ...