拦截delphi上的提示事件

拦截delphi上的提示事件,第1张

概述我试图在组件内部的运行时临时更改提示文本, 不改变Hint属性本身. 我试过捕捉CM_SHOWHINT,但这个事件似乎只是来了 形式,但不是组件本身. 插入CustomHint也不起作用,因为它需要文本 来自Hint属性. 我的组件是TCustomPanel的后代 这是我正在尝试做的事情: procedure TImageBtn.WndProc(var Message: TMessage);be 我试图在组件内部的运行时临时更改提示文本,
不改变Hint属性本身.

我试过捕捉CM_SHOWHINT,但这个事件似乎只是来了
形式,但不是组件本身.

插入CustomHint也不起作用,因为它需要文本
来自Hint属性.

我的组件是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指令.无论如何,我在这个答案中的方式更清晰.

总结

以上是内存溢出为你收集整理的拦截delphi上的提示事件全部内容,希望文章能够帮你解决拦截delphi上的提示事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存