diff --git a/lcl/forms.pp b/lcl/forms.pp index ca2ab73ac1..3b6a6119f7 100644 --- a/lcl/forms.pp +++ b/lcl/forms.pp @@ -533,6 +533,8 @@ type procedure Notification(AComponent: TComponent; Operation : TOperation);override; procedure PaintWindow(dc : Hdc); override; procedure RequestAlign; override; + procedure CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); override; procedure SetZOrder(Topmost: Boolean); override; procedure SetParent(NewParent: TWinControl); override; procedure MoveToDefaultPosition; virtual; diff --git a/lcl/include/customform.inc b/lcl/include/customform.inc index fe70b36b7c..5fdef192b7 100644 --- a/lcl/include/customform.inc +++ b/lcl/include/customform.inc @@ -1042,6 +1042,23 @@ Begin inherited RequestAlign; end; +procedure TCustomForm.CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); +var + WorkArea: TRect; +begin + inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, + WithThemeSpace); + if Anchors*[akRight,akBottom]<>[] then begin + // do size bigger than the monitor workarea + WorkArea:=Monitor.WorkareaRect; + if akRight in Anchors then + PreferredWidth:=min(PreferredWidth,WorkArea.Right-WorkArea.Left); + if akBottom in Anchors then + PreferredHeight:=min(PreferredHeight,WorkArea.Bottom-WorkArea.Top); + end; +end; + {------------------------------------------------------------------------------ TCustomForm SetDesigner ------------------------------------------------------------------------------}