
10.10.2007, 13:06
|
Прохожий
|
|
Регистрация: 06.10.2007
Сообщения: 7
Репутация: 10
|
|
Ошибка оказывается возникает в модуле Forms.pas !!!!:
ЗДЕСЬ: if FControl.FAutoScroll then
Код:
procedure TControlScrollBar.CalcAutoRange;
var
I: Integer;
NewRange, AlignMargin: Integer;
procedure ProcessHorz(Control: TControl);
begin
if Control.Visible then
case Control.Align of
alLeft, alNone:
if (Control.Align = alLeft) or (Control.Anchors * [akLeft, akRight] = [akLeft]) then
NewRange := Max(NewRange, Position + Control.Left + Control.Width);
alRight: Inc(AlignMargin, Control.Width);
end;
end;
procedure ProcessVert(Control: TControl);
begin
if Control.Visible then
case Control.Align of
alTop, alNone:
if (Control.Align = alTop) or (Control.Anchors * [akTop, akBottom] = [akTop]) then
NewRange := Max(NewRange, Position + Control.Top + Control.Height);
alBottom: Inc(AlignMargin, Control.Height);
end;
end;
begin
if FControl.FAutoScroll then
begin
if FControl.AutoScrollEnabled then
begin
NewRange := 0;
AlignMargin := 0;
for I := 0 to FControl.ControlCount - 1 do
if Kind = sbHorizontal then
ProcessHorz(FControl.Controls[i]) else
ProcessVert(FControl.Controls[i]);
DoSetRange(NewRange + AlignMargin + Margin);
end
else DoSetRange(0);
end;
end;
TControlScrollBar.CalcAutoRange вызывается в:
Код:
procedure TScrollingWinControl.WMSize(var Message: TWMSize);
var
NewState: TWindowState;
begin
Inc(FAutoRangeCount);
try
inherited;
NewState := wsNormal;
case Message.SizeType of
SIZENORMAL: NewState := wsNormal;
SIZEICONIC: NewState := wsMinimized;
SIZEFULLSCREEN: NewState := wsMaximized;
end;
Resizing(NewState);
finally
Dec(FAutoRangeCount);
end;
FUpdatingScrollBars := True;
try
CalcAutoRange;
finally
FUpdatingScrollBars := False;
end;
if FHorzScrollBar.Visible or FVertScrollBar.Visible then
UpdateScrollBars;
end;
|