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

Maw*_*awg 5 delphi

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

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


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

看起来我的问题的简短回答是"不".

Kro*_*ica 11

据我所知 - 答案是"不".

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

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

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

TForm使用TMemoTLabel上面和公众进行自定义procedure AppendLog(aMsg: string);是10分钟,比您在搜索上花费的时间要短得多,绝对更适合您的使用场景.

  • 我是第二个回答.我使用自定义日志表单类来处理网格中的消息,还显示有关正在运行的后台操作的统计信息.但是您可以在这种类型的表单上放置任何类型的组件和UI,这不是一个复杂的解决方案. (3认同)
  • @JerryDodge:"接受"某些人"请解释这个.我暗示的是,Mawg可以按照他需要的方式设计,毕竟,他想要一个独立的MessageBox开始.使用自定义表单,他可以像无边框TMemo一样简单,或者使用带有铃声和口哨声的完整的Grid-Tree-ScrollBox. (2认同)

Sil*_*ior 6

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

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


Rud*_*uis 5

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

  • 请注意,如果您不显示任何形式的"模态",则该形式中按钮的模态结果将不起作用.IOW,如果你没有显示模态,你不能通过点击它的按钮来关闭`CreateMessageDialog`返回的表格. (6认同)