A veces es interesante poder situar una o varias opciones de un menú a la parte derecha, como una forma de diferenciarlas de las demás o por una característica púramente estética. Utilizando el siguiente procedimiento se pueden mover uno o varios ítems.
Definimos un menú y sus ítems de la forma estandard en Delphi.
Llamamos a éste procedimiento (en el OnShow del formulario por ejemplo) con el menú como parámetro y en índice del elemento que queremos "mover" a la parte derecha; Ese y los siguiente serán desplazados a la parte derecha de la zona del título. Consideramos el primer elemento con el ídice 0.
El código de la función es:
Código Delphi
[-]
procedure MenuItemAtRight (MainMenu:TMainMenu; Position:Integer);
var
Handle:HMENU;
MenuItemInfo:TMenuItemInfo;
Buffer: array[0..79] of char;
begin
Handle := MainMenu.Handle;
FillChar (MenuItemInfo, SizeOf(TMenuItemInfo), 0);
MenuItemInfo.cbSize := SizeOf(TMenuItemInfo);
MenuItemInfo.fMask := MIIM_TYPE;
MenuItemInfo.dwTypeData := Buffer;
MenuItemInfo.cch := SizeOf(Buffer);
if not GetMenuItemInfo(Handle, Position, True, MenuItemInfo) then begin
Exit;
end;
MenuItemInfo.fType := MenuItemInfo.fType or MF_RIGHTJUSTIFY;
if not SetMenuItemInfo (Handle, Position, True, MenuItemInfo) then begin
Exit;
end;
end;
Puedes llamar a ésta función de la siguiente forma (en el OnShow del form, como hemos comentado):
Código Delphi
[-]
MenuItemAtRight(Self.MainMenu1, 3);
MenuItemAtRight(Self.MainMenu1,
Windows.GetMenuItemCount(Self.MainMenu1.Handle)-1);