【问题标题】:Windows and Hints in DelphiDelphi 中的窗口和提示
【发布时间】:2010-11-07 20:52:01
【问题描述】:

今天早上我终于下定决心,决定向你寻求帮助。问题是在我的 Delphi 应用程序中根本没有显示任何提示...... 我已阅读有关 THintAction 问题的信息,已阅读指南/教程/手册,尝试手动调用提示窗口(触发事件处理程序),但没有任何效果。他们只是不显示。 我的想法已经用完了...

我尝试过:在组件、表单、事件处理程序、应用程序 activatehint() 上设置父显示提示...

还有其他方法可以做到这一点(当然,API 调用除外)?

【问题讨论】:

  • 您使用任何非标准库吗?我曾经遇到过同样的问题,结果证明是第 3 方组件劫持了提示管理。
  • 嗯,可能是,但它需要一些研究。我会考虑的!感谢您的提示...

标签: windows delphi


【解决方案1】:

我也遇到我的电脑(win10)无法显示我的应用程序(由 Delphi 7 制作)的提示。 将以下行放入 .dpr 文件后再次工作: 100 是幻数,500 或 1000 不起作用。

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

【讨论】:

    【解决方案2】:

    我刚刚在 Delphi-5 上遇到过这个问题,“运行时应用程序不会在鼠标悬停时显示提示”。 它在我的其他应用程序上运行良好。

    我已经追踪到以下内容: 项目|选项|编译器|调试|使用调试 DCU 这已被选中,取消选中并重新编译会启用我的提示。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我敢打赌,您使用的是 XP,而且您的安装相当旧。

        我的一个朋友在他的机器上遇到了这个确切的问题。他的机器上没有出现任何 VCL 提示。这包括他构建的应用程序、他使用的 Delphi IDE (7 afaicr) 以及他在他的机器上拥有的任何其他 Delphi 构建的应用程序。因此,我们得出结论,指责他的 WinXP 实例在过去 2 年中一直在运行,其中包含大量垃圾(很可能是他安装的某个应用程序在某个时候挂钩了消息,导致了这种奇怪的行为)。你的情况也可能如此。

        ps。另一个有趣的点 - 如果您将 Application.HintPause 设置为 100-200 之类的低值,则会显示提示。您可能也想尝试一下。

        【讨论】:

        • 是的,它奏效了。最后!另外我想指出,它可能会在半秒延迟或不到一秒的情况下进行蜜蜂消息挂钩/拦截 :) 我可能注意到的是,当我使用 SE PC Suite 5.0 时,有时我的桌面会以大约秒的间隔不间断地刷新写代码时我的手机。 ii 可能某些服务只是使用一些特定的消息导致提示窗口被“绘制”或通知模块被服务锁定..我开始认为我们应该对此进行一些错误报告/反馈.. .
        • 也为我工作!我的应用程序在多台机器上运行,但只有一台没有显示提示。将 Application.HintPause 设置为“100”修复了它。谢谢!
        【解决方案5】:

        一些提示:

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

        【讨论】:

          【解决方案6】:

          您是否尝试将 Application.ShowHint 添加到您的项目文件中?

          项目文件将如下所示

          begin
            Application.Initialize;
            Application.ShowHint := True;
            Application.CreateForm(TfrmMain, frmMain);
            Application.Run;
          end.
          

          【讨论】:

          • 无需沮丧。如果您只提到应用程序,则无法知道您已尝试过我的建议。
          • 哦,对不起,我不是这个意思。只是这个提示错误开始让我有点生气......
          • 无意冒犯,相信我,我明白你的意思。
          【解决方案7】:

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

          其次,我建议您尝试从头开始创建一个简单的应用程序,只需一个表单并说出一个工具按钮(或任何其他可以显示提示的控件),激活 ShowHints,然后查看它是否显示。如果在这样一个非常简单的应用程序上您不会得到任何提示,我建议您重新安装 Delphi,也许您安装中的某些东西搞砸了......

          【讨论】:

          • 不,正如我之前尝试过的那样 - 来自 runetime 和 designtime 的任何属性都不会调用提示窗口......另外 - 我之前遇到过这个问题并且重新安装有帮助,但我真的想避免它。 ...
          • 如果在最简单的层面上你不能显示提示,我猜你的安装或环境真的搞砸了。
          • 废话。嗯,好的,必须重新安装......似乎该解决方案将是非常硬编码且不可靠的,:(
          • 我放弃了——这就是原因。解决方案是直接干扰OS API,但我对Hints了解不多。此外 - Web 中基于 WinAPI 的解决方案很少,但它会使我的应用程序变得很大,所以我决定添加提示,当我比现在有更多时间专注于 GUI 时......甚至永远不会实现。在基础上它非常简单 - 我可以创建 StringList 并通过索引/标签/标签/发件人加载必要的Hont ...无论如何,但如果对象浏览器中有特殊属性,即使有一些错误,它只是一种跛脚在 IDE ...