如何跳过一列并将字符串添加到listview中的另一列?

时间:2010-11-05 14:57:01

标签: delphi

我们创建一个包含5列的列表视图。在一个函数中,我们按顺序在前3个cols中添加数据。在第二个函数中,我们想要将字符串添加到第五个col。在第二功能之前,柱4可以是空白的或填充的。我们只想跳过该列并在第五列中添加数据。或者问题可以归结为检查第四个col'值。怎么检查?我们尝试了 如果listview.items [i] .SubItems.Strings [2] =''...,它将提示越界。

请提供一些建议。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

使用item.SubItems属性时,TListView中的列不能skip,但您可以为列分配空字符串。

你必须这样做:

首先在添加新TItemList时填写您的列。

item:=listview.Items.Add();
item.captiom:='Data col1';
item.SubItems.Add('Data col2'); 
item.SubItems.Add('Data col3'); 
item.SubItems.Add('');//empty
item.SubItems.Add('');//empty

然后在您的其他函数中,访问任何列以检查它是否为空或用于添加数据。

 if listview.Items.Item[0].SubItems[2]<>'' then //check if the fourth column of the listiew is empty
 listview.Items.Item[0].SubItems[2]:='Data col4' //adding the data 

答案 1 :(得分:0)

将字符串添加到listview的第一项的第五列:

ListView_SetItemText(ListView1.Handle, 0, 4, 'fifth column');


要在listview的第一项的第五列中获取字符串:

var
  ItemText: array [0..259] of Char;
begin
  ListView_GetItemText(ListView1.Handle, 0, 4, @ItemText, SizeOf(ItemText));
  ShowMessage(ItemText);


编辑请注意,这种向子项添加文本的方法会绕过某些VCL机制,例如,您可以获得'SubItem.Count'为'0'并仍然具有子项目上的文字。如果这很重要,我会使用RRUZ的方法。