Autor Tema: Sobre control ucImage y obtener el nombre de archivo.  (Leído 5243 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Sobre control ucImage y obtener el nombre de archivo.
« en: Septiembre 26, 2011, 02:39:04 pm »
Hola.
Estoy usando el ucImage para mostrar imágenes png obtenidas con LoadImageFromURL (de web)

El asunto esta que voy a cargar varias fotos (una a una) controladas con un timer cada cierto tiempo, pero quiero que cuando el usuario haga clic en una de ellas las dirija a la web especifica.
Para hacer esto se me ocurre obtener el nombre de la foto y con un select case llevarlo a la web en cuestion.
Probe con:
NombreFoto = ucFoto.GetFileName y me da el nombre de la foto que tiene el control, osea del archivo, eje: 0001.png, pero esto solo ocurre si la foto la cargue desde disco local, cuando cargo la foto de web me da una cadena vacia.

¿Alguien sabe como podría hacer para obtener el nombre de la foto que tiene el control?

Muchas gracias.
Me encuentras en YAcosta.com

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #1 en: Septiembre 26, 2011, 07:18:10 pm »
La verdad es que la parte de descarga la implemento leandro asi que no estoy muy seguro pero lo que tendrias que hacer es en la funcion LoadImageFromURL asignar la url a la variable que gurada el filename.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #2 en: Septiembre 26, 2011, 07:36:37 pm »
Hola, gracias por responder.

Yo pretendo hacer esto. Tengo 5 fotos: 001.png, 002.png, 003.png, 004.png y 005.png y las tengo en mi server de esta forma
www.belzusarri.com/001.png
www.belzusarri.com/002.png
www.belzusarri.com/003.png
www.belzusarri.com/004.png
www.belzusarri.com/005.png

cuando tengo cargado la 001 con un timer al cabo de 10 minutos cargo la 002 y asi sucesivamente.

El usuario hará clic en la foto que el ve en la aplicación, pero no se a cual le dará clic, de tal manera que lo pueda llevar a la web respectiva.
Para cargar nuevamente la foto no tengo problemas, funciona perfecto, es cuando el usuario haga clic sobre ella llevarlo a una web espeficica, como el clic lo hará en el control ucImage y alli tengo el codigo que levanta la web, ¿como saber que web levantar? de alli se me ocurrio hacerlo por el nombre de la foto, debo reconocer su nombre para poder llevarlo a la web.
Eso no se como lograr: reconocer el nombre de la foto cargada en el ucImage mediante LoadImageFromURL osea no local, porque cargada la foto de manera local se obtiene su nombre con GetFileName

Gracias,

Me encuentras en YAcosta.com

Lolabyte

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +15/-0
    • Ver Perfil
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #3 en: Septiembre 26, 2011, 09:01:07 pm »
Y si modificas un poco el sub UserControl_AsyncReadComplete, asi en el evento DownloadComplete del ucImage obtienes la url de la imagen, y eso guardarlo en alguna variable  :)
O en el mismo sub asignar a c_sFilename la url de la imagen asi con GetFileName tendrias la direccion de la imagen  ;)

Código: (vb6) [Seleccionar]
'Public Event DownloadComplete()
Public Event DownloadComplete(Url As String)

Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
    On Error GoTo PropErr
   
    c_sFilename = ""

    If LoadImageFromStream(AsyncProp.Value) Then
        'RaiseEvent DownloadComplete
        c_sFilename = AsyncProp.Target <--- Asi GetFileName devolveria la url de la imagen
        RaiseEvent DownloadComplete(AsyncProp.Target) <--- Asi en el evento estaria la url de la imagen
    Else
        RaiseEvent DownloadError
       
    End If
   
    Set c_AsyncProp = Nothing
   
    Exit Sub
PropErr:
    RaiseEvent DownloadError
End Sub
« última modificación: Septiembre 26, 2011, 09:22:35 pm por Lolabyte »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #4 en: Septiembre 26, 2011, 09:10:59 pm »
pero... lo guardo en una variable... no entiendo como resuelvo?

El programa corre y se ve la 001.png, guardo la dirección en una variable, (aunque yo ya me se la direccion). pasan 10 minutos y se levanto la 002.png.. etc etc, pasan 5 horas y las fotos han rotado varias veces (tipo banner) y en un momento X el usuario le interesa una de las fotos, la foto 00X.png (no se cual), el hace clic y.... como se cual foto hizo clic?, es decir, cual tema le intereso.
Quiza debi aclarar que la foto permanece 10 minutos alli

