【问题标题】:How can I make the 'Showmessage' dialog wider so it fits the text?如何使“Showmessage”对话框更宽以适合文本?
【发布时间】:2015-10-23 12:43:07
【问题描述】:

我正在使用“Showmessage”(在 Win 7 中)显示文件的保存位置。 当文件路径很长时,它会被截断并插入省略号。 例如 路径

C:\Users\Admin\Documents\SubFolderOne\AnotherSubFolder\MyFile.csv

显示为

C:\Users\Admin\Documents\SubFolderOne\Ano...\MyFile.csv

有没有办法让消息框变宽并显示所有文件名和路径?

我读过这个 http://zarko-gajic.iz.hr/displaying-long-non-breakable-text-file-path-in-messagedlg-truncationellipsis-issues/ 这解释了一些推理并为 TTaskDialog 提供了一个相当不令人满意的方法,我也意识到我可以让自己的表单以与 Showmessage 相同的方式运行,但我想知道是否有一个更简单的解决方案只使用 Showmessage。

【问题讨论】:

  • 把你的字符串分成几行,比如Copy(s, 1, 32) + ' ... '#13 + Copy(s, 33, Length(s))
  • 我猜可能。为了使它看起来整洁,虽然我必须在路径中找到适合消息窗口中一行的最后一个反斜杠并将其拆分在那里,但它仍然不会像单个文件名和路径那样读取跨度>
  • 设计自己的表单而不是使用ShowMessage;这种形式可以做任何你想做的事情。您可以创建自己的函数来接受字符串、创建表单并以您喜欢的任何方式显示字符串。
  • 在此处查看关于 TTaskDialog 的出色答案:stackoverflow.com/questions/4979556/how-to-use-the-ttaskdialog

标签: delphi dialog


【解决方案1】:

在 ShowMessage 之前放置:

UseLatestCommonDialogs:= false;

我使用的是 Delphi 10.2,它可以工作。

【讨论】:

  • 有人可能想将该行放入.dpr 文件中;因为UseLatestCommonDialogsVcl.Dialogs.pas 中的一个全局变量,所以一旦更改它就会影响整个应用程序。恕我直言,这是摆脱那个讨厌的缩写“功能”的绝对最快的方法。
【解决方案2】:

仅使用ShowMessage 是更简单的解决方案吗?

没有。

我能想到三种明显的方法,尽管毫无疑问还有更多。

创建您自己的对话框

对话没有什么特别神奇的地方。您可以自己完美地创建它们,因此可以完全控制它们的外观。当然,缺点是很难匹配原生平台的外观。尤其是考虑到您通常希望支持的所有不同 Windows 版本时。

使用 CreateMessageDialog 并自定义此 Delphi 表单

您可以调用 RTL 函数CreateMessageDialog 来获得一个可用于显示您的消息对话框的 Delphi 表单。然后,您就有机会以任何您喜欢的方式自定义此对话框。

使用任务对话框 API

在 Vista 中引入的任务对话框 API 提供了对对话框宽度的控制。调用TaskDialogIndirect,并为cxWidth 指定一个非零值。

【讨论】:

  • 谢谢。正如我在帖子中提到的那样,我确实考虑了这些选项,并且我已经非常频繁地制作了自己的自定义对话框。我的问题确实与 Showmessage 相关,以及是否有一些属性或方法可以用来改变它的外观。
  • 这很简单。答案是不。这样的答案往往不太受欢迎,所以我扩展了。
  • 那么,我们回答你的问题了吗?
  • 从某种意义上说,我问“我可以吗”,而您回答“否”,那么是的,您已经回答了,谢谢!我会像往常一样制作自己的表格。很抱歉延迟接受,但我发现浏览网站并不容易,有时会忘记自己的帖子,所以我看不到是否有人回答。
  • 最简单快捷的解决方案是Petrus' - 见下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2017-09-06
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
  • 2021-11-02
  • 2020-02-25
相关资源
最近更新 更多