一个listview中有3个item首先选中第二个item,这时listview.itemindex =1
然后
1)选中第一个item,listview.itemindex =0   可以理解
2)选中第三个item,listview.itemindex =1  listview的selected没有改变!!!  我的问题是在情况2时,如何让listview的selected变成第三个item

解决方案 »

  1.   

    ListView的Itemindex,若是MultiSelect设置为True的时候,Itemindex是按照顺序最前面的Item.
      

  2.   

    CurX,CurY:integer;procedure TForm1.ListView1Click(Sender: TObject);
    var
        ListItem:TListItem;
    begin
        ListItem:=Listview1.GetItemAt(CurX,CurY);
        if ListItem<>Nil then
        begin
            ListView1.ItemIndex:=ListItem.Index;
            Label1.Caption:=IntToStr(ListView1.ItemIndex);
        end;
    //////////////ListView1.GetItemAt(CurX,CurY)就是最后选中的Item.
    end;procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        CurX:=X;
        CurY:=Y;
    end;
      

  3.   

    在情况2下itemindex还是没有改变。
      

  4.   

    代码我试过的才放上来的,不过放上来的时候又稍改了一下,没测试。下面的代码可以得到最后选择的index。procedure TForm1.ListView1Click(Sender: TObject);
    var
        ListItem:TListItem;
    begin
        ListItem:=Listview1.GetItemAt(CurX,CurY);
        if ListItem<>Nil then
        begin
    //        ListView1.ItemIndex:=ListItem.Index;
            if ListItem.Selected=true then
                Label1.Caption:=IntToStr(ListItem.Index);
        end;
    end;
      

  5.   

    晕,没仔细测试就给分了。我的要求是"如何让listview的selected变成第三个item"上面的代码根本无法做到!!!