delphi - 是否可以通过 Delphi 中不同列的标题进行 TListView 搜索?

标签 delphi listview

当您设置 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/

相关文章:

delphi - 对象的 VirtualTreeView 内存泄漏

delphi - 如何清除 TCanvas?或任何其他解决方案

android - 向下滚动 ListView 时随机复选框被选中

Android:将新项目添加到列表后,ListView 中的 NullPointerException onItemClick

android - SectionIndexer 如何影响 Android 快速滚动?

delphi - 保护编辑组件的密码

delphi-7 - 在 object pascal 中声明一个接口(interface)并将其用作返回值

delphi - 使用 Delphi 7 复制 Excel 公式

android - 更新 ListView ?

Android:如何像ListView一样用一个TextView快速滚动ScrollView?