Menu en Mdi
Menu en Mdi
Hola a todos,
Estoy trabajando con ventanas MDI.
Se trata de una aplicación antigua y la estoy actualizando, con lo que no sé si la cuestión está en el propio código, yo no lo encuentro.
El caso es que al abrir una nueva ventana MdiChild, en la última opción del menú se añade una linea (como un MENUITEM más) con el nombre de la ventana, de manera que en teoría al seleccionar esta nueva opción del menú se le da el foco a la ventana correspondiente.
Pero es que además si altero el menú eliminando o añadiendo opciones, esto no sucede.
Me estoy volviendo un poco loco, ya no sé qué mirar, no encuentro el código correspondiente que hace eso.
¿Cómo se puede desactivar esta funcionalidad?
¿Dónde está?
Muchas gracias
Estoy trabajando con ventanas MDI.
Se trata de una aplicación antigua y la estoy actualizando, con lo que no sé si la cuestión está en el propio código, yo no lo encuentro.
El caso es que al abrir una nueva ventana MdiChild, en la última opción del menú se añade una linea (como un MENUITEM más) con el nombre de la ventana, de manera que en teoría al seleccionar esta nueva opción del menú se le da el foco a la ventana correspondiente.
Pero es que además si altero el menú eliminando o añadiendo opciones, esto no sucede.
Me estoy volviendo un poco loco, ya no sé qué mirar, no encuentro el código correspondiente que hace eso.
¿Cómo se puede desactivar esta funcionalidad?
¿Dónde está?
Muchas gracias
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- leandro
- Posts: 1770
- Joined: Wed Oct 26, 2005 2:49 pm
- Location: Colombia
- Has thanked: 49 times
- Been thanked: 12 times
- Contact:
Re: Menu en Mdi
Puedes personalizar el menu el inicio de la aplicación, nosotros lo hacemos de la siguiente manera:
Code: Select all | Expand
**********************************
*MENU PARA CONTROL DE VENTANAS MDI
**********************************
function BuildMenu2()
local oMenu
MENU oMenu COLORPNEL oLamcla:nClrTxtMenu, oLamcla:nClrMenu
MENUITEM "&Organizar Ventanas"
MENU
MENUITEM "&Salir" RESOURCE oLamcla:cIcoCer ACTION ( oWnd:closeall(),oWnd:End())
SEPARATOR
MENUITEM "&Ventanas"
MENU
MENUITEM "Mosaico" RESOURCE oLamcla:cIcoMos action( oWnd:Tile() )
MENUITEM "Cascada" RESOURCE oLamcla:cIcoCas action( oWnd:Cascade() )
MENUITEM "Minimizar" RESOURCE oLamcla:cIcoMin action( oWnd:iconizeall() )
MENUITEM "Cerrar Todas" RESOURCE oLamcla:cIcoTod action( oWnd:Closeall() )
ENDMENU
ENDMENU
ENDMENU
return oMenu
...
...
DEFINE WINDOW oWnd MDI TITLE ttitu ICON "#8001" BRUSH oBrsh
...
...
oWnd:bPainted := {|hDC| FW_DrawImage( hDC, ".\res\fondo-logo.png", { 0,0, 668, 668 } ),;
oRBar:CalcPos(), oWnd:SetMenu( BuildMenu2() )}
...
...
ACTIVATE WINDOW oWnd
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Menu en Mdi
Hola, Si entendí bien, y lo que quieres es desactivar que se agregue el menuitem al abrir la ventana MdiChild, puedes intentar con:
Code: Select all | Expand
DEFINE WINDOW oWnd MDI TITLE "MI VENTANA MDI" ;
MENUINFO 0 //<-- esto
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- Antonio Linares
- Site Admin
- Posts: 42643
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 59 times
- Been thanked: 93 times
- Contact:
Re: Menu en Mdi
Carlos,
Puedes construir FWH\samples\testmdi2.prg y comprobar si todo va bien ?
gracias
Puedes construir FWH\samples\testmdi2.prg y comprobar si todo va bien ?
gracias
Re: Menu en Mdi
FranciscoA wrote:Hola, Si entendí bien, y lo que quieres es desactivar que se agregue el menuitem al abrir la ventana MdiChild, puedes intentar con:Code: Select all | Expand
DEFINE WINDOW oWnd MDI TITLE "MI VENTANA MDI" ;
MENUINFO 0 //<-- esto
Hola Francisco,
Parece que funciona.
Muchas gracias,
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Re: Menu en Mdi
Antonio Linares wrote:Carlos,
Puedes construir FWH\samples\testmdi2.prg y comprobar si todo va bien ?
gracias
Lo curioso es que a veces aparecen estas opciones (opciones de menú con el nombre de la ventana), y a veces no.
Voy a ver si construyo el ejemplo.
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- karinha
- Posts: 7956
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 4 times
- Contact:
Re: Menu en Mdi
Carlos, ¿podrías mostrar una foto por favor? Es un poco confuso. Gracias.
Regards, saludos.
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: Menu en Mdi
karinha wrote:Carlos, ¿podrías mostrar una foto por favor? Es un poco confuso. Gracias.
Regards, saludos.
No sé como poner una foto aquí. La tengo en mi disco duro.
Aprovecho y explico.
Indicando la cláusula "MENUINFO 0" se resuelve:
DEFINE WINDOW AMPAArra[1][1][2][1][1] MDI ; // Definimos la ventana
FROM 2,2 TO 30,80; // Coordenadas
TITLE "El titulin" ; // Título
MENU MenuMain( AMPAArra ) ; // Menú
MENUINFO 0
Cómo reproduzco el error (sin indicar MENUINFO 0) ?
a-abro ventana MDI con el menú definido MenuMain( AMPAArra )
b-abro ventana MDICHID
c-realizo un AMPAArra[1][1][2][1][1]:Setmenu( nuevomenu( AMPAARRA) )
Ahora el menú 'principal/horizontal' tiene 10 opciones; funciona correctamente, la opción 'Ayuda' es correcta.
d-realizo un nuevo AMPAArra[1][1][2][1][1]:Setmenu( masnuevomenu( AMPAARRA) )
Ahora el menú 'principal/horizontal' tiene MÁS de 10 opciones; se muestra en la última opción 'Ayuda' un menú tipo MRU con tantas opciones como ventanas MDI tenga abiertas.
Es algo muy raro, puedo realizar las acciones b, c y d las veces que quiera, y en un menú no aparecen estas opciones tipo MRU y en el otro si.
Gracias,
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- Antonio Linares
- Site Admin
- Posts: 42643
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 59 times
- Been thanked: 93 times
- Contact:
- karinha
- Posts: 7956
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 4 times
- Contact:
Re: Menu en Mdi
Gracias Karinha, sigo haciendo pruebas.
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Re: Menu en Mdi
Antonio Linares wrote:Carlos,
Puedes proporcionar el PRG completo para probarlo aqui ?
gracias
Hola Antonio,
No puedo proporcionarlo porque forma parte de un entramado de ventanas y de una arquitectura propia del programa que me impide desvincular el código sin modificarlo mucho.
Si que he conseguido compilar testmdi2.prg, en él se crean de manera automática los menús Child, Window y Help, del menú Window se cuelgan MRU con los nombres de las ventanas que se van creando y permite acceder a cada ventana pulsando sobre el MRU correspondiente.
En mi caso el menu MRU lo crea en la última opción del menu, "Ajuda", però no funciona el acceder mediante el MRU a la ventana escogida; debe ser cosa de como están relacionadas las propias ventanas en esa arquitectura, el programa siempre tiene una MDI Hide(), quizás esto perjudique el funcionamiento de los accesos MRU, o la difinición propia del ACTION del MRU con un Handle de ventana erróneo (porque esa ventana oculta aparece en el MRU y no debería), no sé.
Si que he creado un prova.prg para jugar con las MDI; cuando lo ejecuto, el menu MRU se cuelga de la primera opción de menú, no tengo ni idea de por que se cuelga de esa opción y no de la última que se llama "Ayuda".
La cuestión es que indicando la cláusula "MENUINFO 0" el MRU no se crea, que es lo que quería.
Agradezco el interés pero lo dejaré aquí, estoy agotado estos días y el problema lo tengo resuelto... supongo.
El prova.prg:
Code: Select all | Expand
#include "FiveWin.ch"
STATIC oMdi := Nil
STATIC nContador := 0
/* Aquí empieza el program principal.
----------------------------------*/
FUNCTION MAIN()
/* Se define la ventana principal
---------------------------------*/
DEFINE WINDOW oMdi MDI ; // Definimos la ventana
FROM 2,2 TO 30,80; // Coordenadas
TITLE "Prova." ; // Título
MENU MenuMain() ; // Menú
MENUINFO 0
/* Se define la barra de mensajes
---------------------------------*/
SET MESSAGE OF oMdi ;
TO "aa " ;
CENTERED ;
CLOCK ;
DATE ;
KEYBOARD ;
NOINSET
/* Se activa la ventana principal
---------------------------------*/
ACTIVATE WINDOW oMdi ;
MAXIMIZED ;
ON INIT ( .T. ) ;
VALID ( MsgNoYes("Vol sortir del programa?", "Atenció!" ) )
Return Nil
// Fi de la funció d'arrancada.
/* *************************************************** */
/* *************************************************** */
FUNCTION MenuMain()
Local oMenumain := Nil
MENU oMenumain
MENUITEM "1ro."
MENU
MENUITEM "Ventanita, ventanita" ACTION mdichild()
MENUITEM "Cambia a menu 10" ACTION Menu10()
MENUITEM "Cambia a menu > 10" ACTION MenuMas10()
MENUITEM "&Sortir" ACTION oMdi:End()
ENDMENU
ENDMENU
Return oMenumain
/* *************************************************** */
/* *************************************************** */
FUNCTION MdiChild()
Local oLaMdiChid
DEFINE WINDOW oLaMdiChid MDICHILD FROM 0,0 TO 520,804 TITLE ;
"Ventanita, ventanita.." + Str( ++nContador,3,0) OF oMdi ;
NOZOOM PIXEL //FIVEWIDI
@ 408,721 SAY "Aquí estamos.." + Str( ++nContador,3,0) OF oLaMdiChid COLORS CLR_HBLUE,CLR_HRED ;
CENTER PIXEL SIZE 15,15 UPDATE //FIVEWIDI
ACTIVATE WINDOW oLaMdiChid
Return Nil
/* *************************************************** */
/* *************************************************** */
FUNCTION Menu10()
Local oMenu10 := Nil
MENU oMenu10
MENUITEM "Opcion 1"
MENU
MENUITEM "Ventanita, ventanita" ACTION mdichild()
MENUITEM "Cambia a menu 10" ACTION Menu10()
MENUITEM "Cambia a menu > 10" ACTION MenuMas10()
MENUITEM "&Sortir" ACTION oMdi:End()
ENDMENU
MENUITEM "Opcion 2"
MENUITEM "Opcion 3"
MENUITEM "Opcion 4"
MENUITEM "Opcion 5"
MENUITEM "Opcion 6"
MENUITEM "Opcion 7"
MENUITEM "Opcion 8"
MENUITEM "Opcion 9"
MENUITEM "Ayuda"
MENU
MENUITEM "Ayuda 1"
MENUITEM "Ayuda 2"
ENDMENU
ENDMENU
oMdi:Setmenu(oMenu10)
Return oMenu10
/* *************************************************** */
/* *************************************************** */
FUNCTION MenuMas10()
Local oMenuMas10 := Nil
MENU oMenuMas10
MENUITEM "Opcion 1"
MENU
MENUITEM "Ventanita, ventanita" ACTION mdichild()
MENUITEM "Cambia a menu 10" ACTION Menu10()
MENUITEM "Cambia a menu > 10" ACTION MenuMas10()
MENUITEM "&Sortir" ACTION oMdi:End()
ENDMENU
MENUITEM "Opcion 2"
MENUITEM "Opcion 3"
MENUITEM "Opcion 4"
MENUITEM "Opcion 5"
MENUITEM "Opcion 6"
MENUITEM "Opcion 7"
MENUITEM "Opcion 8"
MENUITEM "Opcion 9"
MENUITEM "Opcion 10"
MENUITEM "Opcion 11"
MENUITEM "Opcion 12"
MENUITEM "Opcion 13"
MENUITEM "Opcion 14"
MENUITEM "Opcion 15"
MENUITEM "Ayuda"
MENU
MENUITEM "Ayuda 1"
MENUITEM "Ayuda 2"
ENDMENU
ENDMENU
oMdi:Setmenu(oMenuMas10)
Return oMenuMas10
/* *************************************************** */
/* *************************************************** */
// Fi de la funció d'arrancada.
*eof: prova.PRG
Muchas gracias
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- Antonio Linares
- Site Admin
- Posts: 42643
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 59 times
- Been thanked: 93 times
- Contact:
Re: Menu en Mdi
Carlos,
Pues si te funciona asi y te soluciona el problema, genial!
Hay algo que tengamos que arreglar ?
Pues si te funciona asi y te soluciona el problema, genial!

Hay algo que tengamos que arreglar ?

Re: Menu en Mdi
Antonio Linares wrote:Carlos,
Pues si te funciona asi y te soluciona el problema, genial!
Hay algo que tengamos que arreglar ?
Hola Antonio,
Yo creo que si.
Si una MDICHILD està oculta ( Hide() ) no debería aparecer en el menú MRU de las MDICHILD definidas y disponibles; si está oculta es para que el usuario no la vea y no acceda a ella, entiendo.
Muchas gracias
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- Antonio Linares
- Site Admin
- Posts: 42643
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 59 times
- Been thanked: 93 times
- Contact: