Programación General > Visual Basic 6.0 e inferiores

 Copiar Foto Activa A Carpeta

<< < (2/2)

dreamer:
haber no resulta algo en el boton copiar te explico lo que hice puse una caja de texto y un control label con los mismos nombres que tienes en tu codigo (Label6 y txtNew.)

Para el label6 le asigne el CommonDialog1.FileName , se supone que es la ruta origen osea asi

Label6 = CommonDialog1.FileName  

Para  la caja de texto asigne la ruta de la carpeta donde quedara instalada la aplicacion osea ruta destino lo hice asi:

txtNew = App.Path & "\Socios"

espero que hasta aqui me entiendas bien.

Ahora se vienen los problemas en el codigo del boton copiar que tu tienes me pasa lo siguiente:

Tu Codigo y mis modificaciones:

Dim a As Variant
Dim sFphX As String

If ((Trim(txtNew.Text) & "a") <> "a") And _
    (Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = ".jpg") Then

   
    sFphX = MPathX(CommonDialog1.FileName) & txtNew.Text
    On Error GoTo ErrorX
    fS.CopyFile Label6.Tag, sFphX
    'File2.Refresh
    MsgBox "Archivo copiado en: " & sFphX
End If
Exit Sub
ErrorX:
MsgBox "No se pudo copiar el archivo", vbCritical, Error

