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.
Ej:
Total Commanader, por ejempo, utiliza ésta característica
con el menú ade ayuda:
{:Pasa un item de menú a la derecha de la pantalla.
Pasa un item de menú y todos los que hay a su derecha a la parte "derecha" de
la barra de menús del formulario.}
procedure MenuItemAtRight (MainMenu:TMainMenu; Position:Integer);
var
Handle:HMENU;
MenuItemInfo:TMenuItemInfo;
Buffer: array[0..79] of char;
begin
// Coger el handle del menu principal
Handle := MainMenu.Handle;
// Rellenar estructura
FillChar (MenuItemInfo, SizeOf(TMenuItemInfo), 0);
MenuItemInfo.cbSize := SizeOf(TMenuItemInfo);
MenuItemInfo.fMask := MIIM_TYPE;
MenuItemInfo.dwTypeData := Buffer;
MenuItemInfo.cch := SizeOf(Buffer);
// No se puede obtener la informacion del item del menú ?
if not GetMenuItemInfo(Handle, Position, True, MenuItemInfo) then begin
// salir
Exit;
end;
// Modificar el tipo de menú para ponerlo a la derecha
MenuItemInfo.fType := MenuItemInfo.fType or MF_RIGHTJUSTIFY;
// No se puede establecer informacion del item de menú
if not SetMenuItemInfo (Handle, Position, True, MenuItemInfo) then begin
Exit;
end;
end;