problema con CommonDialog

Iniciado por vivachapas, 28 Diciembre 2007, 21:56 PM

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

vivachapas

bueno... hice un programa... envia archivos del cliente al servidor.. pero mi problema es este... cuando busco un archivo y se muestra el commondialog, si yo no pongo abrir y pongo cancelar tira un error y se cierra el programa...

les dejo parte del code:
CommonDialog = CD

If WS.State = 7 Then
    CD.ShowOpen
    RutArchivo = CD.FileName
    Open RutArchivo For Binary As #1
    EnvArchivo = Input(LOF(1), 1)
    Close #1
    EnvTam = Len(EnvArchivo)
    WS.SendData "Archivo|" & RutArchivo & "|" & EnvTam
    Form1.Caption = "Share - Esperando que acepte el archivo"
    Color (3)
    Exit Sub
End If


probe con CD.CancelError = true , desp con False y no se q mas hacer... probe con If etc... en google hay un ejemplo pero con el show font, y no lo termine de entender... si alguno me dice como hacer se lo agraderia

GroK

La forma mas facil (que no la mas elegante) es:

Código (vb) [Seleccionar]
On Error Goto Error
If WS.State = 7 Then
    CD.ShowOpen
    RutArchivo = CD.FileName
    Open RutArchivo For Binary As #1
    EnvArchivo = Input(LOF(1), 1)
    Close #1
    EnvTam = Len(EnvArchivo)
    WS.SendData "Archivo|" & RutArchivo & "|" & EnvTam
    Form1.Caption = "Share - Esperando que acepte el archivo"
    Color (3)
:Error
Exit Sub
End If


Saludos
"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant


vivachapas

si esa es la q tenia xD pero... mas abajo cuando recibe el archivo... para poner asi tengo q modificarlo al code xD

otra cosita... en una parte del code tengo dos InpuBox, pero si se cancela uno... se sigue con el codigo como si hubiese aceptado.. y en el caso de no poner nada va al error

el code es

Private Sub Command2_Click()
On Error GoTo Peor
Puerto = InputBox("Ingrese Puerto para Escuchar:", "Share Escuchar", "200")
If Puerto = vbCancel Then
Exit Sub
End If
WS.Close
WC.Close
WC.LocalPort = Puerto
WC.Listen
Command1.Enabled = False
Form1.Caption = "Share - Esperando Conexión"
Color (3)
Exit Sub

Peor:
MsgBox "Error, verifique que los datos ingresados sean correctos.", vbCritical, "Share Error"
End Sub


pense q seria como el msgbox... pero se ve q no xD jejej alguna idea de como hacerlo? aca no puedo usar el On Error Goto xq lo use para el caso de q en el puerto pongan una palabra...

cassiani

Citarsi yo no pongo abrir y pongo cancelar tira un error y se cierra el programa...

Para evitar que se cierre al cancelar, yo hacia esto:

Private Sub Command1_Click()
On Error Resume Next

    With CommonDialog1
        .CancelError = True 'Esto hará que VB devuelva un error al pulsar Cancelar
        .ShowOpen 'Muestra el cuadro de diálogo Abrir
       
        'Si no se ha producido ningún error, es que NO se ha pulsado Cancelar
        If Err.Number = 0 Then
            'Aqui tu code
        End If
    End With
   
   
    '-------------------------->> Control de Errores <<------------------------------
    'Es buena costumbre volver a ponerlo a cero... así dejamos de detectar errores
    Err = 0 'cancelamos el error/ 0 es que no hay error
    On Local Error GoTo 0 'sirve si queremos dejar de detectar errores
End Sub


Saludos! ¡quizas sirva de algo! voy rápido y no me da tiempo de leer más... :rolleyes:

vivachapas

jja si barbaro muchas gracias :DD: ;)

cassiani

#5
 Hola... con un poco más de tiempo...

Citarpense q seria como el msgbox... pero se ve q no xD jejej alguna idea de como hacerlo? aca no puedo usar el On Error Goto xq lo use para el caso de q en el puerto pongan una palabra...

Al parecer, no!

Código (vb) [Seleccionar]
Puerto = InputBox("Ingrese Puerto para Escuchar:", "Share Escuchar", "200")
If Puerto = vbCancel Then' <--- ???
   Exit Sub
End If


Cuando se presiona el botón Cancelar o se cierra el imputBox usando la X, el programa devuelve una cadena de caracteres igual a 0, por lo tanto --> Puerto = "" y la comparación deberia ser:
Código (vb) [Seleccionar]
If Puerto <> "" Then
   'Hago algo...
End If

'ó asi:

If Puerto = "" Then
   'Hago algo...
End If


Usando tu code, yo lo haria asi:

Código (vb) [Seleccionar]
Option Explicit
'----------------------------------- _
Controlando entradas de un ImputBox _
------------------------------------

Private Sub Form_Load()
Dim Puerto As String 'Almacenará el puerto de escucha
   
Repetir: 'Repetir hasta que se presione cancelar, se cierre la ventanita "X" ó hasta _
que el valor devuelto sea valido
   
    'Almacenamos el valor
    Puerto = InputBox("Ingrese Puerto para Escuchar:", "Share Escuchar", "200")
   
    'Si "Puerto" tiene algun valor, es porque NO se ha cancelado
    If Puerto <> "" Then
        'En ese caso, verificamos que sea un valor de puerto válido, sino repetimos
        If IsNumeric(Puerto) Then
            'Tu code
            WS.Close 'Cerrando el socket
            WC.Close
   
            WC.LocalPort = Puerto 'Asignando puerto
            WC.Listen 'Escuchando...
            Command1.Enabled = False
            Form1.Caption = "Share - Esperando Conexión"
            Color (3)
        Else
            GoTo Repetir
        End If
    Else
        'Si cancelamos, nos vamos... :-[
        MsgBox "¡Se cancelo!...", vbInformation, "Share Escuchar"
        Exit Sub
    End If
       
    'Mostramos el número de puerto...
    MsgBox "El número de puerto introducido es el '" & Puerto & "'"
End Sub


Saludos! espero que te sea de utilidad...  :P

vivachapas

jaja muchas gracias!! re bien explicado :P jeje

ahroa estoy haciendo graficos para darle una mejor forma y apariencia.. luego le pongo la transpariencia y va a quedar de 10 ;)