ayuda commondialog y texto en picturebox

Iniciado por soru13, 17 Abril 2011, 20:43 PM

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

soru13

hola, lo que estoy haciendo es que através de un commondialog yo seleccione un archivo y el nombre de este archivo me lo ponga dentro de un picturebox,para ello tengo este código:

Código (vb) [Seleccionar]
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Picture1.Cls
mensaje = CommonDialog1.FileTitle
Me.Picture1.Print mensaje
Else
Picture1.Cls
mensaje = "No se seleccionó ningún archivo"
Me.Picture1.Print mensaje


el caso es que esto me sirve para solo 1 archivo,si vuelvo a seleccionar otro me remplaza la primera línea de texto del picturebox.
Lo que necesito saber es como puedo hacer para que en el commondialog pueda seleccionar varios archivos y al seleccionarlos cuente el número de archivos que se han seleccionado y haga X lineas de texto en el picturebox. ¿Cómo podría hacer esto? Gracias

EDIT: he encontrado éste código que sirve para seleccionar varios archivos en através de common dialog y luego los añade en un listbox.

Código (vb) [Seleccionar]
Option Explicit

' Colección para guardar los archivos
Dim mColFiles           As Collection

' -----------------------------------------------------------------------------------
' \\ - Sub para agregar los archivos a la colección
' -----------------------------------------------------------------------------------

Private Sub mAddFiles(arrFiles() As String)

On Local Error GoTo error_handler
   
   With mColFiles
       ' Si el array tiene un solo elemento, es por que se seleccionó un solo fichero ( Es decir Contiene la ruta completa : Dir + FileName)
       If UBound(arrFiles) = 0 Then
           ' Comprobar que la colección tiene elementos ...
           If .Count > 0 Then
               Call .Add(arrFiles(0), arrFiles(0), 1) ' agregar item en el primer lugar
           ' si no hay elementos ...
           Else
                Call .Add(arrFiles(0), arrFiles(0))
           End If
           
       ' Si no, Hay mas de un archivo ....
       Else
           ' El primer elemento del array es el directorio ( Guardar el path en la variable  )
           Dim sDir As String
           sDir = arrFiles(0)
           
           ' verificar el separador de path
           If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
           ' Los archivos ( solo el nombre sin el path )
             
           Dim i As Integer
           For i = 1 To UBound(arrFiles)
              ' REcorrer el array y agregarlos a la colección
              If .Count > 0 Then
                  Call .Add(sDir & arrFiles(i), sDir & arrFiles(i), 1) 'agregar primero
              Else
                  Call .Add(sDir & arrFiles(i), sDir & arrFiles(i))
              End If
            Next
       End If
   End With
Exit Sub
error_handler:
If Err.Number = 457 Then
   Resume Next ' ignorar error cuando se agrega el mismo archivo
Else
   MsgBox Err.Description
End If
End Sub

' -----------------------------------------------------------------------------------
' \\ - Botón para seleccionar los archivos
' -----------------------------------------------------------------------------------
Private Sub cmdAddFiles_Click()

   On Local Error Resume Next
   
   ' Configurar el cuadro de diálogo
   ' ---------------------------------------------------------
   With CD
       ' Limpiar la propiedad FileName
       .FileName = vbNullString
       ' Establecer Flag para poder seleccionar múltiples archivos desde el cd
       .Flags = .Flags Or cdlOFNExplorer Or cdlOFNAllowMultiselect
       
       ' Tamaño de Buffer para el FileName
       .MaxFileSize = 32767 ' <- máximo 32 K
       
       ' Establecer filtro
       .Filter = "Todos los Archivos|*.*"
       
       ' Abrir
       .ShowOpen
       
       ' Verificar que el FileName no sea una cadena vacía
       If .FileName <> vbNullString Then
         
          ' Array para obtener las rutas
          Dim arrPaths() As String
          arrPaths = Split(.FileName, Chr(0))

         
          ' Enviar array de archivos para agregar a la colección
          Call mAddFiles(arrPaths)
          Erase arrPaths
         
          ' Actualizar listado
          Call mUpdateList(lstFiles)
       End If
               
       .FileName = vbNullString
       
   End With
   
   ' Error
   Exit Sub
error_handler:
   MsgBox Err.Description, vbCritical

End Sub


' -----------------------------------------------------------------------------------
' \\ - Actualizar el contenido del listbox
' -----------------------------------------------------------------------------------

Private Sub mUpdateList(lBox As ListBox)
   With lBox
       ' limpiar listbox y volver a cargar
       .Clear
       Dim xItem As Variant
       ' recorrer items de la colección
       For Each xItem In mColFiles
           .AddItem CStr(xItem)
       Next
       ' seleccionar el primero
       If .ListCount > 0 Then
           .ListIndex = 0
           .SetFocus
       End If
   End With
End Sub

' -----------------------------------------------------------------------------------
' \\ - Eliminar todo
' -----------------------------------------------------------------------------------
Private Sub cmdClear_Click()
   Set mColFiles = Nothing
   Set mColFiles = New Collection
   Call mUpdateList(lstFiles)
End Sub

' -----------------------------------------------------------------------------------
' \\ - Eliminar selección
' -----------------------------------------------------------------------------------

Private Sub cmdDelete_Click()
   Dim i As Integer
   ' recorrer items y comprobar si se encuentran seleccionados
   With lstFiles
       For i = 0 To .ListCount - 1
           If .Selected(i) Then
               Call mColFiles.Remove(.List(i)) ' eliminar con el método Remove el item de la colección
           End If
       Next
   End With
   ' volver a cargar los items en el control
   Call mUpdateList(lstFiles)
End Sub


Private Sub Form_Load()
   
   ' Crear nueva colección para guardar los archivos
   Set mColFiles = New Collection
   
   cmdAddFiles.Caption = "Agregar archivos"
   cmdDelete.Caption = "Eliminar selección"
   cmdClear.Caption = "Eliminar todo"
   
End Sub


Este código me sería muy útil si me sacara sólo los nombres de los archivos y no la ruta de los archivos seleccionados,pero si cambio el .FileName por .FileTitle me da error y no me deja. ¿Alguien sabe porque? Gracias