Home » Tipps & Tricks » Komponenten » Menüs » Menüeintrag rechts im Formular ausrichten

Menüeintrag rechts im Formular ausrichten

Mit dieser Funktion kannst du Menüeinträge am rechten statt am linken Rand des Formulars anzeigen lassen. Es werden dabei alle Menüs ab dem angegebenen nach rechts verschoben. Hast du z.B. die Menüeinträge [Datei] [Bearbeiten] [Hilfe] [?], dann rufst du die Funktion im OnCreate-Ereignis des Formulars mit MenuItemRightJustify(Hilfe1); auf. Die Menüpunkte [Datei] und [Bearbeiten] bleiben links, [Hilfe] und [?] werden nach rechts verschoben.

function MenuItemRightJustify(MenuItem: TMenuItem): Boolean;
var
  Info: TMenuItemInfo;
  MenuHandle: THandle;
  MenuIndex: Integer;
  Caption: String;
begin
  MenuHandle := MenuItem.Parent.Handle;
  MenuIndex := MenuItem.MenuIndex;
  FillChar(Info, SizeOf(Info), 0);
  Info.cbSize := SizeOf(Info);
  Info.fMask := MIIM_TYPE;
  Result := GetMenuItemInfo(MenuHandle, MenuIndex, True, Info);

  if not Result then Exit;

  SetLength(Caption, Info.cch);
  Info.dwTypeData := Pointer(Caption);
  Info.cch := Info.cch + 1;
  Result := GetMenuItemInfo(MenuHandle, MenuIndex, True, Info);

  if not Result then Exit;

  Info.fType := Info.fType or MFT_RIGHTJUSTIFY;
  Result := SetMenuItemInfo(MenuHandle, MenuIndex, True, Info);
end;