有一个标准的非模态消息对话框吗?

时间:2014-05-14 02:36:13

标签: delphi

我想在PC上显示可能没有参加的消息。用户可以在回来时阅读该消息。

我的应用程序的执行必须继续,所以我需要一些非模态的东西。在我开始代码之前创建新表单,我想问一下是否有类似`ShowMessage'这是非模态的。


[更新]感谢您的反馈至今。我知道如何使用表单来做,我只是想知道是否有一些东西会让我编写更少的代码。似乎没有。我将搜索VCL组件站点以查看是否有人已经倒置了这个特定的轮子。

看起来我的问题的简短答案是"没有"。

4 个答案:

答案 0 :(得分:11)

据我所知 - 答案是“不”。

没有太多使用这种非模态消息框,因为实际上,消息框意味着程序无法在没有获得用户反馈(是/否/确定/取消)或验证用户读取它的情况下继续(确定)。

在不知道其他细节的情况下,我猜你需要一个日志,而不是一堆未处理的消息框。最糟糕的情况是,如果局域网崩溃,你期望堆积多少这样的消息,或类似的东西,5,20,1000?

在其中创建另一个带有TMemo的表单,当程序需要报告某些内容时 - 显示表单并将该字符串添加到该备忘录中。因此,当用户返回时,他会看到该日志。

使用TFormTMemo制作自定义TLabel和公开procedure AppendLog(aMsg: string);只需10分钟,比您在搜索和支出上花费的时间短得多绝对更适合您的使用场景。

答案 1 :(得分:6)

如果仅向用户显示通知消息而不中断应用程序工作流,则应使用Windows气球提示。这些是弹出系统托盘上方的气球形状的消息。 使用Delphi显示它们的最简单方法是使用TTrayIcon(如果我没有弄错的话,可以从Delphi XE开始使用) http://docwiki.embarcadero.com/CodeExamples/XE5/en/TTrayIcon_(Delphi) http://docwiki.embarcadero.com/Libraries/XE5/en/Vcl.ExtCtrls.TTrayIcon

气球提示的默认行为是当用户离开PC时它们保持可见,并且仅在用户活动后隐藏一段时间。所以这几乎可以保证用户会看到消息。 您可以设置此气球提示的可见时间。 您可以创建一个自定义事件,当用户单击Balloon Tip时会触发该事件(例如,向用户提供一些选择)。 气球提示的另一个优点是,当您使用任何FullScreen应用程序(如游戏,电影播放器​​等)时,它们不会弹出。只要您离开任何这些应用程序的FullScreen模式,它们就会弹出。

答案 2 :(得分:5)

查看单元Vcl.Dialogs中的函数CreateMessageDialog。这将返回一个标准的VCL MessageDialog表单,您可以根据需要操作该表单,然后根据需要显示,模态或正常。

答案 3 :(得分:1)

您应该从JVCL查看JvDesktopAlert。它提供与TTrayIcon BallonHint类似的功能,但更具可配置性,可以显示多个(堆叠)窗口。它至少可以支持Delphi 7。