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:
#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