Fondo MDI Aplicación

Quisiera saber como poner un fondo a mi aplicación. Tengo un archivo logo.bmp
que quiero ponerlo como fondo en mi ventana MDI padre
Puse un control picture a mi ventana padre MDI y en Picture Name puse la dirección donde estaba mi logo
Hasta ahí todo bien ejecute el programa y salia con el fondo que yo quería, pero al momento de tratar de abrir cualquier ventana desde el menu, no aparecía la ventana que estaba abriendo
Y cuando sacaba el Picture de la ventana de inicio MDI, si funcionaba bien todo
Aque se debe eso, y como podría solucionar mi problema

1 Respuesta

Respuesta
1
Lo que te sucede es uno de los bugs que aun power builder no ha definido o solucionado tal y como lo vemos los desarrolladores que hemos tenido la oportunidad de desarrollar en otras herramientas
Permíteme explicarte:
Lo que sucede es que una ventana tipo MDI posee un objeto interno llamado MDI_1, este objeto esta destinado a manejar las ventanas tipo CHILD, o sea es el área de despliegue de este tipo de ventanas, cuando la ventana tipo MDI detecta que tiene un control u objeto adicional a lo que corresponde a ella, inmediatamente cambia el valor de la propiedad VISIBLE a FALSE, por lo que el área de MDI que es donde se pintan las ventanas CHILD no aparece y aunque estas child si están siendo desplegadas en el área correspondientes, dicha área se encuentra apagada, y pues a la vista no aparecen.
Por este motivo, resulta que cuando hechas a andar el programa, solo muestra el objeto imagen, con el logotipo, pero no muestra las ventanas.
Asombro.
Claro tu dirás, bueno pues lo más simple es poner la propiedad visible en TRUE, y ya ta..
HAY MÁS COSAS...
Ademas de esto, y si logras poner el objeto MDI_1 visible, este ha cambiado de tamaño, y si tu forma tiene la peculiaridad de cambiar de tamaño por voluntad del usuario, el objeto no lo hará y esto provocara un desajuste total en la aplicación, resulta que cuando maximizas, el objeto no lo hace pero cuando regfresa a su estado normal, el objeto MDI_1, se reconfigura y en fin, y ademas si ademas incluyes un menu en la ventana, las cosas pueden dispararse, bueno para que te sigo contando.,
Solución
Lo más practico y ridículo es no usar nada que altere, el contexto de la ventana MDI, o sea no logos, no imágenes, no nada, sin embargo si esto no fuera así, tendrás que manejar tu programaticamente el ya mencionado control MDI_1.
Esto lo haces en el evento RESIZE de la ventana. El código dirá lo siguiente:
INTEGER li_width
INTEGER li_height
li_width = THIS.WorkSpaceWidth()
li_height = THIS.WorkSpaceHeight()
MDI_1.resize(li_width, li_height)
Las variables li_width y li_height, contendrán el área disponible interna de la ventana, la cual puede servir para mover en ella cualquier objeto, por lo que esta será ocupada siempre por el objeto MDI_1, si en caso este tendría que cambiar de tamaño ya sea de ancho o alto, simplemente afectas a una u otra variable restando el tamaño del objeto que compartirá la ventana MDI.
CONCLUSIÓN: los objetos que integres en una ventana MDI tendrán que convivir unos con otros y estos con el MDI_1, y necesaria y estrictamente compartir el área disponible de la ventana pero hasta ahora, no pueden utilizar la misma área. Por ejemplo colocar una fotografía de fondo, o un logotipo o algo parecido, o los dos o solo MDI_1.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas