【发布时间】:2009-07-02 21:58:19
【问题描述】:
在 2009 年的德尔福:
当 TListView 的 GroupView 处于活动状态时,向 TListView 添加或插入项目总是将其添加到列表的末尾,而不管索引指定为参数。当 GroupView 设置为 false 时,它会将其添加到指定的索引处。但是当它是真的时,这种行为是看不到的。
ListView2.Items.Insert(1)
上面应该在指定的索引“1”处插入项目,但总是将其添加到列表的末尾。我在这里做错了什么?
object ListView2: TListView
Left = 32
Top = 40
Width = 161
Height = 233
BorderWidth = 5
Columns = <
item
AutoSize = True
end>
DoubleBuffered = False
FlatScrollBars = True
Groups = <
item
Header = 'test'
Footer = 'aksdlkajsd;flkj'
GroupID = 0
State = [lgsNormal]
HeaderAlign = taLeftJustify
FooterAlign = taLeftJustify
Subtitle = 'adgasdfasdf'
TopDescription = 'test desc'
BottomDescription = 'adsfasdfasdf'
TitleImage = 0
ExtendedImage = 0
end
item
Header = 'test1'
GroupID = 1
State = [lgsNormal]
HeaderAlign = taLeftJustify
FooterAlign = taLeftJustify
TopDescription = 'test1 desc'
TitleImage = 1
ExtendedImage = 1
end>
HideSelection = False
IconOptions.WrapText = False
Items.ItemData = {
03D80000000500000000000000FFFFFFFFFFFFFFFF0000000000000000000000
0003740077006F00FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000
086100730064006600610073006400660000000000FFFFFFFFFFFFFFFF000000
000000000000000000057400680072006500650000000000FFFFFFFFFFFFFFFF
000000000000000000000000036F006E00650000000000FFFFFFFFFFFFFFFF00
00000000000000000000001866006F0075007200320033003300330033003300
33003300330033003300330033003300330033003300330033003300}
MultiSelect = True
GroupView = True
ParentDoubleBuffered = False
ShowColumnHeaders = False
TabOrder = 0
ViewStyle = vsReport
结束
和添加项目@索引0的代码
procedure TForm1.Button1Click(Sender: TObject);
var
oListItem: TListItem;
begin
oListItem := ListView2.Items.Insert(0);
oListItem.Caption := 'CCCCCCCC';
oListItem.GroupID := 0;
end;
感谢和问候, 帕万。
【问题讨论】:
-
还有别的东西(见我的回答)。发布您的 ListView 属性和/或代码。
-
请注意当ViewStyle = vsReport 时会出现这个问题
-
到底有没有人找到解决这个问题的方法?我尝试了所有答案,但它们不起作用!
标签: delphi delphi-2009