我要用listview展示数据但不希望鼠标可以选中项目,和获得焦点.就像是label一样 怎么点都没反应. 不要有框框

解决方案 »

  1.   


    考虑过这方法了,设置Enabled后 就什么事件都无法相应了.我只是要其中的项目不可获得焦点而已..
      

  2.   


    你可能误解我的意思了,我说的是 项目什么事件不可相应但是设置了Enabled后 是整个listview无法相应任何事件?难道不是吗?
      

  3.   

    把rowselect,multiselect属性设为false,viewstyle设成vlist
      

  4.   


    或者这位高人有单独设置items的Enabled的方法 请赐教.看样子是位高人
      

  5.   


    第一项是可以选择的.而且viewstyle我要设置为vsReport.因为我要使用vsReport+group 显示数据
      

  6.   

    可以考虑用DrawItem,先设OwnerDraw为TRUE,然后用
    procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
      Item: TListItem; Rect: TRect; State: TOwnerDrawState);
    var
      x,i:integer;
    begin
        Sender.Canvas.TextOut(Rect.Left,   Rect.Top,   Item.Caption);
        x:=Sender.Column[0].Width;   for i:=0 to Item.SubItems.Count-1 do
       begin
        Sender.Canvas.TextOut(Rect.Left + x,   Rect.Top,Item.SubItems.Strings[i]);
        x:=x+ Sender.Column[i].Width
       end;
    end;
    这只是个思路,你可以用State+Column来判那个Column可以select
    上面的程序有个小bug,有时当列宽改变时,它的重画有问题(不过刷新一下就可以了,但我没找到列宽改变的事件)
      

  7.   


    我自己画了,不用Listview了..谢谢你的帮助!