如何防止listview在item.count更改时跳转到选定/关注的行?

如何防止listview在item.count更改时跳转到选定/关注的行?,listview,delphi,vcl,delphi-10.2-tokyo,Listview,Delphi,Vcl,Delphi 10.2 Tokyo,我有一个虚拟的listview,我计划用它来显示一个相当大的日志文件中的内容 无论何时添加或删除一行,并且我在列表框中选择或聚焦了一行(或两者),它都会自动回滚到该行,这非常烦人 在修改项目计数时,感觉好像有什么东西在调用MakeVisible(或做相同事情的东西) 复制它的非常简单的示例: procedure TForm1.FormCreate(Sender: TObject); var Col: TListColumn; begin ListView1.OwnerData := Tr

我有一个虚拟的listview,我计划用它来显示一个相当大的日志文件中的内容

无论何时添加或删除一行,并且我在列表框中选择或聚焦了一行(或两者),它都会自动回滚到该行,这非常烦人

在修改项目计数时,感觉好像有什么东西在调用MakeVisible(或做相同事情的东西)

复制它的非常简单的示例:

procedure TForm1.FormCreate(Sender: TObject);
var
  Col: TListColumn;
begin
  ListView1.OwnerData := True;
  ListView1.ViewStyle := vsReport;
  ListView1.RowSelect := True;

  Col := ListView1.Columns.Add;
  Col.Caption := 'LineNum';
  Col.Alignment := taLeftJustify;
  Col.Width := 70;
end;
// listview onData event
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := IntToStr(Item.Index+1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  ListView1.Items.Count := ListView1.Items.Count + 10;
end;

编辑:测试不同的视图样式,这仅在vsReport和vsList中发生。问题是
TListItems.Count
属性设置程序调用时没有
LVSICF\u NOSCROLL
标志:

项目计数更改时,列表视图控件不会更改滚动位置


哪个Delphi版本?VCL或FMX?可能是VCL,因为使用列表包括VCL。什么,它是10.2 Tokyove非常感谢,这完全解决了问题,我实际上已经在查看头文件,但没有找到标志。
procedure TListItems.SetCount(Value: Integer);
begin
  if Value <> 0 then
    ListView_SetItemCountEx(Handle, Value, LVSICF_NOINVALIDATEALL)
  else
    ListView_SetItemCountEx(Handle, Value, 0);
end;
uses
  ..., CommCtrl;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //ListView1.Items.Count := ListView1.Items.Count + 10;
  ListView_SetItemCountEx(ListView1.Handle, ListView1.Items.Count + 10, LVSICF_NOINVALIDATEALL or LVSICF_NOSCROLL);
end;