delphi 如何防止滚动条超出范围?

2mbi3lxu  于 2023-04-20  发布在  其他
关注(0)|答案(2)|浏览(156)

我用密码

procedure TMyCanvas.RichEditChange(Sender: TObject);
var
  ScrollInfo: TScrollInfo;
begin

  FillChar(ScrollInfo, SizeOF(ScrollInfo), 0);
  ScrollInfo.cbSize := SizeOf(ScrollInfo);
  ScrollInfo.fMask := SIF_RANGE or SIF_PAGE or SIF_POS;
  if GetScrollInfo(FRichEdit.Handle, SB_VERT, ScrollInfo) then
  begin
    FVertScroll.Max := ScrollInfo.nMax;
    FVertScroll.Min := ScrollInfo.nMin;
    FVertScroll.PageSize := ScrollInfo.nPage;
    FVertScroll.Position := ScrollInfo.nPos;
  end;
  Invalidate;
end;

问题是,当我添加/删除行时,当我要调整窗体大小时,它有时会给我错误。它说“滚动条属性超出范围”
怎么才能避免呢?
谢谢

8fq7wneg

8fq7wneg1#

您可以尝试设置PageSize属性,并调用SetParams以避免逐个设置单个属性。

qij5mzcb

qij5mzcb2#

我收到这个错误消息,发现在初始化滚动条时发生了一个变化,即当PageSize为2时,TScrollbar.Max被设置为0。在Max为0之前将PageSize设置为0解决了这个问题。

相关问题