我有一个TListView(在报告模式下),我在虚拟模式下使用(OwnerData:= True).除了我知道的自动自动调整列的两种情况之外,一切都很好.他们是:
在虚拟模式下这些事件的默认处理并不真正起作用(它似乎在第一行数据上自动调整.)我想挂钩行为并自己进行列自动调整.有谁知道这是怎么做到的吗?或许我错过了一些明显的东西?我正在使用Delphi XE.谢谢你的任何建议.
虚拟列表视图控件的自动调整列大小是使用执行自动调整大小操作时可见的所有项目来执行的。这就是 Delphi 控件的行为TListView。尝试在资源管理器中执行相同的操作,您可以很容易地看到这是操作系统标准。
当您在非虚拟模式下操作列表视图时,在执行自动调整大小时会考虑所有行的内容。
我不确定为什么您观察到自动调整大小仅占第一行数据。如果这确实发生在您身上,那么我认为您的代码中一定存在我们需要查看的错误。
您的问题似乎是 Windows XP 的错误。据我所知,虚拟列表视图在 XP 上无法正确执行自动调整大小。我认为资源管理器在 XP 和 Vista 之间从非虚拟切换到虚拟,我不介意打赌资源管理器团队有足够的内部影响力来解决问题。
据我所知,您没有收到有关自动调整大小的通知,因此我认为您可能很难解决该问题。如果您想进一步追求这一点,那么您可以尝试响应HDN_DIVIDERDBLCLICK标题控件和列表的通知CTRL +。然而,我不确定这种方法是否会带来任何快乐。
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |