ListView麻烦添加项目和子项目
问题描述:
我想添加一些字符串到一个ListView,但我不知道字符串可以多久。ListView麻烦添加项目和子项目
例如:
mystring := 'a'+|+'b'+|+ 'c'+|+ 'd'+|+ 'e'+|+ 'f'+|+ ....... '1000 of mystr';
我炸串后,我有:
'a'
'b'
'c'
.
.
.
'1000ofmystr'
我想一个新的项目添加到ListView其中 'A' 是标题和“B '和'C'是子项目。
然后添加一个新项目,其中'D'是标题,'E'和'F'是子项目。
然后继续像这样整个字符串,即使它在爆炸数据中有数百万个子字符串。
每三个子字符串都是一个ListView项目,直到字符串耗尽。
我不知道如何做到这一点,这就是为什么我在这里问。我想要做的是这样的画面:
我需要的东西,这样的代码:
ListView1.Items.Add;
ListView1.Caption:= StrArr[0]; // id of the book number one
SubItems.Add(StrArr[1]); //its title
SubItems.Add(StrArr[2]); // its editor
ListView1.Items.Add;
ListView1.Caption:= StrArr[3]; // id of the book number two
SubItems.Add(StrArr[4]); //its title
SubItems.Add(StrArr[5]); // its editor
ListView1.Items.Add;
ListView1.Caption:= StrArr[6]; // id of the book number three
// and so on for other books for an unknown number of strings
请告诉我正确的代码来做到这一点。
答
使用一个循环,例如:
var
Item: TListItem:
i: Item;
for i := 0 to NumberOfStrings-1 do
begin
if (i mod 3) = 0 then
begin
Item := ListView1.Items.Add;
Item.Caption := StrArr[i];
end else
Item.SubItems.Add(StrArr[i]);
end;
做笔记,但是,在TListView
显示数千/数百万的项目更好地工作,如果你在虚拟模式代替(使用它时,它的OwnerData
属性设置为true)。其Items.Count
属性设置为要显示的项目数,然后利用其OnData
事件只有它要求的项目,如提供字符串:
var
NewCount: Integer;
NewCount := NumberOfStrings div 3;
if (NumberOfStrings mod 3) <> 0 then
Inc(NewCount);
ListView1.Items.Count := NewCount;
...
procedure TMyForm.ListView1Data(Sender: TObject; Item: TListItem);
var
Index: Integer;
begin
Index := Item.Index * 3;
Item.Caption := StrArr[Index];
for Index := Index+1 to Index+2 do
begin
if Index < NumberOfStrings then
Item.SubItems.Add(StrArr[Index])
else
Break;
end;
end;
+0
非常感谢。你的回答非常非常有帮助。问题解决了 – Mario
所以,尽管写的代码。什么阻止了你。 –
好吧我不知道主人做那就是那为什么我问他这样我想在图片中做什么https://s24.postimg.org/cry3s6hs5/Captussssssssre.png然后ListView1.Items.Add; ListView1.Caption:= StrArr [0];书号1 SubItems.Add(StrArr [1]); //其标题 SubItems.Add(StrArr [2]); //其编辑器 SubItems.Add(StrArr [3]);书号拖曳的编号 SubItems.Add(StrArr [4]); //其标题 SubItems.Add(StrArr [5]); //其编辑器 SubItems.Add(StrArr [6]); ///和其他书籍 UNTIL UNCKONOWN SubItems.Add(StrArr [100000000]); – Mario
这不是我们在这里。阅读[help] –