Auf die eigenen Bedürfnisse anpassen, um das Popupfenster mit dem Eintrag entsprechend zu verschieben.
Wobei _DefaultItems die normalen Einträge eines PopupMenus sind
Delphi-Quellcode:
class function GetPopupHeight(_DefaultItems : Integer; _DrawedItems : Integer = 0; _DrawedHintItems : Integer = 0; _Lines : Integer = 0; _DrawedLines : Integer = 0) : Integer;
var
i : Integer;
begin
if not IsWinVista then
begin
if _DrawedHintItems > 0 then
i := 6
else
i := 5;
Result := i +
((_DefaultItems * 19)+
(_DrawedItems * 23)+
(_DrawedHintItems * 40)+
(_Lines * 8)+
(_DrawedLines * 4))*Screen.PixelsPerInch div 96;
end else begin
if _DrawedHintItems > 0 then
i := 6
else
i := 5;
Result := i +
((_DefaultItems * 19)+
(_DrawedItems * 26)+
(_DrawedHintItems * 45)+
(_Lines * 8)+
(_DrawedLines * 4)*Screen.PixelsPerInch div 96);
end;
end;
var
p : TPoint;
begin
p := Panel.ClientToScreen(Point(button.Left,button.Top));
pm.Popup(p.X,p.Y-GetPopupHeight(5)););