gpt4 book ai didi

德尔福 7 : Select certain items of a TList

转载 作者:行者123 更新时间:2023-12-03 18:29:38 24 4
gpt4 key购买 nike

在 Delphi 中,我有一个基于 TList 的自己的类。它是TPetList。 TPetList 的每个实例都可以有一些 TPet 类的项。 TPetList 的实例使用 for 循环显示在 TListView 组件中。

TPet 基于 TObject 并具有以下字段:

  • 城市
  • 年龄
  • 品种

  • 现在我有一个复选框列表,用户可以在其中勾选他想要查看的品种。因此,如果他只想查看品种 XYZ 的宠物,我只想显示“品种”值设置为“XYZ”的条目,而 TPetList 和 TListView 中的顺序必须保持不变。

    我怎样才能做到这一点?

    如果我删除 TPetList 中的项目并在 TListView 中显示其余项目,那么一切都很好,直到用户想要查看另一个品种。该品种之前已被删除,无法显示。

    最佳答案

    尝试选择一个新列表,而不是删除。像这样的东西:

    function TPetList.Filter(criteria: TPetCriteria): TPetList;
    var
    i: integer;
    begin
    result := TPetList.Create;
    for i := 0 to self.Count - 1 do
    if criteria.matches(self[i]) then
    result.add(self[i]);
    end;

    如何实现标准取决于您,但这是大体思路。请记住,此返回的列表是一个 subview ,并不拥有它包含的项目,因此在释放过滤列表时不要释放它们。

    关于德尔福 7 : Select certain items of a TList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299082/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com