麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

Delphi中根據分類數據生成樹形結構的最優方法

2019-11-18 18:35:53
字體:
來源:轉載
供稿:網友
 

很多系統都有類似于如下的表結構(table1):

ID                 Name                         ParentID

---------------------------------------------------------

001              電子類                              0

002              金屬類                              0

003              電容電子                         001

004              電阻電子                         001

005              有色金屬                         002

而且大家都習慣于用樹(TreeView)來顯示,這樣就可以很好的顯示整個表的分類情況。但如果數據量多時會造成樹的生成比較慢,特別是用遞歸來實現時要訪問數據庫的次數很多(根據層數),用在三層中效果更加顯。在此提供一個好的方法來生成樹形結構。

這個算法只訪問一次數據庫,具體的實現如下:

1、一次性從數據庫中取出所有的數據,并按照ParentID字段進行排序,這樣就保證每一條數據的父節點都在它的前面。

2、取出第一條數據畫到樹中,在添加到樹中時先找到這條數據的父節點,如果沒有 則將此記錄直接作為樹的第一級節點

3、如果還有數據,則取出來執行第2步,直到沒有數據為止。

程序實現:

   本程序將用一個stlID的TStringList變量來存放對應樹中每一個節點的ID值,用FindParent函數來父節點。

function FindParent(ID:String):TTreeNode;

var

  i:Integer;

begin

  result:=nil;

  for i:=TreeView1.Items.Count-1 downto 0 do

    if stlID.Strings[i]=ID then

    begin

      result:=TreeView1.Items[i];

      break;

    end;

end;

//生成樹

PRocedure CreateTree;

var

  tmpNode:TTreeNode;

begin

  Query1.close;

  Query1.SQL.Text:='select * from table1 order by ParentID';

  Query1.Open;

  Query1.First;

  while not Query1.Eof do

  begin

    tmpNode:=TreeView1.Items.AddChild(FindParent(Query1.FieldByName('ParentID').AsString),Query1.FieldByName('Name').AsString);

    stlID.Add(Query1.FieldByName('ID').AsString);//記錄ID

    Query1.Next;

  end;

end;



上一篇:Delphi與Excel

下一篇:Delphi與Word例1

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 成人羞羞国产免费游戏 | 狼人狠狠干 | 国产精品久久久久久久av | 久久吊| 妇女毛片| 最新av在线播放 | 欧美14一15sex性hd | 美女污污在线观看 | 中文字幕在线永久 | 国产午夜精品一区二区三区在线观看 | av在线视| 欧美黄色免费视频 | 久久久成人精品视频 | 国产一区二区三区四区五区加勒比 | 日韩精品a在线观看 | 日本中文高清 | www国产成人免费观看视频,深夜成人网 | 叶子楣成人爽a毛片免费啪啪 | 中文字幕观看 | 91精品国产刺激国语对白 | 一级国产免费 | 18被视频免费观看视频 | 成人免费在线视频播放 | 一级黄色免费大片 | 日韩深夜视频 | 免费毛片视频 | 黄色视频一级毛片 | 亚洲福利视频52 | 成人福利视频导航 | 欧美一级高潮 | 91久久在线观看 | 91性视频 | 国产乱淫av片免费 | 久久精品.com | 精品国产一区二区三区四区阿崩 | 国产亚洲精品成人 | 男女一边摸一边做羞羞视频免费 | 宅男噜噜噜66国产免费观看 | 欧美另类69xxxxx 视频 | 国产精品二区高清在线 | 婷婷亚洲一区二区三区 |