当您设置 TListItem 的标题时,它似乎总是设置行中第一列的文本。当您开始在 ListView 中输入内容时,它将根据第一列的标题搜索并选择最接近的匹配项。
我遇到一种情况,我需要第一行的标题为空,但仍然需要搜索功能正常工作(在这种情况下,我要搜索的数据可能位于第二/第三列) .
在不使用任何第三方控件的情况下是否可以实现这一点?
最佳答案
根据您希望标题/第一列为空的原因,您可以将要搜索的文本移动到标题中,然后有一个空白的子项目。然后像这样交换代码中的列顺序
//Move the 1st sub-item left one column
ListView1.Columns[1].Index := 0;
这看起来几乎相同,但如果您没有将 RowSelect 设置为 true,则突出显示的标题将位于错误的列中。这将允许您根据需要进行搜索并在代码中使用 FindCaption 方法。
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
li : TListItem;
begin
//Add data to the list view for demo
for I := 0 to 10 do
begin
li := ListView1.Items.Add;
li.Caption := intToStr(Random(10000));
li.SubItems.Add('');
li.SubItems.Add('Col2');
//addimages so you can see which column is which
li.SubItemImages[0] := 0;
li.ImageIndex := -1;
end;
//move column 2 left one, this is the important bit
ListView1.Columns[1].Index := 0;
end;
alt text http://img265.imageshack.us/img265/3489/captureqg.jpg
关于delphi - 是否可以通过 Delphi 中不同列的标题进行 TListView 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2997720/