1、新建一工程,放置一个TreeView和一个Button 以及一个ImageList,在ImageList中随便加入几个16*16的ICon,将Imagelist和TreeView关联。必须有节点图标。
2、将TreeView1的BorderStyle设为:BsNode;BevelKind设为bkFlat,BevelInner和BevelOuter设为Bvlowered;这是为了得到一个Flat边框.
3、在Button1Click中加入如下代码;
procedure TForm1.Button1Click(Sender: TObject);
var
 NewNode : TTreeNode;
begin
  IF assigned(TreeView1.Selected) then
    newNode := Treeview1.Items.AddChild(treeView1.Selected,'akjflkafjlakdsa')
  else
    NewNode := TreeView1.Items.Add(nil,'asdjfllkjf');
  NewNode.MakeVisible;
end;    
4、猛按Button1,加入大量的Node,让垂直和水平滚动条出现;
5、随便多点击几次 Node,你将会发现滚动条没有正常刷新。
有什么办法来处理这BUG;

解决方案 »

  1.   

    补充:将水平滚动条移到最左边,点击某个Node,然后移动鼠标,当ToolTip出现时滚动条就不正常刷新了。禁止ToolTip也不行,还会出现不刷新滚动条的现象。
      

  2.   

    你将代码写成;treeview1.items.beginupdate;
      try  except
      end;
    treeview1.items.endupdate;好像就可以了;
      

  3.   

    不行的,这是一个BUG,和添加Node没有什么关系。
    只要BorderStyle设为:BsNode;BevelKind设为bkFlat,BevelInner和BevelOuter设为Bvlowered.就会出现滚动条不刷新的问题,在MEMO中这样设置的话,也会出现同样的问题;
    我只试了TreeView和memo,但我想只要有这些属性,并有滚动条的控件都出出现同样的问题;
    应该有很多人碰到这个问题了,但我不知道如何处理,请大虾们指教。PS;我的系统是 Delphi 7 + windows2000 professional简体中文版