Ver Fonte

dropdown placement according to multiple monitors

Juliette ELSASS há 8 meses atrás
pai
commit
0bf496b0e8
1 ficheiros alterados com 3 adições e 1 exclusões
  1. 3 1
      bccombobox.pas

+ 3 - 1
bccombobox.pas

@@ -202,6 +202,7 @@ const MinDelayReopen = 500/(1000*60*60*24);
 var
   p: TPoint;
   f: TCustomForm;
+  monitor: TMonitor;
 begin
   CreateDropDown;
 
@@ -239,7 +240,8 @@ begin
       FForm.Top := p.Y;
       FForm.Color := FDropDownBorderColor;
       AdaptDropDownContainerSize;
-      if FForm.Top + FForm.Height > Screen.WorkAreaTop + Screen.WorkAreaHeight then
+      monitor := Screen.MonitorFromPoint(p);
+      if FForm.Top + FForm.Height > monitor.WorkareaRect.Bottom then
         FForm.Top := FForm.Top - FForm.Height - Self.Height;
       if Assigned(FOnDropDown) then FOnDropDown(self);
       FQueryDropDownHide := false;