Te cuento que en el primer If se sale automaticamente el if((Trim(txtNew....

No entiendo porque y en esta linea

sFphX = MPathX(CommonDialog1.FileName) & txtNew.Text

nose si me funcionara ya que yo ocupo el CommonDialog1.FileName ya que hasta ahora nose si va a quedar en memoria la ruta o lo otro seria ocupar el label6 donde tiene la ruta origen.

Tambien copie la funcion:

Public Function MPathX(ByVal sPhX As String) As String
Dim sPhY As String
sPhY = sPhX
If Mid(sPhY, Len(sPhY), 1) <> "\" Then
    sPhY = sPhY & "\"
End If
MPathX = sPhY

End Function

nose tampoco si me funcionara ya que se me sale del if bueno espero que puedas seguir ayudando.

Nuevamente mil gracias por tu tiempo y paciencia.

DrakerDG:
:comp: Te explico el la estructura if siguiente:


--- Código: Text --- If ((Trim(txtNew.Text) & &#34;a&#34;) &#60;&#62; &#34;a&#34;) And _(Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = &#34;.jpg&#34;) ThenOn Error GoTo ErrorXfS.CopyFile Label6.Tag, sFphX'File2.RefreshMsgBox &#34;Archivo copiado en: &#34; & sFphXEnd If   
txtNew.Text es un string, específicamente el nombre de un archivo con todo y su path, la función Trim() los espacios en blanco del inicio y/o final de un string, que para el caso de un path no sirven de nada.  Seguido la condición ((Trim(txtNew.Text) & "a") <> "a", determina si realmente txtNew.Text no es una cadena vacía, pues si lo fuera "a" = "a".  Por medio del AND exigimos que a parte de no ser cadena vacía la extensión del archivo sea JPG.  La función Mid(,,) nos extrae los últimos cuatro caracteres y los compara con ".jpg".

Si el texto de txtNew.Text cumple con estas dos condiciones, por ejemplo la ruta siguiente:

"C:\Mi carpeta\Mi imagen.jpg"

Esta no es una cadena vacía y los últimos cuatro caracteres son ".jpg".  Por lo tanto entra al IF.

La sentencia On Error GoTo ErrorX es para controlar si existe algún error durante el proceso de copia.  De haber uno se va a la etiqueta ErrorX:.   De lo contrario continua a la sentencia siguiente, donde utiliza a fS para realizar la copia por medio del método CopyFile del cual los argumentos son el archivo origen seguido del archivo destino.

Luego actualiza el cuadro File2 por medio de la sentencia File2.Refresh.  La siguiente sentencia despliega un cuadro de texto por medio de Msgbox y listo.  Veo que desactivaste la sentencia que actualiza el cuadro de File2.  Esta acción actualiza el cuadro, es decir que muestra el nuevo archivo copiado.

MPathX


--- Código: Text --- Public Function MPathX(ByVal sPhX As String) As StringDim sPhY As StringsPhY = sPhXIf Mid(sPhY, Len(sPhY), 1) &#60;&#62; &#34;&#092;&#34; ThensPhY = sPhY & &#34;&#092;&#34;End IfMPathX = sPhY End Function   
La función MPathX solo es de verificación, para que siempre él ultimo caracter del path sea un slash invertido "\", si la usas con la propiedad CommonDialog1.FileName, te da un error, puesto que esta función es solo para paths (rutas) sin el nombre del archivo. Es decir

Si MiPath es una variable tipo string y le asignamos el path determinado:

MiPath = "C:\Mis documentos\Mis imagenes"

Este path no tiene el slash invertido al final, en cambio al utilizar la función MPathX queda lo siguiente:

MiPath = MPathX("C:\Mis documentos\Mis imagenes")

Por lo que MiPath es ahora igual a:  "C:\Mis documentos\Mis imagenes\"

Para ver cuales son los caracteres que tiene la propiedad CommonDialog1.FileName escribe una sentencia con el procedimiento Msgbox de este manera:

Msgbox CommonDialog1.FileName

Esta desplegará una ventana con el valor de CommonDialog1.FileName.

De todos modos te envío otra versión del código donde empleo el CommonDialog

 :suerte:

dreamer:
hola DrakerDG

Ante todo gracias por la ayuda me ha servido mucho, te cuento que al final ya pude copiar la foto a la carpeta gracias a tu ayuda, para eso modifique elimine y me quebre la cabeza unos dias.

If ((Trim(txtNew.Text) & "a") <> "a") And _
    (Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = ".jpg") Then
    'sFphX = MPathX(Dir2.Path) & txtNew.Text
    sFphX = txtNew.Text
    On Error GoTo ErrorX
    fS.CopyFile Label6.Tag, sFphX
    'File2.Refresh
    'MsgBox "Archivo Copiado en: " & sFphX
End If

si te das cuenta deje varias lineas en comentario ya que no me la pude tratando de acomodar el codigo, pero a pesar de que resulto todo biern hasta ahora aun me quedan algunas dudas algunas son estas.

sFphX = MPathX(Dir2.Path) & txtNew.Text

que trataste de hacer porque lo que es yo tome el camino mas corto e hice esto:

    sFphX = txtNew.Text

y ademas borre el ojeto del formulario ya que no tenia ninguna referencia hacia él, ademas de comentar la linea del file2.refresh y la del msgbox ya que no queria mostrar la ruta donde fue guardad la foto.

otra duda que me quedo es ¿porque tenias dos controles Image?
al al parecer era para ajustar el tamaño de la foto al control, pero hay una propiedad del este control que lo hace automaticamente me parece que es esta Stretch

bueno no me queda nada mas que agradecerte por el tiempo invertido que tuviste en ayudarme, se agradece.

saludos

DREAMER

DrakerDG:
:comp: Dreamer:
Ante todo fue un placer.

Referente a tus dudas residuales, en el caso de la función MPathX(), es solo para manejo de rutas sin el nombre del archivo, como por ejemplo:


--- Código: Text --- C:&#092;ProgDOS&#092;X Download&#092;Software o C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;   
Que al ingresarla en la función, le agrega un \ al final si no lo tiene, y si ya lo tiene, simplemente no hace nada, es decir:


--- Código: Text ---  MPathX(&#34;C:&#092;ProgDOS&#092;X Download&#092;Software&#34;)  Resulta: C:&#092;ProgDOS&#092;X Download&#092;Software&#092; y  MPathX(&#34;C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;&#34;)  Resulta: C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;   
Respecto los controles de imagen, que por cierto son PictureBox (no Image), están para ajustar el tamaño de la imagen y este mantenga simetría con el tamaño original.   De hecho el control Image es el que tiene la propiedad strech, pero esta no conserva la proporción respecto al tamaño original si no que puede que la estire hacia los lados o hacia arriba y abajo.  

Continúa descubriendo y aprendiendo sobre programación

 :suerte:

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa