关于TreeView的一个问题。急!!(100分)

  • 主题发起人 主题发起人 大花鸡
  • 开始时间 开始时间

大花鸡

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个问题,有一个表,AA,结构如下:
子节点ID,子节点名,父节点ID,组ID(父节点),组名。
其中可能有好几个组,每个组下有几个子节点,想用TreeView生成如下树状图:
------组名(1)
|
-----子节点1
|
-----子节点2
------组2
|
----子节点3
|
----子节点4
等等。
要如何写代码?
 
你的父节点ID有什么用?
 
它用于知道子节点是属于哪个父节点的。子节点下还有具体的数据,不用在Treeview中
显示的。
 
你说的有些模糊,这个问题与算法有关吧
 
我说一下思路吧。
先查出所有的一级节点,添加到TreeView中,
添加时在在Node.Data指针中保存父节点ID。
在TreeView的Expanding事件中添加选中节点
的下级节点。
 
to 大花鸡
那父节点ID不和组ID重了吗?
 
好做!
就按YoungSun,的方法作,具体实现方法可以插帮助嘛!
  
 
子节点有几项的,1.组ID(用于标志所有子节点下的数据分别在哪个子节点下的。)
2.组名,3.父节点ID(用于表示子节点是在哪个父节点下的,一个父节点可能有很多子节点,
并且可能有很多父节点的。所在父节点ID可能有重复的值哟与组ID不同的,组ID不能有相同的
因为不能有相同的组的)明白了吗?
即然我出了100大洋大家就也出来吧,要查Help还用出100分???谢谢
 
去问自eric.youbin吧,他很厉害的!
呵呵~肯定能帮你解决!
我这里有例程,你要不要?
 
1、type
noderec=record
parentid;integer;
groupid:integer;
groupname:string;
end;

2、
The following code defines a record type of TMyRec and a record pointer type of PMyRec.
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;

Assuming these types are used, the following code adds a node to TreeView1 as the last sibling of a specified node. A TMyRec record is associated with the added item. The FName and LName fields are obtained from edit boxes Edit1 and Edit2. The Index parameter is obtained from edit box Edit3. The item is added only if the Index is a valid value.
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else
if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;

After an item containing a TMyRec record has been added, the following code retrieves the FName and LName values associated with the item and displays the values in a label.
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
 
To:eric.youbin
你就帮我解决吧。谢谢了。
 
j_shen2000:
你的程序不是我要的那样吧。
 
兄弟,总不成让大家替你写代码吧。
这个例程已经将DELPHI如何处理树结构指针的方法写的很明白了。
任何一本数据结构都有树的深度遍历和广度遍历的算法,如果连这种典型算法都要别人帮你
写,不知道程序员还能干什么。
 
多人接受答案了。
 
后退
顶部