Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Deshabilitar TMainMenu

¿Existe la posibilidad de deshabilitar un TMainMenu por código sin tener que ir yendo opción por opción? He estado mirando y TMainMenu no tiene la propiedad Enabled a nivel de elemento.
Responder Con Cita
  #2  
Antiguo 05-09-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

¿Deshabilitar todo el menú? Si no se pudiese, tal vez ocultarlo... Personalmente, suelo utilizar "acciones" que luego asocio a los elementos del menú correspondientes: dichas acciones tienen un evento "OnUpdate" muy útil, porque, permite determinar si el elemento en cuestión, la misma acción, debe estar habilitada o no. Así, cada uno de los elementos se habilitan y deshabilitan dependiendo de si sus acciones correspondientes pueden llevarse a cabo o no.

Sé que con esto no respondo a tu pregunta, pero, en fin, igual algún otro compañero puede aportar otra cosa.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-09-2018 a las 13:28:22.
Responder Con Cita
  #3  
Antiguo 05-09-2018
RRenault RRenault is offline
Miembro
 
Registrado: may 2003
Posts: 10
Poder: 0
RRenault Va por buen camino
Saludos

Código Delphi [-]
var
Contador, Indice : Integer;
begin
   with Form1 Do begin
          Contador := Form1.ComponentCount;
          for Indice := 0 to Contador - 1 do begin

          if (Form1.Components[Indice] is TMenuItem) then begin
              TMenuItem( FindComponent ( Form1.Components[Indice].Name) ).Enabled := False;
              TMenuItem( FindComponent ( Form1.Components[Indice].Name) ).Visible := False;
          end;

     end;
  end;
Responder Con Cita
  #4  
Antiguo 05-09-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Lo imaginaba. Gracias a los dos por las respuestas.
Responder Con Cita
  #5  
Antiguo 05-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Otras alternativas:

1.-
Código PHP:
...

void MainMenuEnabled(TMainMenu *mmbool On true)
{
   for( 
int i 0mm->Items->Counti++ )
    
mm->Items->Items[i]->Enabled On;
}

// Ej. de uso:
void __fastcall ...
{
  
MainMenuEnabled(MainMenu1false);  // disabled
  
MainMenuEnabled(MainMenu1);         // enabled    
... 
2.-
Código PHP:
...

class 
TMainMenuEx : public TMainMenu
{
private:
  
SetMainMenuOnOff(const bool On true)
  {
    for( 
int i 0Items->Counti++ )
      
Items->Items[i]->Enabled On;
  }
public:
  
__property bool Enabled = { write SetMainMenuOnOff };
};

// Ej. uso:
void __fastcall ...
{
  
TMainMenuEx *mme static_cast<TMainMenuEx*>(MainMenu1);

  
mme->Enabled false// disabled
  
mme->Enabled true;  // enabled
... 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 06-09-2018
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
hola

una forma simple de ocultar un MainMenu sin alterar sus elementos es asignando NULL a la propiedad menú del formulario contenedor. Esto funciona bien en DELPHI, imagino que al ser los objetos en C++ similares también debería de funcionar

Código Delphi [-]
    procedure SetMainMenuEnabled(const Value: Boolean);
    function GetMainMenuEnabled: Boolean;
...

    property MainMenuEnabled:Boolean read GetMainMenuEnabled write SetMainMenuEnabled;


...

procedure TForm1.SetMainMenuEnabled(const Value: Boolean);
begin
  if value then
    Menu := MainMenu1
  else
    Menu := nil;
end;

function TForm1.GetMainMenuEnabled: Boolean;
begin
  Result := assigned(menu);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MainMenuEnabled := not MainMenuEnabled;
end;
Responder Con Cita
  #7  
Antiguo 06-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola bucanero.

Si esa también es otra opción que funciona perfectamente en C++ Builder.
Pero como bién indicas, no desactiva el TMainMenu sino que cambia su visibilidad.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cascade() sin TMainMenu Diego827 Varios 1 19-10-2011 03:17:45
Deshabilitar submenu de un TMainMenu Ziara C++ Builder 5 16-02-2009 14:01:33
color TMainMenu VRO OOP 0 12-06-2008 18:45:21
TmainMenu no en top del form jonmendi OOP 1 14-04-2008 18:19:53
!TmainMenu Desplegado Carlosguiland OOP 1 09-11-2004 20:28:11


La franja horaria es GMT +2. Ahora son las 09:38:03.


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