Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Paulita en Junio 30, 2014, 09:17:48 pm
-
Buenas noches! Escribo en esta oportunidad porque tengo un problema no se me cambia la imagen de fondo del mdi, el código que estoy trabajando es el siguiente:
Private Sub MDIForm_Load()
Call VerificarResolucion
Timer2.Interval = 1000
End sub
Sub VerificarResolucion() 'para obtener los valores de la resolución que se está trabajando
alto = Screen.Height / 15 'aquí obtienes el valor de alto de la pantalla en pixels
largo = Screen.Width / 15 'aquí obtienes el valor de ancho de la pantalla en pixels
'Nota que al dividirlos por quince se obtiene el valor en pixels, pues lo entrega en "Twip"
Select Case largo
Case largo >= 800 Or largo <= 1020
x = 1
limite = 3
Case largo >= 1024 Or largo <= 1300
x = 4
limite = 7
Case Is >= 1366
x = 8
limite = 11
End Select
End Sub
Private Sub Timer2_Timer()
INTERVALO_EN_MINUTOS = 1
' incrementa
Temp_Seg = Temp_Seg + 1
' comprueba que los segundos no sea igual a la cantidad de minutos _
que queremos , en este caso 5 minutos
If (Temp_Seg * 60) >= (INTERVALO_EN_MINUTOS * 60) * 60 Then
' reestablece
Temp_Seg = 0
MenuPrincipal.Picture = Nothing
MenuPrincipal.Picture = ImageList2.ListImages(x).Picture
If limite = x Then x = x - 2 Else x = x + 1
End If
End Sub
La imagen está en un imagelist, lo que hago es que primero se verifica la resolución que tiene la computadora si en el caso es 800x600 se toma la imagen desde 1 hasta 3 y así sucesivamente pero cuando llega al timer y pasan los 2 minutos, y debería de cambiar la imagen, pero esta línea como que no funcionara porque siempre me deja la imagen que tiene, es decir, no me la cambia
MenuPrincipal.Picture = ImageList2.ListImages(x).Picture
Como hago para que la imagen se cambie?
-
Hola, aca te prepare un ejemplo de como yo me manejo con el MDI para poner un logo en el fondo y que siempre este centrado según el tamaño que tenga.
SOURCE
https://www.mediafire.com/?75alcc4mcha48gm (https://www.mediafire.com/?75alcc4mcha48gm)
SCREEN
(http://snag.gy/WFIDT.jpg)
Saludos !!!
-
Hola Enter mucha gracias me sirvio bastante :):D ahora si se cambia las imagenes.
Una preguntica estuve revisando la clase por casualidad tiene una propiedad que sea autosize?
-
No no tiene eso solo el de centrar y poner degrade o color solido el fondo
Saludos...
-
Ok, Muchas Gracias, asi me sirvió bastante :D
-
Hola Enter, estoy trabajando con el ejemplo que menciona arriba, cuando se carga el mdi con la imagen perfecto pero hay algo que está pasando, que cuando las imágenes se cambia y tengo un reporte abierto de crystal reports 8 entonces el reporte se pierde el focus y regresa a la aplicación, como hago para que en el caso que se esté mostrando el reporte, no suceda eso?
El único código que le agregue fue este:
Private Sub Timer2_Timer()
INTERVALO_EN_MINUTOS = 1
' incrementa
Temp_Seg = Temp_Seg + 1
' comprueba que los segundos no sea igual a la cantidad de minutos _
que queremos , en este caso 1 minutos
If (Temp_Seg * 60) >= (INTERVALO_EN_MINUTOS * 60) * 60 Then
' reestablece
Temp_Seg = 0
Call Renderear(App.Path & "\Imagenes\" & ruta & "biblioteca" & x & ".jpg")
If x = 4 Then x = 1 Else x = x + 1
End If
End Sub
-
Paulita, fijate bien que el codigo que pusiste incializa el objeto oFondo cada vez que llamas a "Renderear".
Considerá en inicializarlo unicamente en el MDIForm_Load() estableciendo estos valores:
With oFondo
Set .Client = Me
.Color = &HC0& 'Color del fondo del MDI &H8000000C
.GraphicPosition = mdiCentered 'Posicion del logotipo
.BackStyle = mdiGradient 'Forma de pintar el MDI en : mdiGradient o mdiSolid
.AutoRefresh = True '&H8000000C
End With
Luego, en tu Timer2_Timer(), reemplaza Renderear() por esto:
Set oFondo.Graphic = LoadPicture(App.Path & "\Imagenes\" & ruta & "biblioteca" & x & ".jpg")
Como nota, lo que sucedia es que cada vez que llamabas a Renderear, establecias el .Client, y al hacer eso creaba un PictureBox en el MDI, el cual evidentemente hacia perder el foco del hijo.
-
Hola coco, gracias ahora si me funciona, ya no se pierde el focus