Ventana principal contenedora no cierra ventanas contenidas

Me estoy encontrando con el problema de que al abrir el menu principal (w_main) que es una ventana del tipo mdihelp me encuentro con el problema de que al cerrar la aplcacion no se me cierran todas las ventanas que tengo abiertas.
Es decir quiero que la ventana w_main sea la ventana contenedora de toda la aplicación y al cerrar la ventana cierre toda la aplicación.
Tengo estas lineas de código en el control uo_listbarxp evento itemselected
if as_item = 'Proveedores' then
OpenSheet(w_abm_proveedores, w_main,1, Original!) No hace nada cunado hago clic, es decir no abre
//open(w_abm_proveedores) si agrego esta linea abre la ventana pero si cierro la aplicación la ventana queda abierta
end if
Todas las ventanas están definidas todas com mdi.
He probado de poner la ventana del tipo child pero no me muestra la barra superior que tiene maximizar, minimizar y cerrar.

Estoy trabajando con las librerías gráficas que trae el code sample 12.1

1 respuesta

Respuesta
1

Si tienes una ventana MDI, el resto de ventanas que estarán contenidas dentro deben de ser tipo CHILD, sera por eso que no te funciona el comando OpenSheet.

Como podría hacer para usar las ventanas del tipo child y que muestre la barra superior que tiene maximizar, minimizar y cerrar, ya que si pongo la ventana del tipo child desaparece.

Saludos

En ese caso, las ventanas internas tienen que ser de tipo Main!.

Pruébalo.

He probado definiendo las ventanas contenidas como tipo Main pero no pasa nada al hacer clic.

Es como si el opensheet no funciona, porque con el open si abre las ventanas.

Para solucionarlo lo que hice es declarar las ventanas contenidas del tipo child y la ventana principal MDI.

Hay alguna forma de cambiar el color del titlebar de las ventanas contenidas (las child) ya que se muestran en un color azul pero muy claro, a diferencia de cuando se declaraban como main que aparecía el titlebar mas oscuro.

Saludos

Es raro que no te funcione el opensheet, pero bueno, si encontraste solución, a buena hora.

Por otro lado, podrías usar un halt close en el Queryunload del mdi y bajas el project de una.. con todas sus ventanas..

Tienes que considerar que este sistema de ayuda se basa en puntos, y cada pregunta representa un puntaje distinto, por ello se recomienda abrir una pregunta nueva por cada consulta nueva, pero bueno.

Sobre tu consulta de la barra de titulo, eso entiendo, creo encontré esto que podría ayudarte, tendrías que implementarlo en el peor de los casos adecuarlo, pero parece que el autor del blog no tuvo problemas.

http://www.lawebdelprogramador.com/foros/Power_Builder/252700-Cambio_de_color_a_la_barra_de_titulo.html

/*
Declare as Global External:
Function Long GetSysColor (Long lIndex) Library "user32"
Function Long SetSysColors (Long nChanges, ref Long lpSysColor[], ref Long lpColorValues[]) Library "user32"
*/
//in event:
int li_ChangesNumber = 2 //Number of changes to make on the window
int COLOR_ACTIVECAPTION = 2 //Caption of Active Window
int COLOR_WINDOW = 5 //Windows background
//Asign elements to change:
long ll_SysColor[]
ll_SysColor[1] = COLOR_ACTIVECAPTION
ll_SysColor[2] = COLOR_WINDOW
//Get Initial System Colors:
long ll_InitialColors[]
ll_InitialColors[1] = GetSysColor (COLOR_ACTIVECAPTION)
ll_InitialColors[2] = GetSysColor (COLOR_WINDOW)
//Set New Colors:
long ll_NewColors[]
ll_NewColors[1] = RGB(255,255,0)
ll_NewColors[2] = RGB(255,0,0)
SetSysColors (li_ChangesNumber, ll_SysColor, ll_NewColors)
//See changes:
MessageBox("Your colors are changed", "Closing this box will restore original colors")
//Restore Original Colors:
SetSysColors (li_ChangesNumber, ll_SysColor, ll_InitialColors)

Fuente: http://www.lawebdelprogramador.com/foros/Power_Builder/252700-Cambio_de_color_a_la_barra_de_titulo.html

Saludos

Pdta.: De poder corroborar la utilidad del código citado, y/o adecuaciones, seria bastante bueno y rescatable que antes de cerrar esta pregunta compartieses tu código final y funcional.

por cierto, o por si acaso...

W_MDI, es mi ventana MDI

W_MiVentanaMain, es mi ventana de tipo main, que estará contenida en w_MDI.

OpenSheet(w_MiVentanaMain, w_MDI, 0, Original!)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas