Delphi XE4折叠的ListView组

Delphi XE4折叠的ListView组,delphi,listview,delphi-xe4,Delphi,Listview,Delphi Xe4,我有一个TListView,有两列,每列都自动调整大小。一旦我将项目添加到组中,组就会崩溃(lgsCollapsed)。不幸的是,由于ListView中的错误对齐,这看起来有点“丑陋”: 它会自动“隐藏”小[+/-]开关,我不知道为什么。 我甚至不确定这是故意的还是只是一个bug。。。 当我在运行时更改Listview的大小(宽度)时,它会重新调整,切换会恢复正常(或者当我移动滑块时)。添加新项目后,如何重新对齐/恢复小切换?您正在自动调整列的大小,因此组中可能有一个项目使列的大小超出您的需要

我有一个
TListView
,有两列,每列都自动调整大小。一旦我将项目添加到组中,组就会崩溃(
lgsCollapsed
)。不幸的是,由于ListView中的错误对齐,这看起来有点“丑陋”:

它会自动“隐藏”小[+/-]开关,我不知道为什么。 我甚至不确定这是故意的还是只是一个bug。。。
当我在运行时更改Listview的大小(宽度)时,它会重新调整,切换会恢复正常(或者当我移动滑块时)。添加新项目后,如何重新对齐/恢复小切换?

您正在自动调整列的大小,因此组中可能有一个项目使列的大小超出您的需要。添加组/项后,您可以根据需要调整
TListColumn.Width
,以确保列不超过ListView的客户端区域。调用
GetSystemMetrics(SM_CXVSCROLL)
获取垂直滚动条的宽度,并从
TListView.ClientWidth
值中减去该宽度,然后循环通过
TListView.Columns
(或者只访问最后一个
TListColumn
)根据需要调整每列的
宽度
,以便所有宽度的总和不超过计算的客户区。

谢谢您的回答:)在我的情况下,诀窍是访问Listview的宽度并将其设置为0。由于
alClient
它重新调整得很好:)Remy,存在VCL错误,如果只更改了可见项的数量,则禁止LV重新调整,因此如果使用自动调整大小的列,则会出现错误结果(dis)滚动条。但它可以在调试2小时后修复-参见上面的qc ref;-)不自动调整大小以摆脱h-滚动条可以修复(qc 85132)。不知道这是否会影响崩溃,甚至是它是什么:-)