当treeview中的所有item显示不下,或者单个item内容过长显示不下时,treeview就会自动加滚动条,现在我不想让这个滚动条显示出来,哪位高手知道该怎么处理?先谢谢了!

解决方案 »

  1.   

    不显示不是字看不全了吗?
    实在不要显示可以用这个API
    ShowScrollBar(TreeView.Handle, SB_BOTH, false);SB_HORZ 是水平的,SB_VERT 是垂直的,SB_BOTH 是两者一起
    更详细的说明查一下帮助
      

  2.   

    tjianliang的这个方法我试过了,我把它放在form的oncreate中,但结果没用,还是有出现。
        其实我是把这个treeview放在一个scrollbox中,让这个scrollbox的滚动条来代替treeview的。因为我需要在treeview中放按钮(当然这个按钮的parent不可能是treeview),这样的话当按钮和treeview的滚动条重叠是就会很难看了,按钮会盖在滚动条上,用scrollbox就可以解决这个问题
      

  3.   

    你把这句放在TreeView的OnResize里
      

  4.   

    不好意思,TreeView没有OnResize事件,那就截获TreeView的WM_PAINT消息吧在TForm1的声明加上
      private
        { Private declarations }
        FOldWndProc: TWndMethod;
        procedure TreeViewWndProc(var Message: TMessage);TreeViewWndProc的实现是
    procedure TForm1.TreeViewWndProc(var Message: TMessage);
    begin
      case Message.Msg of
        WM_PAINT:
          ShowScrollBar(TreeView1.Handle, SB_VERT, false);
      end;
      FOldWndProc(Message);  
    end;再在TForm1的OnCreate事件中
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FOldWndProc := TreeView1.WindowProc;
      TreeView1.WindowProc := TreeViewWndProc;
    end;看能不能达到你要的效果
      

  5.   

    不过tjianliang,这样的话滚动条有时还是会出来闪一下,比方说在做expanded的时候。
      

  6.   

    捕捉treeview的WM_ERASEBKGND消息比较好,这样就不会出现滚动条先出来闪一下了