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实现菜单项上出现提示的更多相关文章

  1. 建立CMenu菜单项,实现选中菜单项点击左键响应事件

    这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项: CMenu menu; VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项 m ...

  2. TortoiseSVN菜单项功能说明

    TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...

  3. 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询

    前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...

  4. 配置Delphi工具菜单 转

    配置Delphi工具菜单 Delphi工具菜单是可配置的.缺省时,Delphi Tools工具菜单的菜单项为[Database Desktop].[Image Editor].[Package Col ...

  5. 每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询

    前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为Share ...

  6. qt之菜单项定制

    qt实现菜单,简单的界面QMenu+QAction完全可以实现,在加上qss的支持,可以定制出比较美观的菜单,qt的菜单一般用在托盘.按钮和工具栏上. 当然啦,也有很多软件有比较美观的托盘菜单,比如3 ...

  7. Android开发 ---代码创建选项菜单、隐藏菜单项、菜单的生命周期,菜单按钮图标设置、搜索框、xml中设置子菜单

    1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> < ...

  8. 基于electron+vue+element构建项目模板之【自定义标题栏&右键菜单项篇】

    1.概述 开发平台OS:windows 开发平台IDE:vs code 本篇章将介绍自定义标题栏和右键菜单项,基于electron现有版本安全性的建议,此次的改造中主进程和渲染进程彼此语境隔离,通过预 ...

  9. SharePoint 2013:自定义ECB菜单项的添加

    本文分别介绍了两种常用的添加ECB菜单项的方式. 声明式创建 这也是微软最佳实践推荐的方式.在VS中创建一个SharePoint空解决方案,并添加一个“空元素”类型的SPI. 在Elements.xm ...

随机推荐

  1. Maven项目的结构分析

    上图为简单的Maven结构,其中用src/main/resources写项目配置文件,src/main/java写项目的java文件,src/test/java写java测试类文件.

  2. Python学习笔记第十五周

    目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...

  3. [LeetCode&Python] Problem 653. Two Sum IV - Input is a BST

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  4. P2216 [HAOI2007]理想的正方形(dp+单调队列优化)

    题目链接:传送门 题目: 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表 ...

  5. java-权限修饰符的区别

    说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法. 1.Java中的四种访问修饰符:public.protected.default(无修饰符,默认) ...

  6. AC自动机自我理解和模板

    给出长度为m的文本 查询 n个单词出现的次数 用kmp 复杂度 n*m*(单词平均长度) 用字典树 复杂度 m*每次字典树遍历的平均深度) AC自动机 复杂度 m (思路可以理解为kmp+字典树 ) ...

  7. xencenter创建快照和恢复快照

    创建快照 恢复快照

  8. photoshop 笔记

    替换颜色 (图像)—(调整)—(替换颜色)—点下你想换掉的绿色----拖动下方的滑 块—(色相)拖到最大—(饱合度)调到最小----(明度)调到最大 OK 发现对你不想变色的图像稍微有点影响,但只是一 ...

  9. HTTP长连接、短连接究竟

    HTTP长连接.短连接究竟是什么?   1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用I ...

  10. ClusterControl docker 环境搭建

    ClusterControl 是一款比较强大的数据库管理平台,包含了丰富的数据库管理功能. 我们可以用来方便的进行数据管理 测试使用docker-compose 管理 环境准备 docker-comp ...