Cambiar imagen al cambiar texto de cuadro combinado.
El formulario que estoy creando es de resultados equipos de futbol en el cual saco el nombre de un cuadro combinado, lo que quisiera es asociarle una imagen del equipo que he introducido en el cuadro combinado, por ejemplo si pongo Tordera que aparezca la imagen del equipo Tordera y que se cambie si cambio el equipo.
No se si me explique bien o esta un poco liado.
2 respuestas
Carlos: Mira éste ejemplo en la Web de Neckkito.
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/formularios/93-ejemplos-explicados/ejemplos-de-formularios/166-imagenes-en-formulario
El principio es el mismo que el que tu pretendes hacer, solo que él utiliza un cuadro de texto.
Mis saludos >> Jacinto
- Compartir respuesta
Supongamos que tienes una carpeta con las fotos de los equipos y que el nombre de cada foto es del tipo Tordera, Palamós, etc
Supongamos también que el combinado donde eliges el equipo se llama Elegir. Crea un control imagen y en sus Propiedades-otras-Nombre ponle, por ejemplo ImagenFoto. En las propiedades del combinado, en Eventos-Después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe
Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & [elegir] & ".jpg"
If Not IsNull(Me.elegir) Then
Me.Imagenfoto.Picture = Ruta
Else
Me.Imagenfoto.Picture = ""
End If
Si el combinado tiene origen del control en algún campo de una tabla, sería conveniente que exactamente lo mismo lo pusieras en el evento Al activar el registro del formulario.
Por cierto, me había olvidado, tienes que cambiar lo de users/Cabarcos... por la ruta tuya a la carpeta donde están las fotos
Hola:
He puesto lo que comentas y me da este error, por lo que el numero 5 es el ide de la foto.
como lo puedo solucionar.
Gracias.
Eso es porque el valor que coge el combinado, probablemente la columna dependiente sea la uno.
O bien haces el combinado si el asistente y en Origen de la fila, con el generador le dejas sólo el campo NombreEquipo
O bien pones en el código
Ruta = "c:\users\cabarcos\documents\borrar\" & me.[elegir].column(1) & ".jpg"
Es que en código la primera columna de un combinado es 0, la segunda 1, etc.
De todas formas creo que tienes mi dirección y si no, es [email protected] y te mando un ejemplo. Si mandas el mensaje, en el Asunto pon tu alias Carlos Piqueras, ya que si no sé quien me escribe ni los abro
Le encontré la solución las imágenes no eran jpg, las cambie y ahora si funciona.
Gracias por todo y saludos
Puedes agregarle control de errores pero si no encuentra la foto porque no existe, o si existe no tiene ese nombre que has elegido te saldrá un mensaje diciéndote que no puede abrir el archivo.
On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & Me.Elegir.Column(1) & ".jpg"
If Not IsNull(Me.Elegir) Then
Me.Imagenfoto.Picture = Ruta
Else
Me.Imagenfoto.Picture = ""
End If
elegir_AfterUpdate_Exit:
exit sub
elegir_AfterUpdate_Err:
MsgBox Error$
Resume elegir_AfterUpdate_Exit
He ido rápido al decir que lo había solucionado, resulta que en el formulario tengo dos equipos Local y Visitante
Y solo me cambia el local si cambio el Visitante coge la imagen del Local estas son las instrucciones del equipo local que he puesto después de actualizar
Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.Local.Picture = Ruta
Else
Me.Local.Picture = ""
End If
equipo Visitante
Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoVisitante) Then
Me.Visitante.Picture = Ruta
Else
Me.Visitante.Picture = ""
End If
y en activar registro
'Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.Local.Picture = Ruta
Else
Me.Local.Picture = ""
End If
If Not IsNull(Me.EquipoVisitante) Then
Me.Visitante.Picture = Ruta
Else
Me.Visitante.Picture = ""
End If
Carlos, si observas, estas poniendo la misma ruta a los dos, en el caso del equipo visitante y suponiendo que el combinado donde lo eliges se llame EquipoVisitante tienes que poner, en sus propiedades-eventos-Después de actualizar, lo mismo pero
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoVisitante].Column(1) & ".jpg"
Y lo mismo en el evento Al activar registro del formulario.
Hola de nuevo, por fin funciona bien, tenia un nombre mal escrito.
Abusando de tu amabilidad seria posible si por ejemplo no esta la foto que en vez de dar error saliera un cuadro de información .
Gracias de nuevo.
Saludos.
donde pone msgbox Error$ ponlo como
MsgBox "Esa foto no existe, como no la pintes", vbOKOnly, "Que le vamos a hacer"
Soluciono un problema y aparece otro
Tengo esta instrucción al activar registro y no aparece la foto del equipo local.
Esta es
Private Sub Form_Current()
'Equipo Visitante
On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Visitante\" & [EquipoVisitante].Column(1) & ".jpg"
If Not IsNull(Me.EquipoVisitante) Then
Me.FotoVisitante.Picture = Ruta
Else
Me.FotoVisitante.Picture = ""
End If
elegir_AfterUpdate_Exit:
Exit Sub
elegir_AfterUpdate_Err:
MsgBox "Falta colocar la foto de los equipos", vbOKOnly + vbCritical, "Que le vamos a hacer" 'MsgBox Error$
Resume elegir_AfterUpdate_Exit
' End If
'**********************************************
'Equipo Local
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Local\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.FotoLocal.Picture = Ruta
Else
Me.FotoLocal.Picture = ""
End If
Exit Sub
MsgBox "Falta colocar la foto de los equipos", vbOKOnly + vbCritical, "Que le vamos a hacer" 'MsgBox Error$
Resume elegir_AfterUpdate_Exit
'End If
End Sub
Creo que estarás harto de tanto problema.
Saludos y gracias.
Gracias por recordarme que no le hacéis ni caso a lo que se os manda. Si repasas la respuesta mía de hace 17 horas verías que te había puesto que se le añadiera control de errores. Ponía textualmente
"Puedes agregarle control de errores pero si no encuentra la foto porque no existe, o si existe no tiene ese nombre que has elegido te saldrá un mensaje diciéndote que no puede abrir el archivo.
On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & Me.Elegir.Column(1) & ".jpg"
If Not IsNull(Me.Elegir) Then
elegir_AfterUpdate_Exit:
exit sub
elegir_AfterUpdate_Err:
MsgBox Error$
Resume elegir_AfterUpdate_Exit
Parece que te ha molestado el que dijera que no tenia ninguna línea msgbox Error$, la verdad es que esta y lo solucione lo que me pasa es que me lio con unas instrucciones y otras pero lo solucione, ahora como comento más arriba que solo aparece la foto del equipo visitante cuando abro el registro.he puesto las instrucciones que están más arriba, si quieres comentar bien y si no gracias por todo
Si en el evento al activar el registro tienes dos veces definido(una por local y otra por visitante)
dim ruta as string
ruta=.......
El código coge la primera. Cuando se pone en el evento Después de actualizar cada definición de ruta es de un objeto (combinado) distinto, por eso no influye pero si durante la declaración hay dos variables iguales el código coge siempre la primera, por eso es necesario que en el evento Current
Se ponga, por ejemplo
dim rutalocal as string, rutavisitante as string
rutalocal=C:\.....................\Local\" & Me.equipolocal\." & [EquipoLocal].Column(1) & ".jpg"
rutavisitante=C:\.....................\Local\" & Me.equipolocal\." & [Equipovisitante].Column(1) & ".jpg"
Y asignar la ruta a su control imagen correspondiente
Donde demonios esta el error sigue mostrando solo una al activar
'equipo local ***********************************
On Error GoTo elegir_AfterUpdate_Err
Dim rutalocal As String, rutavisitante As String
rutalocal = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Local\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.FotoLocal.Picture = rutalocal
Else
Me.FotoLocal.Picture = ""
End If
Exit Sub
MsgBox "Esa foto no existe, como no la pintes", vbCritical + vbOKOnly, "Que le vamos a hacer"
Resume elegir_AfterUpdate_Exit
'equipo Visitante *******************************
rutavisitante = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Visitante\" & [EquipoVisitante].Column(1) & ".jpg"
If Not IsNull(Me.EquipoVisitante) Then
Me.FotoVisitante.Picture = rutavisitante
Else
Me.FotoVisitante.Picture = ""
End If
elegir_AfterUpdate_Exit:
Exit Sub
elegir_AfterUpdate_Err:
MsgBox "Esa foto no existe, como no la pintes", vbCritical + vbOKOnly, "Que le vamos a hacer"
Resume elegir_AfterUpdate_Exit
Saludos.
- Compartir respuesta