以下代码可用:
procedure TLyxxfrm.FormCreate(Sender: TObject);
var i,j,l:Integer;
    dd:TtreeNode;  //树的节点
begin
     tv.Items.Clear;
     tv.Items.Add(nil,'我的同事');
     tv.items[0].DeleteChildren;
     with data do
          begin
              dltv_SP.close;
              dltv_SP.UnPrepare;
              dltv_SP.ParamByName('@flag').AsString:='SELECTZXLB';
              dltv_SP.Prepare;
              dltv_SP.open;
              dltv_SP.First;
              I:=0;
              j:=0;
              l:=0;
              dd:=tv.items[0];
              while not dltv_SP.eof do              //**************************在线离线同事
              begin
                    tv.Items.AddChild(dd,dltv_SP.fieldbyname('zxqk').asstring);
                    xltv_SP.close;
                    xltv_SP.UnPrepare;
                    xltv_SP.ParamByName('@flag').AsString:='SELECTALL';
                    xltv_SP.parambyname('@DLBS').asstring:=dltv_SP.fieldbyname('dlbs').Value;
                    dldm[i]:=dltv_SP.fieldbyname('dlbs').Value;
                    xltv_SP.prepare;
                    xltv_SP.open;
                    xltv_SP.first;
                    j:=j+1;
                    l:=0;
                    dd:=tv.Items[j];
                    tv.items[j].ImageIndex:=2;
                    while not xltv_SP.eof do
                              begin
                                   xldm[i,l]:=xltv_SP.fieldbyname('dlbs').Value;
                                   tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
                                   xltv_SP.next;
                                   j:=j+1;
                                   l:=l+1;
                                   tv.items[j].ImageIndex:=3;
                              end;
                        dd:=tv.Items[0];
                        i:=i+1;
                        dltv_SP.Next; 
                end;
              //**************************在线离线同事
             //**************************留言同事
              BEGIN
                    tv.Items.AddChild(dd,'留言同事');
                    lyxx_SP.close;
                    lyxx_SP.UnPrepare;
                    lyxx_SP.ParamByName('@flag').AsString:='SELECTLYXM';
                    lyxx_SP.ParamByName('@TOBH').AsString:=MainBH;
                    lyxx_SP.prepare;
                    lyxx_SP.open;
                    lyxx_SP.first;
                   // lyxx_LYXM:=lyxx_SP.FieldByName('LYXM').AsString;                    j:=j+1;
                    l:=0;
                    dd:=tv.Items[j];
                    tv.items[j].ImageIndex:=2;
                    while not lyxx_SP.eof do
                             begin
                                   tv.Items.AddChild(dd,lyxx_SP.FieldByName('LYXM').asstring);
                                //   tv.Items.AddChild(dd,lyxx_LYXM);
                                 //  tv.Items.AddChild(dd,lyxx_SP.FieldByName('FROMBH').asstring);
                                   lyxx_SP.next;
                                   j:=j+1;
                                   l:=l+1;
                                   tv.items[j].ImageIndex:=3;
                              end;
                        dd:=tv.Items[0];
                        i:=i+1;
                        lyxx_SP.Next;
               END;
               //**************************留言同事
             {  //**************************所有同事               BEGIN
                    tv.Items.AddChild(dd,'所有同事');
                    xltv_SP.close;
                    xltv_SP.UnPrepare;
                    xltv_SP.ParamByName('@flag').AsString:='SELECT';
                    xltv_SP.prepare;
                    xltv_SP.open;
                    xltv_SP.first;
                    j:=j+1;
                    l:=0;
                    dd:=tv.Items[J];
                    tv.items[j].ImageIndex:=2;
                    while not xltv_SP.eof do
                              begin
                                   tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
                                   xltv_SP.next;
                                   j:=j+1;
                                   l:=l+1;
                                   tv.items[j].ImageIndex:=3;
                              end;
                        dd:=tv.Items[0];
                        i:=i+1;
                        dltv_SP.Next;
               END;               //**************************所有同事   }              tv.items[0].expand(false);
              xltv_SP.close;
              dltv_SP.close;
              lyxx_SP.Close;
          end;
          tv.Refresh;end;但刷新按钮写为:
Begin
   FormCreate(Sender);
end;点击刷新时整个工程自动关闭。这是为什么??
还望大虾们多多指点!谢了!

解决方案 »

  1.   

    还有以下的“**************************留言同事”和“**************************所有同事 ”
    之间的代码不能够同时调用,只能够有一个存在时才生效,不懂!             //**************************留言同事
                  BEGIN
                        tv.Items.AddChild(dd,'留言同事');
                        lyxx_SP.close;
                        lyxx_SP.UnPrepare;
                        lyxx_SP.ParamByName('@flag').AsString:='SELECTLYXM';
                        lyxx_SP.ParamByName('@TOBH').AsString:=MainBH;
                        lyxx_SP.prepare;
                        lyxx_SP.open;
                        lyxx_SP.first;                    j:=j+1;
                        l:=0;
                        dd:=tv.Items[j];
                        tv.items[j].ImageIndex:=2;
                        while not lyxx_SP.eof do
                                 begin
                                       tv.Items.AddChild(dd,lyxx_SP.FieldByName('LYXM').asstring);('FROMBH').asstring);
                                       lyxx_SP.next;
                                       j:=j+1;
                                       l:=l+1;
                                       tv.items[j].ImageIndex:=3;
                                  end;
                            dd:=tv.Items[0];
                            i:=i+1;
                            lyxx_SP.Next;
                   END;
                   //**************************留言同事
                 {  //**************************所有同事               BEGIN
                        tv.Items.AddChild(dd,'所有同事');
                        xltv_SP.close;
                        xltv_SP.UnPrepare;
                        xltv_SP.ParamByName('@flag').AsString:='SELECT';
                        xltv_SP.prepare;
                        xltv_SP.open;
                        xltv_SP.first;
                        j:=j+1;
                        l:=0;
                        dd:=tv.Items[J];
                        tv.items[j].ImageIndex:=2;
                        while not xltv_SP.eof do
                                  begin
                                       tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
                                       xltv_SP.next;
                                       j:=j+1;
                                       l:=l+1;
                                       tv.items[j].ImageIndex:=3;
                                  end;
                            dd:=tv.Items[0];
                            i:=i+1;
                            dltv_SP.Next;
                   END;               //**************************所有同事   }
      

  2.   

    TreeView怎么样做到刷新?
    这样:tv.Refresh;好象不行。
      

  3.   

    tv.Items.Clear;
         tv.Items.Add(nil,'我的同事');
         tv.items[0].DeleteChildren;这都有啊