sutao
4516
|
2004/4/30 15:59:36 |
谢谢大家!!特别是KWBIN这位朋友
|
tim001
4451
|
2004/4/29 11:08:20 |
收下先 |
nidejiang
4207
|
2004/4/23 21:24:07 |
sutao 我是DELPHI 爱好者,编程时总会碰到很多问题,很想找位朋友指点,我在QQ中加你了 请不要拒绝我的加入,我的QQ是:178718468 |
kwbin
4191
|
2004/4/23 12:50:17 |
create table (ID integer,PID Integer,Caption string) ID为节点编号,PID为父节点编号,Caption为标题,你可以适当扩充.
|
sutao
4182
|
2004/4/23 9:18:13 |
kwbin,能把数据结构也列出来吗?
|
sutao
4156
|
2004/4/22 17:24:45 |
若遍历不成问题,那拖动自然容易解决!!! 其实遍历这个有关系的数据库和拖动无非就是个标示各数据层次关系及同盟关系问题和组合到TREEVIEW中的技巧 而大家是否发现WINDOWS的文件层次关系呢???? 虽然有个不同就是:存储机制直接和间接(WINDOWS文件路径就是个标识关系,只是存储在地址表中而不是存在库中)
|
sutao
4154
|
2004/4/22 17:18:20 |
谢谢大家能够针对我提出的问题进行认真讨论 我以前有试着实现过 但由于犯了想得过于简单的错误导致做到后面渐渐混乱 而后来公司急着我交单(一个100M左右大的派出所的管理软件。可惜由于企业技术保密问题,否则拿出来让大家共同探讨探讨,指出不足之处。) 由于很忙,我只好停下这个测试,没办法仔细测试,楼上的几位朋友方法符合常规逻辑 但好象有些未考虑周到,若可以的话,多测试!!相信大家以后都会有所用锄。谢谢大家 让我们共同努力。GOLD CAT SOFTWARE QQ 276210156 |
kwbin
3896
|
2004/4/12 18:42:53 |
首先搜索PID为0的节点添加到根节点,然后循环添加子节点,你可以用Delphi跟踪一下运行过程就明白了! |
kwbin
3895
|
2004/4/12 18:40:16 |
遍历方法也就是unit TreeFillThrd。pas中的递归过程
procedure TTreeFill.Execute; var Node: TTreeNode; begin FreeOnTerminate := True; TV.Items.Clear; Ptr^.Index := 0; Ptr^.Caption := RootText; Node := TV.Items.AddObject(nil, RootText, Ptr); Node.ImageIndex := 0; Node.SelectedIndex := 0; AddTree(Node, Ptr); TV.FullExpand; end; //------------------------------------------------------------------------------ procedure TTreeFill.AddTree(Node: TTreeNode; PN: PNodeData); var Query: TADOQuery; nNode: TTreeNode; PNode: PNodeData; begin try Query := TADOQuery.Create(nil); Query.Connection := Conn; Query.SQL.Text := 'Select * from ' + TableName + ' where ' + FieldPID + ' =' + IntToStr(PN^.Index); if Query.Active then Query.Close; Query.Open; while Query.Eof = False do begin New(PNode); PNode^.Caption := Query.FieldByName(FieldCaption).AsString; PNode^.Index := Query.FieldByName(FieldIndex).AsInteger; nNode := TV.Items.AddChildObject(Node, PNode^.Caption, PNode); nNode.ImageIndex := 1; nNode.SelectedIndex := 2; AddTree(nNode, PNode); Query.Next; end; finally Query.Free; end; end;
这个递归过程可以处理数据库节点不是按照从上到下的顺序保存的情况! |
bnu_dwj
3843
|
2004/4/11 16:15:59 |
呵呵,很好,可不可以透漏一下你的遍历方法? 我都打算放弃遍历,用队列做了。 |
kwbin
3817
|
2004/4/10 19:31:47 |
bnu_dwj 所说的方法在我的程序中已经实现! 你可以细细研究一下! |
kwbin
3816
|
2004/4/10 19:18:07 |
我是江苏大学信息011班的! 这个程序支持拖动! 递归是为了能更好的处理数据节点之间的关系! 我之所以用线程就是为了处理速度延迟问题!
|
bnu_dwj
3795
|
2004/4/9 21:38:30 |
请问作者,如果我想构建数据的树形结构,但是父节点的子节点不是固定不变的,也就是说有可能有的父节点有3个子孩子,而有的有4个或者5个子孩子的,但是现在我想让它们自动在数据库中检索,把所有的结果显示在treeview中,请问有没有什么好的遍历方法? |
lovefox
3774
|
2004/4/9 12:33:09 |
用递归?速度太慢。简单分类还可以,如果用来显示某个部门的成员的话,数据一多,慢的不行 |
fx75
3612
|
2004/3/29 21:13:48 |
支持拖动吗?? 比如说:浪涛软件公司 -------办公室 -----------经理 -----------文员 -----------秘书 -------销售部 -----------软件 -----------销售总管 -----------销售员1 -----------硬件 -----------销售主管 -----------销售员2 -----------销售员3 把办公室-->经理,拖到销售部-->软件 下??? |
hotdog911
3606
|
2004/3/29 18:30:29 |
请问作者是不是江苏大学工商管理学院信息01级的学生呀?我是江苏大学工商管理学院信息99级的学生,希望有机会大家多联系,我的qq是89339209,口令是校友。 |
kwbin
3605
|
2004/3/29 17:48:12 |
只要你设置好数据节点之间的关系就可以实现! ID为节点编号; PID为父节点编号; Caption为标题; 具体打开数据库就可以看见 |
sutao
3601
|
2004/3/29 14:51:47 |
问一下这个DELPHI例子的作者,这个例子有实现分级别栽入数据库数据吗?? 比如说: 浪涛软件公司 -------办公室 -----------经理 -----------文员 -----------秘书 -------销售部 -----------软件 -----------销售总管 -----------销售员1 -----------硬件 -----------销售主管 -----------销售员2 -----------销售员3 QQ:95494386 GOLD CAT SOFTWARE |
dacsd
3587
|
2004/3/29 8:05:47 |
初始状态如何设成仅显示根状态,而不是完全展开。 |