我在向数据库里写进东西时,可以看到数据库里有加入的内容!但是在TreeView里就只能显示出原来的数据(我用TreeView动态显示数据库里的内容),我在加入数据到数据库里后同时把数据库里的内容用TreeView显示出来,但就是只能显示上一次数据库里的内容,重新运行后又有了,我想问一下各位,是不是因为在程序开始运行时,数据库里的内容已经被复制到内存中去了,所以在我显示TreeView的时候,它总是把内存中的数据写上去,而没有把更新的数据库里的内容显示出来??
那我应该怎么办???

解决方案 »

  1.   

    TreeView控件自己不会自动感知,必须在改变数据库的同时也改变TreeView,TreeView重新生成一遍,或者按照数据库中新添加的内容添加节点
      

  2.   

    to dulei115
    我重新生成啦,但是还是上一次的数据内容,不是更新的!要重新运行一次程序就可以了!
    我想是不是要释放一下内存中的东西,但不知道怎么释放?
      

  3.   

    procedure TForm1.Button6Click(Sender: TObject);
    var
     Name,Ns: string;
     Node:TTreeNode;
     i:integer;
     Flag:Boolean;
    begin
    Flag:=True;
    ADOTable1.First;
    while not ADOTable1.Eof do
     begin
       if DBedit1.Text=ADOTable1.FieldByName('部门编号').AsString then
         begin
            showmessage('该部门编号已经存在,请重新输入!');
            DBEdit1.SetFocus;
            Flag:=False;
         end;
        if DBedit2.Text=ADOTable1.FieldByName('部门名称').AsString then
         begin
            showmessage('该部门名称已经存在,请重新输入!');
            DBEdit2.SetFocus;
            Flag:=False;
         end;
        ADOTable1.Next;
      end;
       // 检查是否有重名  if Flag=True then
      begin
        ADOQuery1.Post;
        showmessage('信息已经修改');
        Button6.Enabled:=False;
        BUtton7.Enabled:=False;
        DBEdit1.ReadOnly:=True;
        DBEdit2.ReadOnly:=True;
        DBEdit3.ReadOnly:=True;
        DBEdit4.ReadOnly:=True;    SndPlaySound('.\SndResult.wav',SND_ASYNC);   TreeView1.Items.Clear;   ADOTable1.First;
        while not ADOTable1.Eof do
        begin
         Name:=ADOTable1.FieldByName('部门名称').AsString;
         Ns:=ADOTable1.FieldByName('隶属').AsString;
         if Ns='无' then TreeView1.Items.Add(nil,Name)
         else
            begin
              for i:=0 to TreeView1.Items.Count-1 do
                 begin
                   if Ns=TreeView1.Items.Item[i].Text then
                     begin
                       Node:=TreeView1.Items.Item[i];                   TreeView1.Items.AddChild(Node,Name);
                     end;
                 end;
             end;
             ADOTable1.Next;
         end;
      TreeView1.Refresh;
     end;
     //生成树型结构
    end;