我的listview 共3列,想让其中一列不可见,我把列属性width=0,运行时是不可见,可一拖动列分割线,就又显示了.有没有什么方法不让用户拖动,从而列宽无法改变.达到隐藏该列的目的

解决方案 »

  1.   

    子类化ListView的Header窗口,当收到WM_NOTIFY消息时,判断 THDNotify数据中的hdr.code 是否等于 HDN_BEGINTRACKA或HDN_BEGINTRACKW,如果是,直接返回True就行了。
      

  2.   

    不显示就不要添加这一列进来,可以用data属性保存这一列数据
      

  3.   

    按理说拖动Column时应该会产生什么消息才对啊。。
    拦截一下看看。。
      

  4.   

    我发现listview和它的columns不是一体的!
    当拖动listview的columns时,会触发WM_NOTIFY消息,这说明Columns是listview的一个子控件,你可以按照这个思路想下去。。
      

  5.   

    不行哎,我截获了所有WM_NOTIFY消息及其子消息都不行,甚至连鼠标消息都过滤掉也不行,你另寻他路吧。。
      

  6.   

    方法1:最好是动态控制,需要显示的时候设置为3列,不需要显示的时候设置只有2列。
    如果不想让用户操作,直接 enable := false;方法2:在鼠标移动的时候实时判断columns的width是否>0,当>0时候,设置为0(不知道行不行)。方法3:还有个不是办法的办法:
    在鼠标按下的时候设置bMove为true
    在鼠标移动的时候,如果bMove为true直接enable := false
    在鼠标送开时候bMove为false只有用户可以点上面的东西,也可以输入数据,旦只要按下拖动,那么listview就不可见。