拦截delphi上的提示事件
发布时间:2020-12-15 09:43:08 所属栏目:大数据 来源:网络整理
导读:我试图在组件内部的运行时临时更改提示文本, 不改变Hint属性本身. 我试过捕捉CM_SHOWHINT,但这个事件似乎只是来了 形式,但不是组件本身. 插入CustomHint也不起作用,因为它需要文本 来自Hint属性. 我的组件是TCustomPanel的后代 这是我正在尝试做的事情: pro
我试图在组件内部的运行时临时更改提示文本,
不改变Hint属性本身. 我试过捕捉CM_SHOWHINT,但这个事件似乎只是来了 插入CustomHint也不起作用,因为它需要文本 我的组件是TCustomPanel的后代 这是我正在尝试做的事情: procedure TImageBtn.WndProc(var Message: TMessage); begin if (Message.Msg = CM_HINTSHOW) then PHintInfo(Message.LParam)^.HintStr := 'CustomHint'; end; 我在互联网上找到了这个代码,不幸的是它不起作用. 解决方法
CM_HINTSHOW确实正是您所需要的.这是一个简单的例子:
type TButton = class(Vcl.StdCtrls.TButton) protected procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; end; TMyForm = class(TForm) Button1: TButton; end; .... procedure TButton.CMHintShow(var Message: TCMHintShow); begin inherited; if Message.HintInfo.HintControl=Self then Message.HintInfo.HintStr := 'my custom hint'; end; 问题中的代码无法调用inherited,这可能是失败的原因.或者类声明省略了WndProc上的override指令.无论如何,我在这个答案中的方式更清晰. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |