Windows和Delphi中的提示

6
今天早上我决定向您寻求帮助。我的问题是,在我的Delphi应用程序中根本没有显示提示信息... 我已经阅读了关于THintAction问题的文章,还阅读了指南/教程/手册,并尝试通过手动触发Hint窗口(触发事件处理程序)来调用,但都没有成功。它们就是不显示。 我已经想尽了办法...
我尝试过:在组件、表单、事件处理程序上设置父级showhints,以及application activatehint()...
除了API调用之外,是否有其他方法可以解决这个问题?

2
你使用任何非标准库吗?我曾经遇到过同样的问题,结果发现是第三方组件劫持了提示管理。 - Uwe Raabe
嗯���可能是这样,但需要一些研究。我会考虑的!谢谢你的提示... - HX_unbanned
7个回答

6

首先,您使用的Delphi版本是什么?

其次,我建议您尝试从头开始创建一个简单的应用程序,只有一个窗体和一个工具按钮(或任何其他可以显示提示的控件),启用ShowHints,并查看是否会显示。如果在这样一个非常简单的应用程序中您没有得到提示,则建议您重新安装Delphi,也许您的安装有问题...


不行,就像我之前尝试过的那样 - 无论是在运行时还是在设计时,任何属性都不会调用提示窗口......另外,我以前也遇到过这个问题,重新安装可以解决,但我真的想避免这种情况..... - HX_unbanned
1
如果在最简单的级别上你无法显示提示,我会猜想你的安装或环境出了大问题。 - Roee Adler
糟糕。嗯,好的,得重新安装...看起来解决方案可能会非常硬编码且不可靠,:( - HX_unbanned
1
我放弃了 - 这就是原因。解决方案是直接干预操作系统API,但我对Hints的了解不多。此外 - 网上有一些基于WinAPI的解决方案,但这会使我的应用程序变得过于庞大,所以我决定在将来有更多时间专注于GUI时再添加Hints ... 或者甚至永远不实现。基本上很简单 - 我可以创建StringList并通过Index / Tag / Label / Sender加载必要的Hont,但如果对象浏览器中有特殊属性,即使IDE中存在某些错误,这也太糟糕了... - HX_unbanned

3

我敢打赌你正在使用XP系统,并且你的安装是相当老旧的。

我的一个朋友在他的机器上遇到了完全相同的问题。他的机器上没有显示任何VCL提示。这包括他构建的应用程序、他使用的Delphi IDE(记得是7版本),以及他的机器上任何其他使用Delphi构建的应用程序。因此,我们推断是他的WinXP系统出了问题,因为它已经运行了2年,里面充满了很多垃圾(最有可能是他在某个时候安装的某个应用程序,在某些时候挂钩消息,导致这种奇怪的行为)。你的情况也可能是这样。

另外一个有趣的点是 - 如果你将Application.HintPause设置为低值,例如100-200,提示会显示出来。你也可以尝试一下。


是的,它运行了。终于!但我想指出可能会有半秒延迟或略少于一秒钟的消息钩子/拦截 :) 我注意到的一件事是,当我使用 SE PC Suite 5.0 与我的手机编写代码时,有时我的桌面以大约一秒的间隔不停地刷新。可能有些服务简单地使用某些特定的消息,导致提示窗口被“覆盖”,或者通知模块被该服务锁定....我开始认为我们应该就此进行一些错误报告/反馈... - HX_unbanned
对我也有用!我的应用程序在许多机器上运行,但只有一个没有显示提示。将Application.HintPause设置为“100”解决了问题。谢谢! - pbu

1
你尝试过在项目文件中添加Application.ShowHint吗?
项目文件应该看起来像这样。
begin
  Application.Initialize;
  Application.ShowHint := True;
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.

1
不要感到沮丧。如果你只提到了应用程序,那么就无法知道你是否尝试了我建议的方法。 - Lieven Keersmaekers
哦,抱歉,我并不是想表达沮丧的情绪。只是这个提示错误开始让我有点烦了…… - HX_unbanned
不会有任何冒犯,相信我,我知道你的意思。 - Lieven Keersmaekers

1
我在Delphi-5上遇到了一个问题:“运行时应用程序无法在鼠标悬停时显示提示信息”。但我的其他应用程序却可以正常工作。
经过追踪,我发现问题出在以下设置上: 项目|选项|编译器|调试|使用调试DCUs 这个选项被勾选了,取消勾选并重新编译后,提示信息就可以正常显示了。

1

我也遇到了我的电脑(win10)无法显示由Delphi 7制作的应用程序提示的问题。 在.dpr文件中加入以下行后,它又可以正常工作了: 100是一个神奇的数字,500或1000不起作用。

begin
  Application.Initialize;
  Application.ShowHint := True;
  Application.HintPause:=100;
  Application.Run;
end.

0

好的 - 由于我最近升级到2010版本(14.x),我终于确定这个提示问题是IDE中的错误。

唯一的解决方案是: - 更改HintPause属性 - 尝试重新安装IDE


0
一些提示:
  • 检查您或其他组件/单元是否设置了自定义提示类。如果是,请找到该组件/单元并将其删除。
  • 使用Debug DCUs编译应用程序,并在Forms.pas中适当的位置设置断点。然后逐步执行代码并查看发生了什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接