![]() |
Desplegar por código el menú de sistema de una ventana
Hola a todos. En una aplicación utilizo paneles como barras de título de las ventanas, poniéndole yo los botones y toda la pesca. Mi problema es que no sé cómo hacer que se despliege el menú de sistema de la ventana (ese que aparece cuando pulsas sobre el icono de una ventana de Windows) al pulsar uno de los botones. Espero podais ayudarme. Gracias por adelantado y un saludo.
|
Programar en cualquier componente de pantalla que se desee que responda al click el siguiente código en el
evento MouseDown.
|
El siguiente código te desplegará el menú en la esquina superior izquierda de un botón:
// Saludos |
La solución de Neftalí fue la primera que pensé pero, al menos en mi caso, aunque sí muestra el menú, no responde a los comandos.
// Saludos |
Cita:
Revisando la API TrackPopupMenu dice lo siguiente: hWnd Identifies the window that owns the shortcut menu. This window receives all messages from the menu. The window does not receive a WM_COMMAND message from the menu until the function returns. y ésto: Remarks Accelerator keystrokes that select items from the window menu are translated into WM_SYSCOMMAND messages. Por lo tanto si el Handle que se le pasa como parámetro recibe el mensaje, se supone que se puede capturar ese mensaje y enviarlo a la cola de mensajes para que se procese. Define en la parte privada el método:
Funciona, pero la cosa se va complicando... La solución de Román como mínimo es más corta y funciona igual de bien. |
Cita:
// Saludos |
Gracias, funciona perfectamente. Por cierto, una última cosa: cómo puedo minimizar mi aplicación en la barra de tareas? (actualmente se minimiza en la parte inferior izquierda de la pantalla, usando el WindowState del form). Un saludo.
|
Prueba con:
Application.Minimize; Saludos. |
La franja horaria es GMT +2. Ahora son las 18:39:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi