【发布时间】:2012-08-20 21:23:51
【问题描述】:
我想实现传统的打开和保存对话框(以及正在处理的底层项目是文件),但我想控制显示的内容来代替文件名,并包含一些图形 - 即我需要一个“ownerdraw”样式的对话框。除了这方面,我希望对话框的外观和感觉尽可能像传统的打开/保存对话框。
我想我自己也面临着实现这一点,我只是想知道最好的起点是哪里。
【问题讨论】:
-
@Jay,我认为通用对话框不支持这个问题所要求的自定义级别。 rossmcm,我将从 TVirtualTreeView 开始;它允许轻松使用自定义图像,使用每个节点存储自定义数据,在树视图或列表视图(网格)模式下工作,并使用按需加载来减少内存使用。它是免费的,带有源代码。我手头没有当前链接,但可以通过 Google 快速搜索找到它。
-
哦,是 ListView 项。在这种情况下,将需要 Windows Hook 和子类化。
-
用什么替换文件名才有意义?
-
(@David 我知道有人会这样问;))。与其说是替换不如说是增强。例如,如果文件名引用了一个应用程序数据文件,我可以根据文件中的数据显示一个字形。另一个原因可能更具争议性。我正在考虑在文件名中允许使用非法字符 - 这样用户可以将他们的数据保存在“我的项目 ”中 - 然后我会将名称更改为“我的项目 <1>”,以便命名实际文件.然后,我将解构文件名以显示在文件加载/保存对话框中。
-
这两个都是坏主意。已经有根据内容自定义字形的方法。使用它们,所有 shell 视图都将受益,而不仅仅是在您的应用程序中。同样的文件名。如果您不向用户显示真实的文件名,他们如何通过其他方式获取该文件。不要与系统抗争,顺其自然。
标签: delphi delphi-2006 ownerdrawn topendialog tsavedialog