Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Herencia y PopupMenu

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Herencia y PopupMenu Responder citando

Hola chicos, estoy creando una aplicación cuyo Form principal es del tipo MDI. He puesto un TPopUpMenu para que cuando se pulse con el botón derecho del ratón en la ventana MDI, aparezca el típico menú de contexto para organizar las ventanas hijas en cascada, mosaico, etc... El problema es que cuando creo una ventana hija normalmente hago esto:

Código:

FormHijo = new TFormHijo (this);     //this es la ventana padre MDI
...


Es decir, creo la formulario hijo que es del tipo MDI Child y hago que el propietario sea la formulario principal MDI. Pues bien, el problema es que el formulario hijo hereda las propiedades del formulario que lo crea, entre ellas la propiedad PopupMenu con lo cual, cuando pulso con el botón derecho del ratón en el formulario hijo también me aparece el menú para organizar ventanas en cascada, mosaico, etc... La pregunta por tanto es: ¿cómo hago para que no aparezca el menú de contexto de la ventana hija?

Espero haberme explicado, gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Acabo de hacer la prueba y tienes razón Confused .
Lo único que se me ocurre es insertar un nuevo TPopUpMenu vacío (sin items definidos) dentro del Form hijo y en las propiedades del Form hijo asignarle este nuevo popup vacio, así cuando ejecutas el botón secundario encima del Form hijo no salta ningún popup. Es un poco chapuza pero bueno..
Saludos.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias por tu respuesta Tugui, pero me gustaría controlar el que aparezca el PopupMenu en el Form MDI padre. El tema es que hay muchos Form MDI Child diferentes y hacer eso que dices en cada uno de ellos, aunque funciona perfectamente, es muy laborioso.

Sigo buscando alguna solución más elegante. He intentado definir el evento OnContextPopup del Form MDI padre como virtual, pero por lo visto, los eventos de la sección __published: no puede ser virtuales.

También he intentado dejar la propiedad PopupMenu vacía y asignarla en el constructor del MDI padre:

Código:

__fastcall TfrmMenu::TfrmMenu(TComponent* Owner) : TForm(Owner)
{
  PopupMenu = PopupMenu1;
}


pero esto tampoco funciona, porque las características del Form se copian en el momento en que se crea con new el Form MDI Child.

Si a alguien se le ocurre algo... Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Puedes probar con el siguiente código en el evento OnContextPopup de la ventana MDI padre solamente:
Código:

char c[255];
GetClassName(WindowFromPoint(ClientToScreen(MousePos)), c, sizeof(c));
Handled = CompareStr(ClassName(), c);

Lo que hace es comparar el nombre de clase de ventana sobre la que hacemos click con el nombre de clase de la ventana padre y si no coincide no dejamos que se muestre el popupmenu.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchísimas gracias por tu ayuda... Era eso precisamente lo que quería. Laughing
Un saludo y adelante con el foro.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.