Delphi 如何防止滚动条超出范围?
我使用代码Delphi 如何防止滚动条超出范围?,delphi,properties,scrollbar,outofrangeexception,Delphi,Properties,Scrollbar,Outofrangeexception,我使用代码 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 Ge
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;
问题是,当我添加/删除行时,有时在调整表单大小时会出现错误。上面写着“滚动条属性超出范围”
我怎样才能避免呢
thanx您可以尝试设置属性,并调用以避免逐个设置单个属性。哪一行确实引发了异常?我只是猜测
Min
或Max
是一个进行绑定检查的属性。您也可以尝试SetPageSize
,SetParams
来避免逐个设置单个属性。@TOndrej,回答这个问题吧!如果更改富编辑的内容时没有出现错误,我怀疑OnChange处理程序中的代码与此有关。+1。仅当最小值>最大值或Max@Cosmin-最小值>最大值和Max@Sertac,如果您从Min=100
和Max=200
开始,您可以获得Min>Max
设置Min=300
,您可以获得Max