如果已经在treeview中建好了一个两层的树型结构
-系统名称1
  -功能名称1
  -功能名称2
-系统名称2
  -功能名称3
  -功能名称4
我现在需要将他还原成数据库中的结构为
系统名称1  功能名称1
系统名称1  功能名称2
系统名称2  功能名称3
系统名称2  功能名称4
如何写代码?在线等待,马上给分?急盼!

解决方案 »

  1.   

    这应该好做:
    你不是发了个贴子吗,只是逆项而已:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
      s:string;
      str:string;//
    begin
      i:=form1.TreeView1.Items.Count;
      if i>0 then
      begin
        for j:=0 to i-1 do
        begin
          if form1.TreeView1.Items.Item[j].Parent=nil then
          begin
            str:=form1.TreeView1.Items.Item[j].Text;
            continue;
          end;
          query1.active:=False;
          query1.sql.clear;
          query1.sql.add('insert into tab (col1,col2) values(str,:s1)');
          query1.ParamByName('s1'):=form1.TreeView1.Items.Item[j].Text;
          query1.ExceSql;
        end;
      end;
    end;
      

  2.   

    你可以先建库在添加到treeview啊
      

  3.   

    不太明白你的意思,
    是不是想把treeview以一定的格式存入数据库中将来可以读出来?
    如果你所保存的数据有其它用的话, 可以找找相关的代码,不难的数据库的设计为
    id integer
    parentid integer
    data string比较好,如果你还有其它数据, 可以在加些字段,如果你只是想保存tree数据让下次程序起来可以用,
    你可以用savetofile和loadfromfile
      

  4.   

    若有必要我可以给你完整的源代码!请仁兄发一个Email过来就是了!
    mailto:[email protected]
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
      s,s1:string;
    begin
      i:=form1.TreeView1.Items.Count;
      if i>0 then
      begin
        for j:=0 to i-1 do
        begin
          s:=form1.TreeView1.Items.Item[j].Text;
          if form1.TreeView1.Items.Item[j].Parent<>nil then
          begin
            s1:=form1.TreeView1.Items.Item[j].Parent.Text;
            form1.Table1.Open;
            form1.Table1.Append;
            form1.Table1.FieldValues['子系统名称']:=s1;
            form1.Table1.FieldValues['功能名称']:=s;
            form1.Table1.Post;
            form1.Table1.Refresh;
          end;
        end;
      end;
    end;