Gracias.

EDICION: Perdon!!! ya te entendi. Lo que me quieres decir es que voy descargando la foto para mostrarlo y alli capturo el nombre de la foto y la mantengo en un string por ejemplo, cuando cargue la siguiente foto... reemplazo ese string. En algun momento el usuario hara clic y solo tengo que ir al string de memoria.  :-[ ya entendi.
« última modificación: Septiembre 26, 2011, 09:13:21 pm por YAcosta »
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #5 en: Septiembre 26, 2011, 09:15:26 pm »
Solucionado.:

No se si la idea estara bien, pero a raiz de lo que explico LolaByte creo que mejor podria hacer lo siguiente... no se ahora lo veo sencillo... En vez de capturar el nombre en el download, lo capturo cuando lo invoco ya que desde antes se cual foto pedi y ese nombre es el que tendria en un string para direccionar  :-[ :-[ :-[ :-[

Se me habia pasado esta forma sencilla.

Gracias Lolabyte por iluminar mi camino.
Me encuentras en YAcosta.com

Lolabyte

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +15/-0
    • Ver Perfil
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #6 en: Septiembre 26, 2011, 09:19:55 pm »
Cuando tu escribias, yo modifique mi post, bueno, ahora con la modificacion usando GetFileName obtienes la url de la imagen cargada en el ucImage, si cargas otra imagen de la web, al completarse la descarga GetFileName tiene la url de la ultima imagen descargada ;)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #7 en: Septiembre 26, 2011, 09:25:19 pm »
Cuando tu escribias, yo modifique mi post, bueno, ahora con la modificacion usando GetFileName obtienes la url de la imagen cargada en el ucImage, si cargas otra imagen de la web, al completarse la descarga GetFileName tiene la url de la ultima imagen descargada ;)

Probe con el GetFileName  y no me da el nombre, solo me da el nombre cuando el archivo se cargo de manera local, cuando se carga por url la cadena me la da vacia.

Pero igual la cosa (en mi caso) resulto mas sencilla con lo que escribiste inicialmente, si invoco la foto: pues, ya se su nombre y solo debo mantener ese variable string de manera vigente en memoria hasta reemplazarlo en la siguiente carga. Cuando el usuario haga clic solo leo la variable.

Por alli me ire.

Gracias
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Sobre control ucImage y obtener el nombre de archivo.
« Respuesta #8 en: Septiembre 26, 2011, 09:35:11 pm »
Proba con este amigo:

Código: [Seleccionar]
Dim foto1 As String
Dim foto2 As String
Dim foto3 As String

Function ExtraerNombreDeUrl(strUrl As String) As String
    inicioNA = InStrRev(strUrl, "/") + 1
    largoNA = Len(strUrl) - a + 1
    ExtraerNombreDeUrl = Mid(strUrl, inicioNA, largoNA)
End Function

Private Sub cmdCargar_Click()
   
    foto1 = "http://enterpy.net/upload06/archivossubidos/lqsij_EvaMendes.jpg"
    ucImage1.LoadImageFromURL (foto1)
    ucImage1.Tag = ExtraerNombreDeUrl(foto1)
   
    foto2 = "http://enterpy.net/upload06/archivossubidos/in7wh_componentes.jpg"
    ucImage2.LoadImageFromURL (foto2)
    ucImage2.Tag = ExtraerNombreDeUrl(foto2)
   
    foto3 = "http://enterpy.net/upload06/archivossubidos/aemrg_indentacion_tree_view.jpg"
    ucImage3.LoadImageFromURL (foto3)
    ucImage3.Tag = ExtraerNombreDeUrl(foto3)
   
End Sub

Private Sub ucImage1_Click(ByVal Button As Integer)
       
    If ucImage1.Tag = "lqsij_EvaMendes.jpg" Then
        MsgBox "ir a la web1"
    End If
   
    If ucImage1.Tag = "in7wh_componentes.jpg" Then
        MsgBox "ir a la web2"
    End If
   
    If ucImage1.Tag = "aemrg_indentacion_tree_view.jpg" Then
        MsgBox "ir a la web3"
    End If
   
End Sub

Falta ajustar algunas cosas pero creo que vas a poder adaptarlo.

Saludos!!!
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo