抱歉,这件事背景有点复杂...我正在将一个D5项目转换为DXE...它有一个包含数千个项目的列表框。通过在搜索框中的每一次击键,对这些项进行完整的渐进式文本搜索。在D5 (预虚拟列表)中,我必须使用LMD列表框(因为列表框中有几个带有标题的列)、一个单独的滚动条和一个记录数组来创建自己的虚拟列表框。然后,在用户浏览搜索结果时或通过修改搜索来填充列表框。这执行得非常好,但是因为现在虚拟列表框是Delphi的原生的,所以我打算将我的自定义列表框转换为原生列表框,但是我找不到具有支持虚拟的头的列表框组件。帮助?
是否有可用的具有虚拟列表和标题/列的组件?
我忘了提一下:我知道软宝石VirtualTreeView组件-这些都很好,可能是我将使用的,但……在DXE中有没有办法在没有第三方实用程序的情况下实现这一点?我担心我在DXE中遗漏了一些明显的东西,因为我只使用了大约一个月。
发布于 2011-07-13 06:35:13
TListView
是一个窗口列表视图公共控件的薄包装器。在报告视图样式的虚拟模式下运行它,以实现我相信您所要求的。
为了设置虚拟列表视图,您需要将OwnerData
设置为True
,并提供一个OnData
事件处理程序。
procedure TVirtualListViewForm.FormCreate(Sender: TObject);
begin
ListView1.ViewStyle := vsReport;
ListView1.Columns.Add.Caption := 'Column1';
ListView1.Columns.Add.Caption := 'Column2';
ListView1.OwnerData := True;
ListView1.OnData := ListViewData;
ListView1.Items.Count := 42;
end;
procedure TVirtualListViewForm.ListViewData(Sender: TObject; Item: TListItem);
begin
Item.Caption := Format('Column 0, index %d', [Item.Index]);
Item.SubItems.Add(Format('Column 1, index %d', [Item.Index]));
end;
根据您的需要,可能需要使用OnDataFind
来实现渐进式文本搜索。
发布于 2019-01-18 01:33:40
您可以使用GitHub:https://github.com/digao-dalpiaz/DzListHeader上提供的my component TDzListHeader
该组件允许您在TCollection中创建列,您应该将TListBox放入TListHeader中,并将它们链接起来。
所有用法和详细文档都可以在github项目中找到。
https://stackoverflow.com/questions/6673641
复制相似问题