DruckenMister WongFacebook

Menüeintrag rechts im Formular ausrichten

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

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;