From 5d6cad752d14df1c0ca7481442e28c343645a5eb Mon Sep 17 00:00:00 2001 From: michl Date: Thu, 6 May 2021 20:23:34 +0000 Subject: [PATCH] LCL: Fixed TForm.AutoScroll does not turn off scrollbars if UNCHECKED while scrollbars are showing. Issue #38856 git-svn-id: trunk@65089 - --- lcl/forms.pp | 1 + lcl/include/scrollingwincontrol.inc | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lcl/forms.pp b/lcl/forms.pp index e436715612..d61c91ff8b 100644 --- a/lcl/forms.pp +++ b/lcl/forms.pp @@ -160,6 +160,7 @@ type FIsUpdating: Boolean; procedure SetHorzScrollBar(Value: TControlScrollBar); procedure SetVertScrollBar(Value: TControlScrollBar); + procedure HideScrollbars; protected class procedure WSRegisterClass; override; procedure AlignControls(AControl: TControl; var ARect: TRect); override; diff --git a/lcl/include/scrollingwincontrol.inc b/lcl/include/scrollingwincontrol.inc index 33dd74ede9..139d190ced 100644 --- a/lcl/include/scrollingwincontrol.inc +++ b/lcl/include/scrollingwincontrol.inc @@ -13,7 +13,10 @@ procedure TScrollingWinControl.SetAutoScroll(Value: Boolean); begin if FAutoScroll = Value then Exit; FAutoScroll := Value; - UpdateScrollBars; + if Value then + UpdateScrollBars + else + HideScrollbars; end; procedure TScrollingWinControl.CreateWnd; @@ -142,6 +145,24 @@ begin FVertScrollbar.Assign(Value); end; +procedure TScrollingWinControl.HideScrollbars; +begin + if Assigned(FHorzScrollBar) and FHorzScrollBar.HandleAllocated then + begin + ShowScrollBar(FHorzScrollBar.ControlHandle, SB_Horz, False); + FHorzScrollBar.Range := 0; + FHorzScrollBar.Page := 80; + FHorzScrollBar.Position := 0; + end; + if Assigned(FVertScrollBar) and FVertScrollBar.HandleAllocated then + begin + ShowScrollBar(FVertScrollBar.ControlHandle, SB_Vert, False); + FVertScrollBar.Range := 0; + FVertScrollBar.Page := 80; + FVertScrollBar.Position := 0; + end; +end; + procedure TScrollingWinControl.WMSize(var Message: TLMSize); var NewState: TWindowState;