求教!如何利用treeview从数据库的一个表中取出值,创建treeview树!急!!!(200分)

  • 主题发起人 主题发起人 xd_hello
  • 开始时间 开始时间
X

xd_hello

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想从数据库的一个表中取值,动态的创建treeview树
表的结构是 sjlb 上级类别,lbmc 类别名称
数据库中的数据为 上级类别 类别名称
/a/ b
/a/ c
/a/b/ d
/a/b/ e
/a/b/e/ g
/a/b/e/ h
/a/c/ f
从数据库中取出来显示的结果应为
a|—b—|—d
| |—e—|—g
| |—h
|—c—f
我尝试着用多种方法,但由于 treeview 添加节点的时候只涉及到两个参数,总是无法写出父节点和子节点的确切位置。
希望各位高手能够帮助我来完成这个功能!在此先谢过了!
 
希望下面的代码能够对你有帮助
procedure TForm1.FormCreate(Sender: TObject);
var
//SelNode,
MyTreeNode1, MyTreeNode2:TTreeNode;
p:PMyRec;
temp:string;
begin
query1.Open;
with treeview1.items do
begin
clear;
new(p);
p^.FName :='12';
mytreenode2:=addobject(nil,'商流本部',p);
query1.First;
while not query1.Eof do
begin
temp:=query1.fieldbyname('编码').asstring;
new(p);
p^.FName :=temp;
mytreenode1:=addCHILDobject(MyTreeNode2,query1.fieldbyname('名称').asstring,p);
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT 编码,名称 FROM JCSJ_销售事业部 WHERE LEN(编码)=5');
Query2.SQL.Add(' AND SUBSTRING(编码,1,3)='''+TEMP+'''');
Query2.SQL.Add('order by 编码');
Query2.OPEN;
Query2.FIRST;
WHILE NOT QUERY2.Eof DO
BEGIN
temp:=query2.fieldbyname('编码').asstring;
new(p);
p^.FName :=temp;
temp:=query2.fieldbyname('名称').asstring;
AddChildobject(MyTreeNode1,temp,p);
Query2.Next;
END;
query1.Next;
end;
end;
TREEVIEW1.selected:=mytreenode2;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if flag1 then
begin
if treeview1.Selected.Level=2 then
ModalResult:=mrok
else
application.messagebox(('必须选择工贸公司!'),'吉大工易',mb_ok);
end
else
begin
if (treeview1.Selected.Level=1) or (treeview1.Selected.Level=2) then
ModalResult:=mrok
else
//label1.Caption:='必须选'+#10#13+'择'+#10#13+'公司';
application.messagebox(('必须选择事业部或工贸公司!'),'吉大工易',mb_ok);
end;
end;
 
可以找现成的控件使用,到网上查查看
 
有email吗,下午给你程序
 
我的E_mail :wl7943@vip.sina.com 谢谢!
 
邮件已发出,请查收
 
Good
我都解决了! Thank you !
 
后退
顶部