如何将Treeview的Node值保存到数据库中?

xp97 2003-09-14 01:57:59
将Treeview中增加的内容保存到数据库中,启动程序时再加载数据库中的内容.
现在存在一个问题,如何获取当前Node的层数?
例如:
一个分类的Treeview;
大类:软件,子类:编程软件,子类下面的子类:Delphi.
我希望能够是取得“软件的Node为第1层,编程软件为第2层,Delphi为第3层”,将其存入数据库,再读取。
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
97866 2003-09-14
  • 打赏
  • 举报
回复
如果新增的是第一层则:
x.Typelevel:=1;
x.Typeno:=节点代码;
x.typename:=节点描述;
x.Masterinto:=0;
Node:=treList.Items.AddChildObject(NodeL,节点描述,Tobject(x));
如果新增的是子结点则:
x.Typelevel:=PItem(父结点.Data).Typelevel+1;
x.Typeno:=节点代码;
x.typename:=节点描述;
x.Masterinto:=PItem(父结点.Data).Typelevel;
Node:=treList.Items.AddChildObject(NodeL,节点描述,Tobject(x));
保存时则:
遍历树-------
Ado.Sql.Text:='Insert Into 表 Values('+IntToStr(PItem(当前结点.Data).Typelevel)
+','''+PItem(当前结点.Data).Typeno+''','''
+PItem(当前结点.Data).Typename+''','
+IntToStr(PItem(当前结点.Data).Masterinto)+')';
Ado.ExecSql;
xp97 2003-09-14
  • 打赏
  • 举报
回复
谢谢 "97866(纬宇)-(纟〓◣)"

我可能说得不清楚:现在数据库中是没有存内容的,我是希望在增加Treeview时将每个Node的层数,父节点,及内容写入数据库;再进行读取。
数据库定义如下:
intno Typelevel Typeno typename Masterinto
其中intno为自动增加型, TypeLevel为层数, TypeNo为节点代码,TypeName为节点描述;
Masterinto为父节点的值。

希望能再次得到您的帮助!
97866 2003-09-14
  • 打赏
  • 举报
回复
定义一个记录指针:
------------------------------
PItem=^TPItem;
TPItem=Record
mid,parentid,index:Integer;
end;
{(节点序号,此为一次递增的),caption(节点描述),parentid(父节点序号),index(同级序号)}
---------------------------------------------
var
NodeL,ChildNode:TTreeNode;
x:PItem;
begin
inherited;
treList.Items.Clear;
NodeL:=treList.Items.Add(Nil,'树');
NodeL.ImageIndex:=2;
NodeL.SelectedIndex:=2;
DataSet.First;
while Not DataSet.Eof do
begin
New(x); //mid,parentid,index
x.mid:=DataSet.FieldBynaMe('mid').AsInteger;
x.index:=DataSet.FieldBynaMe('index').AsInteger;
x.parentid:=DataSet.FieldBynaMe('parentid').AsInteger;
ChildNode:=treList.Items.AddChildObject(NodeL,DataSet.FieldBynaMe('caption').AsString,Tobject(x));

//这样每个结点都保存有mid,parentid,index,操作起来就简单多了。
ChildNode.ImageIndex:=1;
ChildNode.SelectedIndex:=0;
DataSet.Next;
end;
TreList.TopItem.Expanded:=True;
end;
-----------------------------------------
取结点的mid,parentid,index时可能这样:
mid:=PItem(trelist.Selected.Data).mid;
parentid:=PItem(trelist.Selected.Data).parentid;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