对不起,背景是在这一个有点令人费解......我在D5项目转换为DXE的过程......它有几千项的列表框。一个完整的渐进式文本搜索这些项目在搜索框每次击键完成。在D5(预虚拟列表),我不得不做出使用LMD列表框我自己的虚拟列表框(因为有几列在列表框中头),一个单独的滚动条和一组记录。然后,列表框将被填充作为通过搜索结果或通过修改搜索导航用户。这表现非常出色,但由于现在的虚拟列表框是原产于德尔福我要我的自定义列表框转换到本机,但我不能找到标题列表框组件,它是虚拟的能力。救命?
是否有一个组件提供有虚拟列表和页眉/列?
我忘了说:我知道软宝石VirtualTreeView组件 - 这些是优秀的,可能就是我会使用,但...是否有一个DXE的方式来做到这一点没有第三方的事业吗?我很担心,因为我只是一直在使用它了约一个月,我失去了一些东西在DXE明显。
TListView
是围绕Windows的列表视图共同控制一个瘦包装。在报告视图风格的虚拟模式下运行它来实现你的要求,我相信什么。
为了建立一个虚拟列表视图您需要设置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
实行累进文本搜索。
你可以在GitHub上使用我的组件TDzListHeader,可供选择:https://github.com/digao-dalpiaz/DzListHeader
该组件允许您在TCollection创建列,你应该放弃一个TListBox中的TListHeader内,并将它们连接起来。
所有使用和详细的文档可在github上的项目。