我想实现传统的打开和保存对话框(以及正在处理的底层项目是文件),但我想控制显示的内容来代替文件名,并包含一些图形 - 即我需要一个“ownerdraw”对话风格。除了这方面,我希望对话框的外观和感觉尽可能像传统的打开/保存对话框。
我想我自己也面临着实现这个,我只是想知道最好的起点是哪里。
我想实现传统的打开和保存对话框(以及正在处理的底层项目是文件),但我想控制显示的内容来代替文件名,并包含一些图形 - 即我需要一个“ownerdraw”对话风格。除了这方面,我希望对话框的外观和感觉尽可能像传统的打开/保存对话框。
我想我自己也面临着实现这个,我只是想知道最好的起点是哪里。
AFAIK 标准窗口对话框不提供您需要的自定义级别,但您可以尝试作为TShellListView
ShellCtrls 单元一部分的 (TCustomShellListView) 组件(默认情况下,此包未安装在 Delphi IDE 中),从这里您可以获取代码以使用文件夹内容填充您自己的 TListview 并根据需要绘制项目,还可以查看Shell Interfaces
与 shell 的元素交互的代码。
对于用作列表视图的所有者绘制控件,我会推荐 Roy Klever 的 rkSmartView。
http://rmklever.com/?page_id=299
Roy 在上面的博客上发布的演示应用程序包含一个相当不错的图形缩略图浏览器示例,它可以变成您正在做的事情的核心。他添加了评级“星级”和其他各种业主绘制的装饰。
所有者使用像 TListView 这样的标准通用控件充满了限制。如果您想拥有控件的全部或部分内容,那么 100% 内部绘制并提供 100% 源代码的完全虚拟控件是确保您不会碰壁或最终得到 98% 解决方案的唯一方法你不能一路带回家。
我最近通过修改上述组件做了类似的事情,结果很好。