2009-12-04 95 views
0

我想更新TListView中的值。我tryed这更新TListView项目

... 
lvProcess : TListView; 
liEdit : TlistItem; 
... 
    liEdit:=lvProcess.Items.Item[1]; 
    liEdit.Caption:='11'; 
    liEdit.SubItems.ValueFromIndex[0]:='22'; 
    liEdit.SubItems.ValueFromIndex[1]:='33'; 
... 

这应该做我想做的,但在此之后,该子项的值是这个的人“= 22”和“= 33” 我不想被添加等号做。

任何人都可以帮助我吗?我不知道这是编辑/更新列表项

感谢

+0

重复http://stackoverflow.com/questions/1293112/how-to-change-a-subitem-in-a-listview - 请在您提出一个新问题之前进行搜索。 – mghie 2009-12-04 14:40:39

+0

@mghie:尽管有相似之处,但这不是您所链接问题的重复。 – 2009-12-06 00:43:22

+0

你有一个你应该做什么的例子;我会解释出了什么问题。 TStringList(_SubItems是TStringList_)的一个特性就是它可以存储'name = value'对。您的代码设置了前两个字符串中每个字符串的**值**。没有为每个字符串命名,因此您存储'= value'。 – 2009-12-06 00:50:03

回答

3

你可以尝试以下的正确方法:

with LvProcess.Items[1] do 
begin 
    Caption := '11'; 
    SubItems.Strings[0] := '22'; 
    SubItems.Strings[1] := '33'; 
end; 

如果你在这一次更新许多项目为更好地围绕在更新在这样的方式:

try 
    lvProcess.Items.BeginUpdate; 

    //Do your updates 
finally 
    lvProcess.Items.EndUpdate; 
end; 
+0

谢谢,我忘了SubItems.Strings :) – 2009-12-04 14:45:32

0

子项目是一个字符串列表,所以如果你要更新的字符串值,这样做是这样的:

SubItems[0] := '22' 
SubItems[1] := '33' 

您现在要做的方式是将TStrings用作键/值列表。当你需要时,这是TStrings的一个很好的功能,但可能不是你想要的。