Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
SysMenu y/u otras opciones de la Barra de Título

Hola de nuevo compañeros del foro !

Estoy indagando acerca de modificar el SysMenu de un form, u otras opciones de tratar la barra de título de un form.

He conseguido añadir mi opción al Sysmenu que se despliega cuando se pincha en el icono del Form que aparece en la barra de título, o bien cuando (en mi caso particular por ser un Form MDI), cuando se minimiza el form y aparece abajo en el contenedor MDI.

Para ello utilizo el siguiente código
Código Delphi [-]
const
  SC_MyMenuItem1 = WM_USER + 1;
 
...
 
procedure TMain.FormCreate(Sender: TObject);
const
  sMyMenuCaption1 = 'Mi opción de Menu';
var
  SysMenu : HMenu;
begin
  {Get system menu}
  SysMenu := GetSystemMenu(Handle, FALSE) ;
  {Add a seperator bar to main form-form1}
  AppendMenu(SysMenu, MF_SEPARATOR, 0, '') ;
  {add our menu}
  AppendMenu(SysMenu, MF_STRING, SC_MyMenuItem1, sMyMenuCaption1) ;
  ...
end;

Quiero intentar conseguir dos opciones más. Una ponerle un icono a mi opción del Sysmenu. Para ello he encontrado la referencia a :
Cita:
SetMenuItemBitmaps Function

The SetMenuItemBitmaps function associates the specified bitmap with a menu item. Whether the menu item is selected or clear, the system displays the appropriate bitmap next to the menu item.

Syntax


BOOL SetMenuItemBitmaps( HMENU hMenu, UINT uPosition, UINT uFlags, HBITMAP hBitmapUnchecked, HBITMAP hBitmapChecked);
Parameters
hMenu [in] Handle to the menu containing the item to receive new check-mark bitmaps. uPosition [in] Specifies the menu item to be changed, as determined by the uFlags parameter. uFlags [in] Specifies how the uPosition parameter is interpreted. The uFlags parameter must be one of the following values. MF_BYCOMMAND Indicates that uPosition gives the identifier of the menu item. If neither MF_BYCOMMAND nor MF_BYPOSITION is specified, MF_BYCOMMAND is the default flag. MF_BYPOSITION Indicates that uPosition gives the zero-based relative position of the menu item.hBitmapUnchecked [in] Handle to the bitmap displayed when the menu item is not selected. hBitmapChecked [in] Handle to the bitmap displayed when the menu item is selected.
Lo que no sé es como obtener el Handle de un Bitmap cualquiera que quiera insertar. (Utilizo Delphi 2006 VCL.Net y a mi entender no me permite utilizar punteros).

También me gustaría añadir una combinación de teclas 'ShortCut' a mi opción del SysMenu.

Y por último preguntar si existe la opción de interceptar de alguna manera la pulsación del botón derecho del ratón sobre la barra de título, que también me serviría a falta de modificación del SysMenu.

Muchas gracias por vuestra ayuda.

Edito : Quiero de nuevo especificar que el evento que quiero capturar con respecto al botón derecho del ratón sobre la barra de título es en un form MDIChild. He visto que sobre el Form principal se aplica lo mismo que lo explicado para el SysMenu.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 15-12-2006 a las 17:56:14.
Responder Con Cita
  #2  
Antiguo 15-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Para obtener el handle del bitmap puedes usar la función LoadBitmap o incluso puedes usar la propiedad Handle de un objeto TBitmap.
Responder Con Cita
  #3  
Antiguo 15-12-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias de nuevo Domingo por responder tan rápido.

Puedes ponerme por favor un ejemplo de como obtener el Handle. Me pierdo con esto de los Handle.

Sigo indagando y he encontrado la descripción completa de MENUITEMINFO en http://msdn2.microsoft.com/en-us/library/ms647578.aspx y de INSERTMENUITEM en http://msdn2.microsoft.com/en-us/library/ms647988.aspx , pero creo que con eso me he liado más todavía !

Creo que sería más conveniente utilizar INSERTMENUITEM en vez de AppendMenu. Pero Uffff !, creo que lograr insertar mi propia opción con un gráfico y una combinación de teclas va a ser un poco más complicado de lo que creía.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 15-12-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.272
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
La clase TBitmap tiene la propiedad Handle; Es la que yo he utilizado y me ha funcionado correctamente. Eso sí, con Delphi 6 no con .NET.

En cuanto a las ShortCut, no conseguí hacerlas aparecer; Tampoco era prioritario, así que no estuve mucho, pero en una primera pasada no conseguí que me saliera. Si lo consigues postéalo.

Gracias.

EDITO: Me dormí con el mensaje abierto y llegué tarde, muy tarde...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 15-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por gluglu
Puedes ponerme por favor un ejemplo de como obtener el Handle. Me pierdo con esto de los Handle.
Usando un TBitmap, por ejmplo, podemos hacer algo como esto:
Código Delphi [-]
var
  Bitmap: TBitmap;

Bitmap:= TBitmap.Create('c:\abc.bmp');
//Ahora usa la propieda Bitmap.Handle para lo que quieras


// Cuando ya no lo necesites acuerdate de destruirlo
Bitmap.Free;
Responder Con Cita
  #6  
Antiguo 15-12-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Ya me estoy aclarando con los Handle ...

Sigo probando. Si logro algo concreto, aviso !
__________________
Piensa siempre en positivo !
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
URL en la barra de titulo??? Jonnathan Varios 7 30-01-2006 20:43:24
Deshabilitar boton de la barra de título abracadabra OOP 2 21-12-2005 23:51:46
Label en la Barra de Titulo... nicolasdom Varios 1 04-10-2004 23:46:31
personalizar titlebar(barra de titulo) vtdeleon Gráficos 1 18-05-2004 15:26:35
personalizar titlebar(barra de titulo) vtdeleon OOP 0 16-05-2004 00:35:45


La franja horaria es GMT +2. Ahora son las 17:25:11.


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