1、现在很多人都使用“父—子结构+递归算法”来显示树型的层次结构,但是不得不说这是一种非常拙劣的方式,下面给大家一种简单方便的数据结构和算法,快速显示树型的层次结构: 2、数据库结构 例如表“国家”可以是这样: 编号 名称 ---------- 01 中国 0101 吉林省 010101 长春市 010102 吉林市 0102 江苏省 010201 南京市 010202 常州市 02 美国 0201 密歇根州 020101 底特律市 0202 华盛顿州 020201 温哥华市 020202 西雅图市 03 澳大利亚 3、在 TreeView 中显示结构 procedure CreateTree; const ID_DEPT = 2; var nLevel: Integer; pNodes: array[0..1023] of TTreeNode; lpID, lpName: string; begin ADODataSet1.Close; ADODataSet1.CommandText := 'SELECT * FROM [国家] ORDER BY [编号]'; ADODataSet1.Open; pNodes[0] := nil; TreeView1.Items.Clear; with ADODataSet1.Recordset do while not Eof do begin lpID := Fields['编号'].Value; lpName := Fields['名称'].Value; nLevel := Length(lpID) div ID_DEPT; pNodes[nLevel] := TreeView1.Items.AddChild(pNodes[nLevel - 1], lpName); MoveNext; end; end; 4、短短 20 行,一次读取数据。有人可能问为什么把 pNodes 的大小设成 1024?你也可以设成 10000,随你便,不过 TreeView 如果有那么多节点早死机了。 |