关于delphi:TopenDialog / TSaveDialog与所有者绘制的项目

TopenDialog/TSaveDialog with owner-drawn items

我想实现传统的打开和保存对话框(要处理的基础项目是文件),但是我想控制显示的内容来代替文件名,并包括一些图形-即,我需要一个对话框的" ownerdraw"样式。除了那方面,我希望对话框的外观和感觉尽可能类似于传统的打开/保存对话框。

我认为自己要自己实现这一目标,我只是想知道最好的起点是哪里。


AFAIK标准Windows对话框没有提供您需要的自定义级别,但是您可以尝试TShellListView(TCustomShellListView)组件,它是ShellCtrls单元的一部分(该软件包未通过以下方式安装在Delphi IDE中:默认值),您可以从此处获取代码以使用文件夹内容填充自己的TListview并根据需要绘制项目,还可以查看Shell Interfaces与shell元素进行交互。


要让所有者绘图控件用作列表视图,我建议使用Roy Klever的rkSmartView。

http://rmklever.com/?page_id=299

Roy在上面的博客上发布的演示应用程序包含一个相当不错的图形缩略图浏览器示例,可以将其变成您正在做的事情的核心。他添加了评级"星级"和其他由所有者绘制的装饰。

http://rmklever.com/?p=318

使用诸如TListView之类的标准通用控件的所有者充满局限性。如果您想让所有者绘制全部或部分控件,则完全确定内部控件是完全虚拟的控件,并且内部提供了100%的源代码,并且提供了100%的源代码是确保您不会碰壁或以98%的比例结束的唯一方法您无法一路带回家的解决方案。

我最近通过修改上述组件做了类似的事情,结果很好。