Mirror

How to determine the width of a TMainMenu (Views: 100)


Problem/Question/Abstract:

How do I determine the width of a TMainMenu? I want to ensure that the form is not resized to less than the width of the TMainMenu on the form.

Answer:

The menu bar will automatically wrap when that happens, so it is not a catastrophy. There is a GetMenuItemRect API function you may want to try to get the information you are after.

procedure TForm1.Button1Click(Sender: TObject);
var
  r: TRect;
  i: Integer;
begin
  for i := 0 to mainmenu1.Items.Count - 1 do
  begin
    Win32Check(GetMenuItemrect(handle, mainmenu1.handle, i, r));
    memo1.lines.add(format('Item %d: (%d, %d), (%d, %d)', [i, r.left, r.top, r.right,
      r.bottom]));
  end;
end;

Note that the coordinates returned are screen-coordinates.

<< Back to main page