在TListView中,数据行超出当前页面范围时,将产生一个垂直滚动条,当用程序代码选择最后一行时,滚动条不会像DbGrid自动定位该位置。不知道哪位高手能指教?

解决方案 »

  1.   

    下面的代码试了一下,不知是否满足你的要求
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to listview1.Items.Count - 1 do
        if listview1.Items[i].Caption = 'i' then
          listview1.Selected := listview1.Items[i];
      listview1.Scroll(0, listview1.Selected.GetPosition.Y);
    end;
      

  2.   

    对了,如果要精确地指向具体选定的item的话(可以是任意的item,不一定是最后一行),需要在listview1.Selected.GetPosition.Y基础上减去一个值,因为listview的列表状态还有一个表头呢,大概17就差不多了。