Operaciones con Toolbars

Pregunta: Tengo una MDI y su respectivo Menu y Toolbar. Cuando cuando el usuario carga una Ventana (de Tipo Child) deseo que aparezca un segundo Toolbar (debajo del primero) con funciones propias para la ventana que el usuario ha llamado. ¿Cómo realizo esa operación?.

1 Respuesta

Respuesta
2
Sigue los siguientes pasos
1. Tienes que crear herencia de menu, si tienes un menu principal por ejemplo llamado: m_mdi que esta enlazado a tu window o ventana MDI a través de su propiedad [MenuName], entonces crea un nuevo menu por herencia del menu llamado m_mdi (Te ubicas en el menu principal m_mdi, haces click derecho y das click en INHERIT FROM).
2. Al menu creado por herencia le pones un nombre, para nuestro ejemplo lo llamaremos m_toolbar.
3. Abres el nuevo menu (si es que esta cerrado) llamado m_toolbar y te darás cuenta que se ha creado un nuevo menu igual que el menu m_mdi. Y haces click derecho sobre el nombre del menu m_toolbar para crear un nuevo submenú, a este submenú le llamaremos m_opcion.
4. En el submenú m_option creamos los submenus que desaemos que se presenten para una ventana tipo child especifica, por ejemplo podemos crear submenus como m_nuevo, m_editar, m_grabar, etc. A cada uno de los submenus mediante la propiedad Toolbar --> ToolbarItemName, debemos enlazarlo con imágenes tipo iconos, jpg, gif, bmp, para mostrarse con una barra de herramientas (toolbar) propia.
5. Ocultamos todos los menús y submenus creado por herencia, es decir todos aquellos menús y submenus que fueron heredados del menu principal m_mdi. Lo hacemos de la siguiente forma: hacemos click sobre cualquier menu o submenú que fueron heredadas y no ubicamos en propiedades (Properties) y en su pestaña Toolbar DESMARCAMOS la casilla ToolbarItemVisible, para no visualizarlo cuando se abra la ventana que tiene enlazado el m_toolbar. OJO: lo hacemos con todos los menús y submenus heredados.
6. Enlazamos el menu m_toolbar a una ventana tipo child especifica a través de la propiedad de la ventana MenuName.
7. Cuando corras tu aplicación y abras la ventana tipo child en la aplicación mdi, debe mostrarte los menús principales y sus respectivos iconos en el toolbar y debajo de el otro toolbar que representara a las opciones para la ventana tipo child.
Suerte.
En el punto 6 escribe: " Enlazamos el menu m_toolbar a una ventana tipo CHILD especifica a través de la PROPIEDAD de la ventana MENUNAME.
Me podría ampliar es punto ya que las ventanas tipo CHILD tienen deshabilitada la PROPIEDAD: MENUNAME
Revisa lo siguiente:
1. Las ventanas con propiedad WindowType=child! No se pueden enlazar un menu. Así que te recomiendo que lo cambies a WindowType=main!, y a través de su propiedad MenuName enlazas el menu como ejemplo llamado m_toolbar.
2. Para levanta una ventana con la propiedad WindowType=main! como si fuera una ventana WindowType=child!, debes poner lo siguiente en los menús o sub menús principales:
setpointer(Hourglass!) //nos muestra un icono reloj de arena
opensheet(w_child,w_mdi,0, original!) //Hace que la ventana tipo main se comporte como tipo child.
Donde:
W_child --> es la ventana hija que quieres levantar.
W_mdi --> es la ventana principal de tipo mdi.
*Con esto levantas la ventana hija y compruebas que esta actua como si fuera de tipo child.
Suerte.
Ok. Paso la Main como Child, hago herencia del menu principal y en el menu heredado agrego opciones nuevas e invisibilizo las opciones heredadas del menu principal. Asigno los menús a sus ventanas: principal a la MDI, y el heredado a la Child (main).
Cargo la MDI, el menu principal y sus toolbar con iconos y hasta ahí no hay problema todo Ok.
El problema sucede cuando se carga la Child y el menu heredado, sucede que los iconos del Toolbar del menu principal no se invisibilizan, por lo que aparecen duplicados, en el toolbar del menu heredado.
¿Qué se puede hacer? No me diga que cargue un menu principal con solo letras, sin toolbar ni iconos, ya que en ellos se hallan los ventanas más usadas por el usuario por lo tanto deben estar a la vista, evitándole el engorro de estar desplegando menús para ubicarlas.
Y una vez que el usuario ha levantado una ventana debe mostrarse un toolbar secundario con las opciones de trabajo. Bueno, espero su respuesta y le agradezco el tiempo que dedica a formularla.
Observa los siguiente pasos:
1. La ventana principal w_mdi debe tener su propio menu principal m_mdi enlazado a través de su propiedad MenuName y en su propiedad toolbar activar la opción ToolbarVisible. Ojo: para el menu principal m_mdi (todos los menús y submenus) en su propiedad ToolbarItemVisible deben estar activados, de lo contrario los iconos o imágenes para los menús y submenus no se visualizaran y cuando habrás tu aplicación no se mostrara ningún toolbar.
2. La ventana hija w_child debe tener su propio menu m_toolbar (creado por herencia del menu principal m_mdi) enlazado a través de su propiedad MenuName y en su propiedad toolbar activar la opción ToolbarVisible.
3. Como te dije antes tienes que desactivar (ocultarlos) los menús y submenus heredados (del m_mdi) en el menu m_toolbar en su propiedad ToolbarItemVisible. Ojo: Ten cuidado en no desactivar la propiedad ToolbarItemVisible para los menús o submenus creados para el m_toolbar (los no heredados).
4. Las nuevas opciones o submenus creadas en el menu m_toolbar debes agregarle un icono para cada menu o submenú, tanto en su propiedad [general] --> MenuImage y en el [Toolbar] --> ToolbarItemName. Si no pones ningún icono o imagen para cada menu o submenú cuando habrás la ventana w_child en el toolbar de tu aplicación mdi no aparecerá ningún toolbar de la ventana w_child, más bien solamente se visualizara los iconos o imágenes del menu principal m_mdi.
5. Levantas la ventana hija w_child, poniendo este código en el menu o submenú del menu principal m_mdi:
Setpointer(Hourglass!)
opensheet(w_child,w_mdi,0, original!)
*Estos pasos lo he probado y funcionan, si tienes dudas sigue detalladamente estos y los pasos anteriores que te he dado.
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas