TopenDialog/TSaveDialog with owner-drawn items
我想实现传统的打开和保存对话框(要处理的基础项目是文件),但是我想控制显示的内容来代替文件名,并包括一些图形-即,我需要一个对话框的" ownerdraw"样式。除了那方面,我希望对话框的外观和感觉尽可能类似于传统的打开/保存对话框。
我认为自己要自己实现这一目标,我只是想知道最好的起点是哪里。
- @Jay,我不认为"通用对话框"支持此问题正在询问的自定义级别。 rossmcm,我将从TVirtualTreeView开始;它允许轻松使用自定义图像,在每个节点上存储自定义数据,在树视图或列表视图(网格)模式下工作,并按需加载以减少内存使用量。它是免费的,没有源代码。我没有当前可用的链接,但是可以通过Google进行快速搜索。
-
哦,这是ListView项。在这种情况下,将需要Windows Hook和子类化。
-
您能用什么替换一个有意义的文件名?
-
(@David,我知道有人会问这个;)。与其说是增加,不如说是增加。例如,如果文件名引用了应用程序数据文件,则可以显示依赖于文件中数据的显示字形。另一个原因可能是更具争议性的。我当时正在考虑允许文件名中使用非合法字符-这样用户可以将其数据保存在"我的项目<1>"中,然后将名称更改为"我的项目"
-
AFAIK标准Windows对话框没有提供您需要的自定义级别,但是您可以尝试TShellListView(TCustomShellListView)组件,它是ShellCtrls单元的一部分(该软件包未通过以下方式安装在Delphi IDE中:默认值),您可以从此处获取代码以使用文件夹内容填充自己的TListview并根据需要绘制项目,还可以查看Shell Interfaces与shell元素进行交互。
434511
要让所有者绘图控件用作列表视图,我建议使用Roy Klever的rkSmartView。
http://rmklever.com/?page_id=299
Roy在上面的博客上发布的演示应用程序包含一个相当不错的图形缩略图浏览器示例,可以将其变成您正在做的事情的核心。他添加了评级"星级"和其他由所有者绘制的装饰。
http://rmklever.com/?p=318
使用诸如TListView之类的标准通用控件的所有者充满局限性。如果您想让所有者绘制全部或部分控件,则完全确定内部控件是完全虚拟的控件,并且内部提供了100%的源代码,并且提供了100%的源代码是确保您不会碰壁或以98%的比例结束的唯一方法您无法一路带回家的解决方案。
我最近通过修改上述组件做了类似的事情,结果很好。
AFAIK标准Windows对话框没有提供您需要的自定义级别,但是您可以尝试TShellListView(TCustomShellListView)组件,它是ShellCtrls单元的一部分(该软件包未通过以下方式安装在Delphi IDE中:默认值),您可以从此处获取代码以使用文件夹内容填充自己的TListview并根据需要绘制项目,还可以查看Shell Interfaces与shell元素进行交互。
- 另外,请注意,这些组件中存在很多错误(至少在Delphi 2007之前,我还没有检查过更高版本)
要让所有者绘图控件用作列表视图,我建议使用Roy Klever的rkSmartView。
http://rmklever.com/?page_id=299
Roy在上面的博客上发布的演示应用程序包含一个相当不错的图形缩略图浏览器示例,可以将其变成您正在做的事情的核心。他添加了评级"星级"和其他由所有者绘制的装饰。
http://rmklever.com/?p=318
使用诸如TListView之类的标准通用控件的所有者充满局限性。如果您想让所有者绘制全部或部分控件,则完全确定内部控件是完全虚拟的控件,并且内部提供了100%的源代码,并且提供了100%的源代码是确保您不会碰壁或以98%的比例结束的唯一方法您无法一路带回家的解决方案。
我最近通过修改上述组件做了类似的事情,结果很好。