我的类:  TOrgNode = class; //前置声明  TOrgNodeList = class(TObjectList)  //从TObjectList继承的一个对象列表类
  private
    function GetItems(Index: Integer): TOrgNode;
    procedure SetItems(Index: Integer; const Value: TOrgNode);
  public
    property Items[Index: Integer]: TOrgNode read GetItems write SetItems;
  end;  TOrgNode = class(TObject)
  private
    FNodeIndex: Integer;
    FName: string;
    FSubOrgNodeList: TorgNodeList;
  public
    constructor Create(Idx: Integer);
    destructor Destroy; override;
    property NodeIndex: Integer read FNodeIndex write FNodeIndex;
    property Name: string read FName write FName;
    property SubOrgNodeList: TorgNodeList read FSubOrgNodeList;  //一个子列表
  end;Var
  orgNodeList: TOrgNodeList;如何用一个递归查找函数,快速从orgNodeList中,查找到指定NodeIndex的TOrgNode对象呢?

解决方案 »

  1.   

    var
    DestNodeList : TOrgNodeList;

    ....
    DestNodeList := TOrgNodeList.Create(....

    procedure loopsearch(SouceNodeList : TOrgNodeList ;NodeIndex : Integer)
    var
    tmpNodeList : TOrgNodeList;
    begin
    if 
      if (SouceNodeList.Count > NodeIndex) and (SouceNodeList[NodeIndex] <> nil) then
      begin
    DestNodeList.Add(SouceNodeList[NodeIndex]);
      end
      else
      begin
       tmpNodeList := SouceNodeList.SubOrgNodeList;
       loopsearch(tmpNodeList,NodeIndex);
      end;
    end;
      

  2.   

    哦,NodeIndex与List没有任何关系哦,是一个数据库中取得的设备编号。大家就用Name作查找条件吧