本人菜鸟,刚接触DELPHI
最近做树结构时遇到个问题,请高手帮忙解答,
情况如下:
打开我做的窗体,点击增加后把Edit内的数据加入到了树结构treeview中,数据库内也有此数据,进行操作后,可以对数据库进行添加,删除,修改之类的操作!但是问题:当将窗口关闭,或者程序关闭后,再运行程序的话,TreeView中只有根节点,其他添加过的数据显示不出来!请问是什么原因,最好给出例子或代码!万分感谢!是不是在窗体初始化的时候该怎么操作啊?

解决方案 »

  1.   

    樹形控件不可以直接對數據庫進行操作, 你需要寫insert, update語句去更新數據庫,每次更新以後,要寫代碼刷新樹, 重新生成節點。
      

  2.   

    启动的时候,从库中读数据到treeview
      

  3.   

    在form的OnCreate或OnShow事件中,从表中读出数据再为Tree增加节点
      

  4.   

    “在form的OnCreate或OnShow事件中,从表中读出数据再为Tree增加节点”写在OnCreat事件中,但是怎么从表中读出数据呢?有代码或者例子可以参考吗?
      

  5.   

    1.你数据存放到库中了,那他们的逻辑关系都存进去了吗?
    2.取数据,加到treeview中,代码贴出来看看!
      

  6.   

    一个表:结构ID,ParentID,name,主键name
    生成树代码:
    procedure TForm1.ShowTree(TNode:TTreeNode;s:string);
    var
    QR:TADOQuery;
    TmpNode:TTreeNode;
    p:pchar;
    begin
    QR:=TADOQuery.Create(self);
    if TNode=nil then
    begin
    new(p);
    p^.tcaption:=s;
    p^.num:=1;
    TNode:=TreeView1.Items.AddChildObject(TNode,p^.tcaption,p);
    end;
    with QR,TreeView1 do
    begin
    close;      
    connection:=ADOConnection1;
    SQL.Clear;
    SQL.Add('select Dep_name,ParentID,ID from test where ParentID=:ParentID');
    QR.parameters[0].Value:=s;
    open;
    ACTIVE;
    first;
    while not Eof do
    begin
    new(p);
    p^.tcaption:=QR.FieldbyName('ParentID').AsString;
    p^.num:=QR.FieldbyName('ID').AsInteger;
    TmpNode:=Items.AddChildObject(TNode,p^.tcaption,p);
    showTree(TmpNode,p.tcaption);
    next;                  
    end;
    end;
    end;如何在窗口的onCreat或者是onShow事件中显示已有的树状呢/?