Delphi 如何制作';Showmessage';对话框是否更宽以适合文本?

Delphi 如何制作';Showmessage';对话框是否更宽以适合文本?,delphi,dialog,Delphi,Dialog,我使用“Showmessage”(在Win7中)显示文件的保存位置。 当文件路径很长时,它会被截断并插入省略号。 如 路径 显示为 C:\Users\Admin\Documents\SubFolderOne\Ano...\MyFile.csv 有没有办法使消息框更宽并显示所有文件名和路径 我读过这个 这解释了一些推理,并给出了一个不太令人满意的TTaskDialog方法,我也意识到我可以制作自己的表单,以与Showmessage相同的方式操作,但我想知道是否有一个更简单的解决方案仅使用Show

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

显示为

C:\Users\Admin\Documents\SubFolderOne\Ano...\MyFile.csv
有没有办法使消息框更宽并显示所有文件名和路径

我读过这个 这解释了一些推理,并给出了一个不太令人满意的TTaskDialog方法,我也意识到我可以制作自己的表单,以与Showmessage相同的方式操作,但我想知道是否有一个更简单的解决方案仅使用Showmessage

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

不,没有

我可以想到三种明显的方法,尽管无疑还有更多

创建自己的对话框

对话没有什么特别神奇的。您完全可以自己创建它们,因此可以完全控制它们的外观。当然,缺点是很难与本机平台的外观相匹配。特别是当您考虑所有通常支持的Windows版本时,

使用
CreateMessageDialog
并自定义此Delphi表单

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

使用任务对话框API


Vista中引入的任务对话框API提供了对对话框宽度的控制。调用
TaskDialogIndirect
,并在ShowMessage put之前为.

指定一个非零值:

UseLatestCommonDialogs:= false;

我使用Delphi10.2,它可以正常工作

将字符串拆分为几行,如
Copy(s,1,32)+'…'#13+份,33份,长度
我想可能吧。为了使它看起来整洁,尽管我必须在路径中找到最后一个反斜杠,该反斜杠将穿过消息窗口中的一行并将其拆分,但它仍然不会像单个文件名和路径那样读取,而是设计您自己的表单,而不是使用
ShowMessage
;那张表格可以做任何你想做的事。您可以创建自己的函数,该函数接受字符串,创建表单,并以您喜欢的任何方式显示字符串。正如我在帖子中提到的,我确实对这些选项进行了压缩,而且我已经非常频繁地创建了自己的自定义对话框。我的问题实际上是关于Showmessage,以及是否有一些属性或方法可以用来更改它的外观。这很简单。答案是否定的。这样的答案往往不太受欢迎,所以我扩大了范围。那么,我们当时回答了你的问题吗?从某种意义上说,我问了“我可以”而你回答了“不”,那么是的,你已经回答了,谢谢!我会像往常一样做我自己的表格。很抱歉延迟接受,但我觉得浏览网站并不那么容易,有时我会忘记自己的帖子,所以我看不出是否有人回答了。最简单、最快捷的解决方案是Petrus'-见下文。可能需要将该行放入
.dpr
文件;由于
UseLatestCommonDialogs
Vcl.Dialogs.pas
中的一个全局变量,因此一旦更改,它将影响整个应用程序。这无疑是摆脱这个讨厌的缩写“特性”的最快方法。
UseLatestCommonDialogs:= false;