请教关于数据库和TREEVIEW之间互换的问题(一定给分)
假设我现在做了一个Edit1,名字叫A公司;一个Edit2,名字叫B人员;B人员是A公司
里的人,我建立了一个Access的数据库,我希望在输入资料进Access里面的同时在TreeView里面可以显示A公司-----B人员。然后在调用的时候只用单击Treeview里面的资料就可以调用我所希望的数据库内容,请问怎么办啊~~各位大侠,这个问题对
你们来说很简单,但是小弟却无法解决,谢谢啦~~~~~~~~~~~~~~(一定给分啊)
问题点数:60、回复次数:10Top
1 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2002-10-23 14:10:32 得分 60
要思路还是要代码?
使用循环控制去数据到treeview。如果多的话就用tstringlist。
别的好象没什么了吧?
前些天弄了treeview,反感,不想再弄了。Top
2 楼charlescoco(悠子)回复于 2002-10-23 14:12:38 得分 0
我希望是代码Top
3 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2002-10-23 14:12:54 得分 0
或者以关键字treeview去搜索下吧。很多。Top
4 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2002-10-23 14:13:58 得分 0
如果你不自己弄,光要代码对你也没什么好处,如果在不急的情况还是自己看资料弄对你也有帮助,不是我不想帮你。Top
5 楼charlescoco(悠子)回复于 2002-10-23 14:14:47 得分 0
请问你的QQ是多少?Top
6 楼xjboy(刀剑客)回复于 2002-10-23 14:18:22 得分 0
前几天弄了一个,自己设置一个存放配置的表格,每次都从里面读取Treeview得配置信息,很简单的。写一个动态的SQl,然后每个结点的data存放该结点所对应的数据表格,每次点击就可以看到相应的数据了,我的代码是和我的数据库结合起来的,估计对你没多达用处。Top
7 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2002-10-23 14:18:26 得分 0
我的QQ是14373338
下面这段残缺代码是网上找来的。可能对你有帮助。
var
TN1,TN2,TN3:TTreeNode;
i,j:integer;
Rooms:TStringlist;
begin
TV1.Items.Clear;
tn1:=tv1.Items.Add(nil,'全部类别');
tn1.ImageIndex:=1;
Rooms := TStringList.Create;
sltTreeViewKey.Clear;
with dm1 do
begin
for i := 0 to SltGroups.count - 1 do
begin
tn2:=tv1.Items.AddChild(tn1,trim(SltGroups[i]));
tn2.ImageIndex:=1;
//sltgroups为tstringlist型。是由前面查询出的数据而来。
GetRoomsByGroup(Rooms, TN2.Text);
for j := 0 to Rooms.Count - 1 do
begin
TN3 := TV1.Items.AddChild(TN2,Rooms.Names[j]);
TN3.ImageIndex := 1;
//保存TreeNode和RoomID之间的对应关系
sltTreeViewKey.Add(inttostr(TN3.AbsoluteIndex) + '=' + Rooms.Values[Rooms.Names[j]]);
end;
end;
end;
Rooms.free;
tv1.TopItem.Expand(false);
if TV1.TopItem.Count <> 0 then
begin
TV1.TopItem.getFirstChild.Expand(false);
TV1.Selected := TV1.TopItem.getFirstChild;
end;
end;Top
8 楼charlescoco(悠子)回复于 2002-10-23 14:19:53 得分 0
谢谢Top
9 楼ColdWolf(天边流星)回复于 2002-10-23 14:29:48 得分 0
在每个TreeView的节点有一个Data域,是一个指针类型的,你可以将一些数据信息保存在这里。信息类型可以定义为一个结构体
如: type
PElement = ^TElement;
TElement = Record
Index :String;
Type: Integer;
Name: String;
...
End;
然后读数据库,如果是公司,那么就直接在TV中增加一个节点
NewNode := TV.Items.AddChild(nil,'公司名')...
这个函数会返回这个节点的引用,你可以将公司节点的指针值保存到一个链表或者数组里面。
如果是一个职员的话,那么你就找到该公司的节点的指针值(如果在连表里面就方便了),然后 NewNode := TV.Items.Add(公司节点的指针值, '人名');
在每次增加一个节点的时候,你都应该创建一个结构体,把相关信息,如记录的索引值填充到这个结构体中。 如: Element : pElement;
new (Element)
Element.Index^ := ***;
然后用节点的data保存。 NewNode.Data := Element;
每当你点击一个节点的时候,你可以在TreeView的Onchanged事件中
if pElement(TV.Seleted.Data)^.type = 'R' then
select * from RenYuanBiao where ID = pElement(TV.Selected.Data)^.Index
else if pElement(TV.Seleted.Data)^.type = 'G' then
select * from RenYuanBiao where ID = pElement(TV.Selected.Data)^.Index
注意,因为Data引用的内存不是系统自动管理的,所以在删除一个节点的时候,因该手动释放这些内存。
Top
10 楼ColdWolf(天边流星)回复于 2002-10-23 14:31:13 得分 0
如果我没说清楚,请用MSN联系我 ysfbird@msn.comTop




