主题:求救--TreeView排序问题,在线等
[em7]
近日,学习了TreeView和数据库连接,正确编写代码后能正常连接并显示出来了,但是TreeView显示后的节点数据和数据表里排序不同,全排序乱,数据表里的"A"排在第100的TreeView里却排在第2了.各朋友帮帮忙解决下,我的想法是按数据表是的ID号(ID是我的数据表里自动增加序号)的大小排序,按ID号小的排前,大的排后,另一个想法是在表里最后加个日期时间列,按时间先后顺序排序,帮助的朋友请写出具体代码,我是Delphi新手哦,先多谢.
function TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode;
var
ThisNode, Node: TTreeNode;
I: Integer;
begin
Node := nil; //nil = level 0 has no parent node
//this is checked by TreeFindItem
for I := 0 to Itemlist.count -1 do
begin //for
ThisNode := TreeFindItem(Sender, node, Itemlist[i]);
if ThisNode <> nil then
Node := ThisNode
else
begin
if I < Itemlist.count -1 then
begin
if I = 0 then
Node := Sender.items.Add(Node, Itemlist[i])
else
Node := Sender.items.AddChild(Node, Itemlist[i]);
end
else
begin
if I = 0 then
Node := Sender.items.AddObject(Node, Itemlist[i], Bookmark)
else
Node := Sender.items.AddChildObject(Node, Itemlist[i], Bookmark);
end;
Node.stateIndex := Node.level + 1;
if Resort and (Node.parent <> nil) then Node.parent.alphasort;
end;
end; //for
Result := Node;
end;
有无一种方法:
指向TreeView的节点按数据表里的ID号大小排序的代码.
或指向TreeView的节点按数据表里的时间排序的代码.
我的数据表结构是:
ID 自动增加编号
PID 文本 (指定TreeView第一层节点编号)
Sid 文本.(指定TreeView第二层节点编号)
Fname 文本(用于TreeView第三层节点显示的TEXT)
Date 日期时间(后来增加的,想用于TreeView第二层...第四层节点TEXT按日期排序)
近日,学习了TreeView和数据库连接,正确编写代码后能正常连接并显示出来了,但是TreeView显示后的节点数据和数据表里排序不同,全排序乱,数据表里的"A"排在第100的TreeView里却排在第2了.各朋友帮帮忙解决下,我的想法是按数据表是的ID号(ID是我的数据表里自动增加序号)的大小排序,按ID号小的排前,大的排后,另一个想法是在表里最后加个日期时间列,按时间先后顺序排序,帮助的朋友请写出具体代码,我是Delphi新手哦,先多谢.
function TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode;
var
ThisNode, Node: TTreeNode;
I: Integer;
begin
Node := nil; //nil = level 0 has no parent node
//this is checked by TreeFindItem
for I := 0 to Itemlist.count -1 do
begin //for
ThisNode := TreeFindItem(Sender, node, Itemlist[i]);
if ThisNode <> nil then
Node := ThisNode
else
begin
if I < Itemlist.count -1 then
begin
if I = 0 then
Node := Sender.items.Add(Node, Itemlist[i])
else
Node := Sender.items.AddChild(Node, Itemlist[i]);
end
else
begin
if I = 0 then
Node := Sender.items.AddObject(Node, Itemlist[i], Bookmark)
else
Node := Sender.items.AddChildObject(Node, Itemlist[i], Bookmark);
end;
Node.stateIndex := Node.level + 1;
if Resort and (Node.parent <> nil) then Node.parent.alphasort;
end;
end; //for
Result := Node;
end;
有无一种方法:
指向TreeView的节点按数据表里的ID号大小排序的代码.
或指向TreeView的节点按数据表里的时间排序的代码.
我的数据表结构是:
ID 自动增加编号
PID 文本 (指定TreeView第一层节点编号)
Sid 文本.(指定TreeView第二层节点编号)
Fname 文本(用于TreeView第三层节点显示的TEXT)
Date 日期时间(后来增加的,想用于TreeView第二层...第四层节点TEXT按日期排序)