Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.220
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
"Pasar" uno o varios ítems de un menú a la parte derecha

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 [-]
{: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;

Puedes llamar a ésta función de la siguiente forma (en el OnShow del form, como hemos comentado):

Código Delphi [-]
  // Para poner el tercer elemento y los siguientes:
  MenuItemAtRight(Self.MainMenu1, 3);

  // Para poner el último elemento:
  MenuItemAtRight(Self.MainMenu1, 
  Windows.GetMenuItemCount(Self.MainMenu1.Handle)-1);
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:38:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi