Procedure DirToSubFileList(var Directory:string; var FileList:TStringList);
var
  Fillter:string;
  sr: TSearchRec;
  FileAttrs: Integer;
begin
      FileAttrs := faReadOnly+ faHidden+ faSysFile+ faVolumeID + faDirectory+ faArchive+ faAnyFile;
      Fillter:=Directory+'\*';
      if FindFirst(Fillter, FileAttrs, sr) = 0 then
      begin
        repeat
           if (sr.Name<>'.')and(sr.Name<>'..') then
              FileList.Add(Directory+'\'+sr.Name);
        until FindNext(sr) <> 0;
        FindClose(sr);
      end;
end;

解决方案 »

  1.   

    //==============================================================================
    //'菜单'解构成'树'(Recursion为递归)*********************************************
    //==============================================================================
    procedure MenuToTree(Menu: TMenu; var Tree: TTreeView; DestinationNode: TTreeNode; Expand: Boolean);
      procedure RecursionTree(MenuItem: TMenuItem; TreeNode: TTreeNode);
      var i: Integer;
          Node: TTreeNode;
      begin
        for i:=1 to GetMenuItemCount(MenuItem.Handle) do
          if MenuItem.Items[i-1].Caption<>'-' then
          begin
            Node := Tree.Items.AddChild(TreeNode,MenuItem.Items[i-1].Caption);
            Node.Data := Pointer(MenuItem.Items[i-1].Name);
            RecursionTree(MenuItem.Items[i-1],Node);
          end;
      end;
    var i: Integer;
        Node: TTreeNode;
    begin
      for i:=1 to GetMenuItemCount(Menu.Handle) do
      begin
        Node := Tree.Items.AddChild(DestinationNode,Menu.Items[i-1].Caption);
        Node.Data := Pointer(Menu.Items[i-1].Name);
        RecursionTree(Menu.Items[i-1],Node);
        if Expand then Tree.FullExpand else Tree.FullCollapse;
      end;
    end;