2012-01-07 7 views
10

Me gustaría tener una opción desde mi aplicación para alternar la visualización del menú principal.Ocultar TActionMainMenuBar?

La funcionalidad se puede seguir utilizando a través de la barra de herramientas, etc., por lo que ocultar el menú no le quitará nada. Ocultar el menú es realmente una opción GUI para el usuario.

De todos modos, mi menú principal se configura usando TActionMenuBar y TActionManager (para el estilo XP alphablend).

Intenté simplemente establecer la propiedad Visible de MainMenuBar que dio como resultado este mensaje de error: "ActionMainMenuBar no permite ocultarse".

Pensé que era un poco extraño, dado que existe la propiedad Visible. ¿Por qué estaría allí, si realmente no puedo cambiarlo?

Como de costumbre, esperaba que se tratara de un simple caso de cambio de una configuración y voila, pero no, creo que esto puede requerir más trabajo, ni siquiera sé por dónde empezar o qué buscar.

Apreciar sus ideas y sugerencias gracias.

+0

Esta es una buena pregunta. Sugiero que profundices en el código fuente de la VCL para TActionMenuBar. –

+0

Gracias Warren, voy a echar un vistazo. Estoy interesado en ver por qué hay una propiedad Visible, especialmente si no se puede usar. –

+0

@Craig - He respondido tu pregunta, no necesitas jugar con las fuentes, etc. –

Respuesta

8

Debe establecer AllowHiding en 'verdadero' antes de establecer Visible en 'falso'.

+0

Gracias por señalar AllowHiding, no vi esto. No veo por qué debería haber una necesidad de propiedad AllowHiding, podría estar vinculada a la propiedad Visible. –

+3

@ Craig: la propiedad está ahí en caso de que los usuarios puedan personalizar las barras de herramientas. Es posible que desee que los usuarios puedan ocultar las barras de herramientas, pero no la barra de menús. –

+0

Oh, ya veo, bueno, entonces supongo que tiene sentido! Gracias, Sertac, agradece tu ayuda. –

0

El menú generalmente está asociado con el formulario principal, por lo que establecer Form1.Menu: = nil lo ocultará y Form1.Menu: = MainMenu lo mostrará.

+3

No, no puede establecer un ActionMainMenuBar a través de la propiedad del menú de un formulario. –