jueves, 27 de octubre de 2011

MessageBox

Como usar un MessageBox.

El MessageBox, es un control muy útil a la hora de interactuar con el usuario, especialmente a la hora de mostrar avisos de errores, que de otra manera, no serían tan visibles (Por ejemplo mostrando un texto en la barra de estado)

A continuación de muestran los usos más comunes de este control.




Opción 1 - Mostrar un mensaje

La opción más sencilla pasa por mostrar solamente un mensaje, mediante el primer parámetro de tipo String.

MessageBox.Show("Texto a mostrar")





Opción 2 - Mostrar un mensaje y un título

Es posible indicar el título mediante un segundo parámetro de tipo String.

MessageBox.Show("Texto a mostrar", "Título")






Opción 3 - Configurar los botones que se muestran.

Es posible indicar los botones que se mostrarán mediante el tercer parámetro de tipo MessageBoxButtons.
En el ejemplo se añaden los botones Aceptar y Cancelar.
El resultado de la pulsación de estos botones se puede utilizar, si el MessageBox se llama desde un IF, y se compara con una variable tipo DialogResult.

MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel)









Opción 4 - Añadir un icono.

Como cuarto parámetro es posible indicar un icono a mostrar. El valor debe ser de tipo MessageBoxIcon.

MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)






Opción 5 - Asignar foco a un botón

El quinto parámetro permite indicar cual es el botón por defecto, mediante una un valor de la enumeración MessageBoxDefaultButton.

MessageBoxDefaultButton.Button1 - Envía el foco al primer botón (el de la izquierda)
MessageBoxDefaultButton.Button2 - Envía el foco al segundo botón.
MessageBoxDefaultButton.Button3 - Envía el foco al tercer botón.

En el ejemplo se selecciona como botón por defecto al segundo botón, en este caso el correspondiente a la opción de Cancelar.

MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2)







Opción 6 - Alineación

El sexto parámetro permite, entre otras cosas, la alineación del texto, mediante un valor de tipo  MessageBoxOptions.

En el ejemplo se cambia la alineación a derecha ("MessageBoxOptions.RightAlign")

MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign)








Opción 7 - Botón de Ayuda

El séptimo y último parámetro permite, indicar si se desea añadir un botón de ayuda o no, es un parámetro de tipo Boolean.

En el ejemplo con True se le indica que se añada dicho botón. El valor por defecto es False.

MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign, True)








Tratamiento de la pulsación del botón

Para realizar una acción dependiendo de la pulsación de los botones de un TextBox, es preciso incluirlo en un If y compararlo con algún valor de la enumeración DialogResult.

 If MessageBox.Show("Texto a mostrar", "Título", MessageBoxButtons.OKCancel) = DialogResult.OK Then

            Label1.Text = "Se ha pulsado el botón Aceptar"
        Else
            Label1.Text = "Se ha pulsado el botón Cancelar"
End If


Se llama al Message Box:

Se pulsa el botón Cancelar.




lunes, 24 de octubre de 2011

Bases de datos con Visual Basic

Bases de datos con Visual Basic

Enunciado creación base de datos en Microsoft Access de una sola tabla
https://docs.google.com/presentation/d/1iW1ftPsJbyVOCYCGz8W-cL47xGPxwGsKHtqgmyu9OtY/edit?hl=en_US


Gestíon de equipo infantil de Fútbol Sala
Crear una base de datos de Microsoft Acces, de una sola tabla, que permita gestionar la ficha de los jugadores de un equipo de futbol sala infantil.

Deberá permitir guardar al menos los siguientes datos:
  • Identificación del jugador (Nombre y apellidos, dirección, Fecha nacimiento, etc.)
  • Datos de los padres.
  • Foto.
  • Puesto de juego.
  • Talla de ropa y calzado.
  • Rotulacion de la equipación.
  • Estadísticas principales de juego.

Gestíon de equipo de Fútbol Sala de Senior
Crear una base de datos de Microsoft Acces, de várias tablas, que permita gestionar la ficha de los jugadores de un equipo de futbol sala senior.

Deberá permitir guardar al menos los siguientes datos:
  • Identificación del jugador (Nombre y apellidos, dirección, Fecha nacimiento, etc.)
  • Foto.
  • Puesto de juego.
  • Rotulacion de la equipación.
  • Estadísticas principales de juego.
  • Datos de contacto (varios telefonos, dirección trabajo, dirección residencia, etc.)
  • Talla de ropa y calzado, y control de entrega, incluyendo fecha y cantidades.
  • Ayudas recibidas, (cantidades, concepto, fecha)


Facturas de clientes
Crear en la base de datos de Microsoft Acces, una base de datos que permita gestionar facturas de venta.

Según la normativa actual, el contenido mínimo de una factura es:
  • Número de factura, y en su caso, serie. El número de factura siempre tiene que ser correlativo, es decir, no se pueden emitir dos facturas con el mismo número de factura y serie. Además debe guardar correlación con la fecha de factura.
  • La fecha de factura.
  • Nombre y apellidos o Razón Social del empresario que expide la factura y el destinatario.
  • NIF / CIFdel empresario y el destinatario.
  • Domicilio fiscal del empresario y destinatario.
  • Descripción de la operación (prestación del servicio o productos que se venden).
  • Tipo de IVA aplicable/s.
  • Desglose entre BASE y CUOTA de IVA. Si la factura tiene varios tipos de IVA, la factura deberá recoger por separado base y cuota de cada uno de los tipos.
  • Fecha de realización de la operación si es distinta a la fecha de expedición de la factura.
  • En el caso de que emitamos una factura exenta o no sujeta a IVA es necesario indicar el precepto de la Ley que lo recoge.

Facturas de clientes
Crear una aplicación en Visual Basic, que permita acceder a la base de datos de clientes.

Deberá permitir obtener los siguientes listados por pantalla:
  • Listado de clientes.
  • Listado de todas las facturas (solo encabezados).
  • Listado de facturas de un cliente determinado, permitiendo navegar entre los distintos clientes.
  • Datos de factura, incluyendo encabezado y líneas.

viernes, 21 de octubre de 2011

Acceso a disco con Visual Basic

Para poder acceder a directorios y ficheros se dispone de varias clases:

Directory, implementa métodos estáticos para acceso a directorios.
DirectoryInfo, implementa métodos de instancia para acceso a directorios, incluye las mismas opciones que Directory, pero es preciso la creación de una instancia de la clase.
Si se van a realizar muchas acciones sobre el mismo directorio, es más cómoda al no tener que introducir la ruta en todas las acciones como habría que hacer con Directory.

File, implementa métodos estáticos para acceso a ficheros.

FileInfo, implementa métodos de instancia para acceso a ficheros, incluye las mismas opciones que File, pero es preciso la creación de una instancia de la clase.
Si se van a realizar muchas acciones sobre el mismo fichero, es más cómoda al no tener que introducir la ruta en todas las acciones como habría que hacer con File.


DriveInfo, permite acceder a información sobre las unidades de disco.



Directory.Exists("C:\mi_directorio")

Devuelve True si existe el fichero y False si no existe

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        If Directory.Exists("C:\mi_directorio") Then
            MessageBox.Show("O directorio C:\mi_directorioexiste")
        Else
            MessageBox.Show("O directorio C:\mi_directorioNON existe")
        End If



 Directory.CreateDirectory("C:\mi_directorio")

Si el directorio no existe lo crea.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        Directory.CreateDirectory("C:\mi_directorio")


Directory.Exists("C:\mi_directorio")  +  Directory.CreateDirectory("C:\mi_directorio")

Sería lógico, aunque no necesário, unir las dos opciones anteriores, y comprobar si el directorio existe antes de intentar crearlo

Se comprueba si el directorio no existe, y en ese caso lo crea.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


        'Si no existe el directorio, lo crea
        'puede valer para asegurarse de que tenemos el directorio creado
        If Not Directory.Exists("C:\mi_directorio") Then
            Directory.CreateDirectory("C:\mi_directorio")
        End If



Directory.Delete("C:\mi_directorio")

Con Delete eliminamos un directorio no vacío.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

          Directory.Delete("C:\mi_directorio")



Directory.GetCurrentDirectory()

Obtiene el directorio actual de trabajo.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        'recupera el directorio actual de trabajo
        MessageBox.Show(Directory.GetCurrentDirectory())



Directory.Move(origen, destino)

Mueve un directorio, si el nombre de origen y destino son distintos, lo renombra

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        Directory.Move("C:\mi_directorio", "c:\mi_directorio_nuevo")




Directory.GetFiles("c:\")

Devuelve una tabla de cadenas de caracteres con los ficheros contenidos en la carpeta que se le pasa por parámetro.

Se muestra una implementación para rellenar un ListBox con el contenido recuperado por Directory.GetFiles

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        'Se declara una tabla de cadenas de caracteres y se carga con los

        'ficheros del directorio C:\
        Dim ficheros() As String = Directory.GetFiles("c:\")

        'Se vacia el ListBox por si ya contiene datos
        ListBox1.Items.Clear()

        'Para cada dato contenido en ficheros
        'se añade una entrada en el ListBox1
        For Each dato As String In ficheros
            ListBox1.Items.Add(dato)
        Next





Directory.GetDirectories("c:\")

Devuelve una tabla de cadenas de caracteres con los directorios contenidos en la carpeta que se le pasa por parámetro.

Se muestra una implementación para rellenar un ListBox con el contenido recuperado por Directory.GetDirectories

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


        'Se declara una tabla de cadenas de caracteres y se carga con los
        'directorios del directorio C:\
        Dim directorios() As String = Directory.GetDirectories("c:\")

        'Se vacia el ListBox por si ya contiene datos
        ListBox1.Items.Clear()

        'Para cada datos contenido en ficheros
        'se añade una entrada en el ListBox1
        For Each dato As String In directorios
            ListBox1.Items.Add(dato)
        Next





Directory.GetCreationTime("c:\mi_directorio")

Devuelve un objeto tipo Date con la fecha de creación del directorio o fichero que se le pasa por parámetro.

Se muestra una implementación para mostrar la fecha al usuario mediante un MessageBox.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 



        'devuelve la fecha de creación de un fichero o directorio
        MessageBox.Show(Directory.GetCreationTime("c:\vicente").ToString)


NOTA 1: También existen


        Directory.GetLastAccessTime() - Devuelve la fecha de ultimo acceso.
        Directory.GetLastWriteTime() Devuelve la fecha de modificación.


NOTA 2:
Asímismo existen las mismas funciones acabadas en Utc (Coordinated Universal Time - Tiempo Universal Coordinado, equivalente al antes conocido como hora de Greenwich ), las cuales devuelven el valor de la fecha y hora pero basandose en la hora UTC.

        Directory.GetCreationTimeUtc()
        Directory.GetLastAccessTimeUtc()
        Directory.GetLastWriteTimeUtc()

NOTA 3
También existe otra variante de todas estas funciones, pero con Set en lugar de Get, lo que permite modificar las horas antes indicadas:


        Directory.SetCreationTimeUtc()
        Directory.SetLastAccessTimeUtc()
        Directory.SetLastWriteTimeUtc()

        Directory.SetCreationTimeUtc()
        Directory.SetLastAccessTimeUtc()
        Directory.SetLastWriteTimeUtc()






Directory.GetLogicalDrives()


Devuelve una tabla de cadenas de caracteres con las unidades lógicas presentes en el sistema.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Ejemplo de código
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


        'declaro una tabla de cadenas de caracteres y la cargo
        Dim letras_unidad() As String = Directory.GetLogicalDrives()

        'vacio el ListBox por si ya contiene datos
        ListBox1.Items.Clear()

        'para cada dato
        'añado una entrada en el ListBox1
        For Each dato As String In letras_unidad
            ListBox1.Items.Add(dato)
        Next

jueves, 20 de octubre de 2011

Reproducir sonido con Visual Basic


Enlace a la presentación de reproducción de sonidos
https://docs.google.com/presentation/d/1-Eo9Nx-sQPD5F-QmROSWOOvQE55BkJQrboE5aiaQmY4/edit?hl=en_US




Console.Beep()

Suena el speaker del pc.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

System.Media.SystemSounds.Beep.Play()
System.Media.SystemSounds.Asterisk.Play()
System.Media.SystemSounds.Exclamation.Play()
System.Media.SystemSounds.Hand.Play()
System.Media.SystemSounds.Question.Play()

El valor de systemSound debe ser uno de los miembros de la clase SystemSounds:
  • Asterisk
  • Beep
  • Exclamation
  • Hand
  • Question
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

My.Computer.Audio.Play("c:\wav.wav")
My.Computer.Audio.Play("c:\wav.wav",AudioPlayMode.Background)

Reproducen en Background una sola vez un wav.

My.Computer.Audio.Play("c:\wav.wav", AudioPlayMode.WaitToComplete)

Reproducen en primer plano una sola vez un wav (no se puede parar).

My.Computer.Audio.Play("c:\wav.wav", AudioPlayMode.BackgroundLoop)
Reproducen en Background un wav en bucle infinito.


My.Computer.Audio.Stop()
Detiene una reproducción en segundo plano.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Mediante el control AxWindowsMediaPlayer

Permite reproducir cualquier tipo de archivo soportado por el reproductor Windows Media Player (Wav, Mp3, midi, Avi).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Mediante llamadas a las API de windows (mciSendString)

Dispositivos MCI (Media Control Interface)
Los siguientes dispositivos MCI se suministran con Windows:
    Dispositivo de sonido de CD
     Dispositivo secuenciador MIDI
     Dispositivo de vídeo con movimiento
     Dispositivo PIONEER LaserDisc
     Dispositivo VCR VISCA
     Dispositivo de sonido de onda





Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal _ uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer


'para cargar un archivo multimedia
mciSendString("open c:\avi.avi alias myDevice", Nothing, 0, 0)
'para iniciar la reproducción de un archivo multimedia
mciSendString("play myDevice", Nothing, 0, 0)


'para detener la reproducción de un archivo multimedia
mciSendString("stop myDevice", Nothing, 0, 0)

miércoles, 19 de octubre de 2011

Leer datos de un fichero BMP

En este ejemplo se explica como acceder a la información contenida en un fichero tipo BMP.

Para consultar información acerca de los distintos formatos gráficos:
http://es.wikipedia.org/wiki/Anexo:Formatos_de_archivo_de_gr%C3%A1ficos

Para acceder a los datos solo es preciso conocer que tipo de dato hay escrito en cada posición del fichero, una vez conocidos esos datos solo es preciso leerlos, mediante un BinaryReader.

La estructura del fichero se puede consultar en:
http://es.wikipedia.org/wiki/Windows_bitmap

A continuación se muestra el resumen de los datos que ofrece la wikipedia.


BytesInformación
0, 1Tipo de fichero "BM"
2, 3, 4, 5Tamaño del archivo
6, 7Reservado
8, 9Reservado
10, 11, 12, 13Inicio de los datos de la imagen
14, 15, 16, 17Tamaño de la cabecera del bitmap
18, 19, 20, 21Anchura (píxels)
22, 23, 24, 25Altura (píxels)
26, 27Número de planos
28, 29Tamaño de cada punto
30, 31, 32, 33Compresión (0=no comprimido)
34, 35, 36, 37Tamaño de la imagen
38, 39, 40, 41Resolución horizontal
42, 43, 44, 45Resolución vertical
46, 47, 48, 49Tamaño de la tabla de color
50, 51, 52, 53Contador de colores importantes



El resultado final de la aplicación será el siguiente:



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - - - - - - - CODIGO DE LA APLICACIÓN - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Public Structure CabeceraDelArchivo
    Public Tipo1 As Byte
    Public Tipo2 As Byte
    Public Tamano As Integer
    Public Reservado1 As Short
    Public Reservado2 As Short
    Public Desplazamiento As Integer
End Structure


Public Structure CabeceraDeLaImagen
    Public Tamano As Integer
    Public Ancho As Integer
    Public Alto As Integer
    Public Planos As Short
    Public Bits As Short
    Public Compresion As Integer
    Public TamanoDeLaImagen As Integer
    Public XPuntosPorMetro As Integer
    Public YPuntosPorMetro As Integer
    Public ColoresUsados As Integer
    Public ColoresImportantes As Integer


End Structure



    Private Sub btnAbrirMapaDeBits_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbrirMapaDeBits.Click

        OpenFileDialog1.Filter = "Mapas de bits|*.bmp"
        OpenFileDialog1.ShowDialog()

        'Se carga la imagen en el control PictureBox
        PictureBox1.ImageLocation = OpenFileDialog1.FileName

        'Se crea una variable de cada tipo de estructura
        Dim CabeceraArchivo As CabeceraDelArchivo
        Dim CabeceraImagen As CabeceraDeLaImagen

        'Se abre mediante un lector binario el fichero BMP de la imagen
        Dim fichero As New BinaryReader(File.Open(OpenFileDialog1.FileName, FileMode.Open))

        'Se rellenan los datos de la estructura correspondiente a la cabecera del archivo
        CabeceraArchivo.Tipo1 = fichero.ReadByte()
        CabeceraArchivo.Tipo2 = fichero.ReadByte()
        CabeceraArchivo.Tamano = CInt(fichero.ReadUInt32())
        CabeceraArchivo.Reservado1 = fichero.ReadInt16()
        CabeceraArchivo.Reservado2 = fichero.ReadInt16()
        CabeceraArchivo.Desplazamiento = fichero.ReadInt32()

        'Se rellenan los datos de la estructura correspondiente a la cabecera de la imagen
        CabeceraImagen.Tamano = fichero.ReadInt32()
        CabeceraImagen.Ancho = fichero.ReadInt32()
        CabeceraImagen.Alto = fichero.ReadInt32()
        CabeceraImagen.Planos = fichero.ReadInt16()
        CabeceraImagen.Bits = fichero.ReadInt16()
        CabeceraImagen.Compresion = fichero.ReadInt32()
        CabeceraImagen.TamanoDeLaImagen = fichero.ReadInt32()
        CabeceraImagen.XPuntosPorMetro = fichero.ReadInt32()
        CabeceraImagen.YPuntosPorMetro = fichero.ReadInt32()
        CabeceraImagen.ColoresUsados = fichero.ReadInt32()
        CabeceraImagen.ColoresImportantes = fichero.ReadInt32()

        'Se cierra el fichero
        fichero.Close()

        'Se escribe en el TextBox1 todos los datos leidos del fichero
        TextBox1.Text = "Cabecera del archivo" & vbCrLf & "------------------------------" & vbCrLf

        TextBox1.Text = TextBox1.Text & _
          "Tipo: " & Chr(CabeceraArchivo.Tipo1) & Chr(CabeceraArchivo.Tipo2) & vbCrLf & "Tamano: " & CabeceraArchivo.Tamano & vbCrLf & _
          "Reservado1: " & CabeceraArchivo.Reservado1 & vbCrLf & "Reservado2: " & CabeceraArchivo.Reservado2 & vbCrLf & _
          "Desplazamiento: " & CabeceraArchivo.Desplazamiento & vbCrLf & vbCrLf

        TextBox1.Text = TextBox1.Text & "Cabecera de la imagen" & vbCrLf & "------------------------------" & vbCrLf

        TextBox1.Text = TextBox1.Text & _
          "Tamano: " & CabeceraImagen.Tamano & vbCrLf & _
          "Ancho: " & CabeceraImagen.Ancho & vbCrLf & _
          "Alto: " & CabeceraImagen.Alto & vbCrLf & _
          "Planos: " & CabeceraImagen.Planos & vbCrLf & _
          "Bits: " & CabeceraImagen.Bits & vbCrLf & _
          "Compresion: " & CabeceraImagen.Compresion & vbCrLf & _
          "TamanoDeLaImagen: " & CabeceraImagen.TamanoDeLaImagen & vbCrLf & _
          "XPuntosPorMetro: " & CabeceraImagen.XPuntosPorMetro & vbCrLf & _
          "YPuntosPorMetro: " & CabeceraImagen.YPuntosPorMetro & vbCrLf & _
          "ColoresUsados: " & CabeceraImagen.ColoresUsados & vbCrLf & _
          "ColoresImportantes: " & CabeceraImagen.ColoresImportantes & vbCrLf
    End Sub


Formularios con fondo transparente

En este post se explica como crear formularios con fondo transparente.

En la siguiente ilustración se muestra el resultado de un formulario, al que se le ha colocado una imagen del pingüino Tux de fondo, se le ha ocultado el fondo y se le ha indicado que no tenga bordes.

Vayamos por partes:

1 - En un formulario colocar una imagen como fondo (BackgroundImage)
En este caso se ha colocado una imagen gif con el fondo transparente que representa al pingüino Tux.


2 - Seleccionar un color de fondo para el formulario, que no se corresponda con ningún color de la imagen para evirtar que desaparezcan trozos de la imagen.
En este caso se ha elegido el color Lime.


3 - Para conseguir el efecto de la transparencia es preciso indicar en la propiedad TransparencyKey del formulario el color que queremos que trate como transparente.
En este caso también indicamos el color Lime en esta propiedad.
Con esto se consigue que el se pueda ver a través del fondo del forumlario.


4 - Para que no se vea el borde, se debe modificar la propiedad FormBorderStyle a None. Quedando en el editor de Visual Basic como se muestra a continuación.


Si se ejecuta la aplicación se verá solo la imagen y no el fondo del formulario.
Esto puede ser útil para la realización de pantallas de Splash.
A continuación se muestra el resultado de ejecutar esta aplicación sobre este blog.



5 - Para terminar la aplicación quedaría añadir a la aplicación alguna manera de cerrarse, por ejemplo en el evento clic del formulario.
Para ello en el procedimiento controlador del evento se incluye la instrucción:
Me.Close ()

Imágenes transparentes en Visual Básic


Para poner imágenes transparentes en un control de Visual Básic, en primer lugar hay que tener en cuenta que el formato de la imagen que se muestre en el control debe admitir transparencias.

Los formatos más adecuados para esa tarea son:

1 - GIF (entre 2 y 256 colores indexados, permite usar un color transparente y animaciones) utiliza compresión LZW patentada por la compañía Unisys http://es.wikipedia.org/wiki/Graphics_Interchange_Format

2 - PNG (imagenes entre 1 bit y 64 bits por color) está basado en un algoritmo de compresión sin pérdida no sujeto a patentes, APNG es un formato basado en PNG que soporta animación.
http://es.wikipedia.org/wiki/Png

Una vez elegida la imagen, se aplica al control deseado.

El mismo caso es con los controles que muestran texto. En la siguiente ilustración se muestra un control Label al que solamente se le ha asignado un texto.


Sin embargo al poner un control ya sea una etiqueta o un control con imagen, se ve el color del fondo.

Para que no se muestre el color del fondo, hay que modificar la propiedad BackColor, y asignarle el color, de la pestaña Web Transparent, que es el primero del listado


Resultado de aplicar como color de fondo (BackColor) al control Label el color Transparent.


Colocado en un formulario quedaría como se muestra a continuación:


Sin embargo, en realidad Visual Basic no aplica realmente un color transparente al fondo, sino lo que hace es copiar el color de fondo tapado en el fondo del control.

Esto provoca que si se solapan dos controles, en vez de que se vea el control inferior a través del superior, se ve el trozo de fondo correspondiente.


Detalla del efecto producido por el solapamiento de controles con fondo transparente.



martes, 18 de octubre de 2011

Comunicaciones

Presentación correspondiente a la teoría de redes y comunicaciónes explicada en clase.

https://docs.google.com/present/edit?id=0AaWlzM8W-gAEZGY0ZHM1cWNfMTI3MTRndm00cGY4&hl=en_US

Contenido:
La comunicación
Emisor
Receptor
Medio o canal
Mensaje
Contexto
Ruido (Atmosférico, Extraterrestre, Humano)
Clasificación de redes por tamaño (LAN, MAN, WAN)
Topologías de red básicas: malla, estrella,árbol, bus y anillo.
Capas Osi de Iso
Protocolos

Formularios MDI

Creación, en Visual Basic 2010, de una aplicación que use formularios MDI, y permita modificar valores de un formulario desde otro.

En primer lugar se crea un proyecto nuevo de tipo Windows Forms



Una vez abierto se tiene una aplicación normal con un único formulario




Se accede al menú Proyecto -> Agregar nuevo elemento

En esa ventana seleccionar Formulario Primario MDI (Multiple Document Interface)



Aparece un formulario MDI, con la barra de menús estándar, una barra de herramientas estándar y una barra de estado.

Contiene el código de parte de los menús y botones que incorpora.


Acceder al Explorador de soluciones, y ahí seleccionar My Project.



En la ventana de configuración que sale, seleccionar como formulario de inicio el que se acaba de incorporar a la aplicación.


En la opción formulario de inicio seleccionar el formulario MDI que se ha insertado (si no se le ha cambiado el nombre se llamará MDIParent1).



Añadir en el procedimiento controlador del evento que deseamos que abra el formulario hijo el siguiente código.

Form1.Mdiparent = Me
Form1.Show()

Con la primera instrucción se indica al formulario que tiene un padre, que es Me (el fomulario actual), y con la segunda se indica que lo abra.


lunes, 17 de octubre de 2011

Ejercicios Multimedia


Ejercicios Multimedia

Ejercicio 1

Control de Stock + imágenes

https://docs.google.com/present/edit?id=0AaWlzM8W-gAEZGY0ZHM1cWNfMTI3NWhudHhjM2Rr&hl=en_US


Mejorar aplicación entregada en examen de módulo anterior para que soporte imágenes de artículos.

Se deberá incluir un control PictureBox, en la ventana de creación de artículo, en el que incluir la imagen del producto introducido.


También se deberá incluir otro PictureBox en la ventana de Stock de artículo, que muestre la imagen del artículo buscado.

NOTA: Para asignar la ruta seleccionada mediante el control OpenFileDialog al control PictureBox, utilizar el siguiente código:

PictureBox1.BackgroundImage = Image.FromFile(OpenFileDialog1.FileName)

lunes, 10 de octubre de 2011

Código de lectura y escritura en un fichero XML.


Código de lectura en un fichero XML. Obtención de datos de artículos.

Se crea una aplicación que permita leer un fichero XML, mostrándolo en un control TextBox.

También permitirá añadir datos al final del fichero.



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE UN FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

       Dim total_elementos As Integer

        'cargar el fichero xml
        Dim documento_xml As New xmldocument
        documento_xml.Load("C:\XMLFile1.xml")

        TextBox1.Text = "Datos contenidos en el fichero C:\XMLFile1.xml" & Environment.NewLine
        TextBox1.Text = TextBox1.Text & " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" & Environment.NewLine & Environment.NewLine

        Dim articulos As XmlNode = documento_xml.DocumentElement

        For Each articulo As XmlElement In articulos.ChildNodes
            'se añade el atributo al textbox
            TextBox1.Text = TextBox1.Text & "Código de artículo: "
            TextBox1.Text = TextBox1.Text & articulo.GetAttribute("codigo_articulo")
            TextBox1.Text = TextBox1.Text & Environment.NewLine
            'se añaden los valores de los textos al textbox
            TextBox1.Text = TextBox1.Text & "Descripción: "
            TextBox1.Text = TextBox1.Text & articulo.Item("descripcion").InnerText
            TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & "Precio de compra: "
            TextBox1.Text = TextBox1.Text & articulo.Item("precio_compra").InnerText
            TextBox1.Text = TextBox1.Text & " - IVA de compra: "
            TextBox1.Text = TextBox1.Text & articulo.Item("iva_compra").InnerText

            ' TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & " - Importe IVA compra: " & (CDbl(articulo.Item("precio_compra").InnerText) * CDbl(articulo.Item("iva_compra").InnerText) / 100)

            TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & "PVP compra: " & (CDbl(articulo.Item("precio_compra").InnerText) * (1 + (CDbl(articulo.Item("iva_compra").InnerText) / 100)))


            TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & "Precio de venta: "
            TextBox1.Text = TextBox1.Text & articulo.Item("precio_venta").InnerText
            TextBox1.Text = TextBox1.Text & " - IVA de venta: "
            TextBox1.Text = TextBox1.Text & articulo.Item("iva_venta").InnerText

            'TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & " - Importe IVA venta: " & (CDbl(articulo.Item("precio_venta").InnerText) * CDbl(articulo.Item("iva_venta").InnerText) / 100)

            TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & "PVP venta: " & (CDbl(articulo.Item("precio_venta").InnerText) * (1 + (CDbl(articulo.Item("iva_venta").InnerText) / 100)))

            TextBox1.Text = TextBox1.Text & Environment.NewLine
            TextBox1.Text = TextBox1.Text & Environment.NewLine

            total_elementos += 1
        Next

        'TextBox1.Text = TextBox1.Text & Environment.NewLine
        TextBox1.Text = TextBox1.Text & " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" & Environment.NewLine
        TextBox1.Text = TextBox1.Text & "Se han mostrado un total de " & total_elementos & " artículos."


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO ESCRITURA DE UN FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



 Private Sub bt_anadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_anadir.Click

        'Se crea una variable para acceder al documento XML
        Dim documento_xml As New XmlDocument

        'Se indica la ubicación del fichero y se abre
        documento_xml.Load("C:\XMLFile1.xml")

        Dim articulo As XmlElement = documento_xml.CreateElement("articulo")
        articulo.SetAttribute("codigo_articulo", txt_codigo.Text)

        Dim descripcion As XmlElement = documento_xml.CreateElement("descripcion")
        descripcion.InnerText = txt_descripcion.Text
        articulo.AppendChild(descripcion)

        Dim precio_compra As XmlElement = documento_xml.CreateElement("precio_compra")
        precio_compra.InnerText = txt_neto_compra.Text
        articulo.AppendChild(precio_compra)

        Dim iva_compra As XmlElement = documento_xml.CreateElement("iva_compra")
        iva_compra.InnerText = txt_iva_compra.Text
        articulo.AppendChild(iva_compra)

        Dim precio_venta As XmlElement = documento_xml.CreateElement("precio_venta")
        precio_venta.InnerText = txt_neto_venta.Text
        articulo.AppendChild(precio_venta)

        Dim iva_venta As XmlElement = documento_xml.CreateElement("iva_venta")
        iva_venta.InnerText = txt_iva_venta.Text
        articulo.AppendChild(iva_venta)

        'Se obtiene el nodo raiz que en este caso se corresponde con la etiqueta articulos
        Dim nodo_raiz As XmlNode = documento_xml.DocumentElement

        'Se inserta el artículo al final del archivo dentro del nodo raiz
        nodo_raiz.InsertAfter(articulo, nodo_raiz.LastChild)

        documento_xml.Save("C:\XMLFile1.xml")

        MessageBox.Show("Dato añadido correctamente.")

    End Sub


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FORMATO DEL FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


<?xml version="1.0" encoding="utf-8"?>
<articulos>
  <articulo codigo_articulo="0001">
    <descripcion>Articulo de prueba 0001</descripcion>
    <precio_compra>12</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>21</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="0002">
    <descripcion>Articulo de prueba 0002</descripcion>
    <precio_compra>120</precio_compra>
    <iva_compra>8</iva_compra>
    <precio_venta>150</precio_venta>
    <iva_venta>8</iva_venta>
  </articulo>
  <articulo codigo_articulo="0003">
    <descripcion>Articulo de prueba 0003</descripcion>
    <precio_compra>1</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>25</precio_venta>
    <iva_venta>8</iva_venta>
  </articulo>
  <articulo codigo_articulo="0004">
    <descripcion>Articulo de prueba 0004</descripcion>
    <precio_compra>1,15</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>2,99</precio_venta>
    <iva_venta>8</iva_venta>
  </articulo>
  <articulo codigo_articulo="0005">
    <descripcion>Articulo de prueba 0004</descripcion>
    <precio_compra>100</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>1000</precio_venta>
    <iva_venta>8</iva_venta>
  </articulo>
  <articulo codigo_articulo="0007">
    <descripcion>descripcion</descripcion>
    <precio_compra>100</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>200</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="008">
    <descripcion>art008</descripcion>
    <precio_compra>200</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>500</precio_venta>
    <iva_venta>8</iva_venta>
  </articulo>
  <articulo codigo_articulo="0009">
    <descripcion>Descripcion Articulo 0009</descripcion>
    <precio_compra>100</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>200</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="0010">
    <descripcion>Descripcion Articulo 0010</descripcion>
    <precio_compra>100</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>200</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="0011">
    <descripcion>Descripcion Articulo 0011</descripcion>
    <precio_compra>1000</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>2000</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="0012">
    <descripcion>Descripcion Articulo 0012</descripcion>
    <precio_compra>1</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>2,5</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
  <articulo codigo_articulo="0013">
    <descripcion>Descripcion Articulo 13</descripcion>
    <precio_compra>100</precio_compra>
    <iva_compra>18</iva_compra>
    <precio_venta>200</precio_venta>
    <iva_venta>18</iva_venta>
  </articulo>
</articulos>

viernes, 7 de octubre de 2011

Lectura de ficheros XML

Una buena opción para almacenar datos es la utilización de ficheros de tipo XML, que permiten una gestión de datos similar a la de una base de datos, pero de forma más sencilla aunque también más limitada.



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE UN ATRIBUTO DE UN NODO EN UN FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        TextBox1.Text =  persona.GetAttribute("nif") & Environment.NewLine


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE UN TEXTO DE UN NODO EN UN FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        TextBox1.Text =  persona.Item("nombre").InnerText 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE TODOS LOS DATOS DE UN FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Se declara una variable para almacenar el documento XML
        Dim documento_xml As New XmlDocument

        'Cargar en la variable el fichero
        documento_xml.Load("XMLFile1.xml")

        'Se define el nodo raiz
        Dim personas As XmlNode = documento_xml.DocumentElement

        For Each persona As XmlElement In personas.ChildNodes
            'Se muestran solo las personas mayores de edad
            If CInt(persona.Item("edad").InnerText) >= 18 Then
                TextBox1.Text = TextBox1.Text & persona.GetAttribute("nif") & Environment.NewLine
                TextBox1.Text = TextBox1.Text & persona.Item("nombre").InnerText & Environment.NewLine
                TextBox1.Text = TextBox1.Text & persona.Item("apellidos").InnerText & Environment.NewLine
                TextBox1.Text = TextBox1.Text & persona.Item("direccion").InnerText & Environment.NewLine
                TextBox1.Text = TextBox1.Text & persona.Item("cod_postal").InnerText & Environment.NewLine
                TextBox1.Text = TextBox1.Text & "- - - - - - - - -" & Environment.NewLine
            End If
        Next
    End Sub



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CONTENIDO DEL FICHERO XML
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

<?xml version="1.0" encoding="utf-8" ?>

<personas>
 
  <persona nif="12345678A">
    <edad> 25</edad>
    <nombre>Julia</nombre>
    <apellidos>Anilom Anul</apellidos>
    <direccion>C/ Rio lerez 8 </direccion>
    <cod_postal>36125</cod_postal>
  </persona>

  <persona nif="12547788T">
    <edad> 15</edad>
    <nombre>Ana Isabel</nombre>
    <apellidos>Martinez Leins</apellidos>
    <direccion>C/ Pazos s/n </direccion>
    <cod_postal>36998</cod_postal>
  </persona>

  <persona nif="12547758E">
    <edad> 65</edad>
    <nombre>Ana Isabel</nombre>
    <apellidos>Martinez Juste</apellidos>
    <direccion>C/ san andres s/n </direccion>
    <cod_postal>36004</cod_postal>
  </persona>
 
  <persona nif="12549958E">
    <edad> 5</edad>
    <nombre>Andrea</nombre>
    <apellidos>Martinez Martinez</apellidos>
    <direccion>C/ san andres s/n </direccion>
    <cod_postal>36004</cod_postal>
  </persona>

</personas>

jueves, 6 de octubre de 2011

Escritura y lectura de ficheros binarios con BinaryWriter y BinaryReader


De forma similar a la que se escriben y leen datos en ficheros de texto mediante StreamWriter y StreamReader, es posible realizar el mismo proceso en ficheros binarios mediante sus equivalentes:
BinariWriter y BinaryReader

Al igual que en el caso de los ficheros de texto el proceso se reduce a tres pasos:
1 - Creación del lector o escritor.
2 - Leer o escribir.
3 - Cerrar el fichero.



video

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO ESCRITURA DE UN ÚNICO DATO EN UN FICHERO BINARIO
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Private Sub bt_guardar_binario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_guardar_binario.Click

        'crear el escritor equivale al fopen de c/c++
        Dim fichero As New BinaryWriter(File.Open("C:\datos_binarios.vaf",
                            FileMode.Create, FileAccess.ReadWrite))

        Dim numero_inicial As Single = CSng(txt_numero_inicial.Text)

        'se escribe el valor de la variable en el fichero binario
        fichero.Write(numero_inicial)

        'se cierra el fichero
        fichero.Close()

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE UN ÚNICO DATO EN UN FICHERO BINARIO
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Private Sub bt_leer_binario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_leer_binario.Click
        'crear el lector equivale al fopen de c/c++
        Dim fichero As New BinaryReader(File.Open("C:\datos_binarios.vaf",
                            FileMode.Open, FileAccess.ReadWrite))

        Dim dato_leido As Single

        dato_leido = fichero.ReadSingle()

        txt_leido.Text = dato_leido.ToString


        'se cierra el fichero
        fichero.Close()
    End Sub


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO ESCRITURA DE VARIOS DATOS EN UN FICHERO BINARIO
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



    Private Sub bt_guardar_listado_binario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_guardar_listado_binario.Click
        'crear el escritor equivale al fopen de c/c++
        Dim fichero As New BinaryWriter(File.Open("C:\datos_binarios.vaf",
                            FileMode.Create, FileAccess.ReadWrite))

        Dim numero_inicial As Single = CSng(txt_numero_inicial.Text)
        Dim numero_final As Single = CSng(txt_numero_final.Text)


        'se escriben los valores que va tomando la variable en el fichero binario
        For dato As Single = numero_inicial To numero_final
            fichero.Write(dato)
        Next

        'se cierra el fichero
        fichero.Close()
    End Sub


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CÓDIGO LECTURA DE TODOS LOS DATOS DE UN FICHERO BINARIO DE SINGLES
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




    Private Sub bt_leer_todo_binario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_leer_todo_binario.Click
        'crear el lector equivale al fopen de c/c++
        Dim fichero As New BinaryReader(File.Open("C:\datos_binarios.vaf",
                            FileMode.Open, FileAccess.ReadWrite))

        Dim dato_leido As Single
        Dim sumatorio As Single

        'Se vacía el textbox para que no se concatene con el contenido
        'generado por una pulsación anterior del botón
        txt_leido.Text = ""

        'se realiza un bucle leyendo hasta final del fichero
        While fichero.PeekChar > -1
            dato_leido = fichero.ReadSingle()
            txt_leido.Text = txt_leido.Text & dato_leido.ToString & Environment.NewLine
            sumatorio += dato_leido
        End While

        'se muestra un messagebox indicando el total del sumatorio
        MessageBox.Show("Los datos del fichero suman: " & sumatorio.ToString)

        'se cierra el fichero
        fichero.Close()
    End Sub

Related Posts Plugin for WordPress, Blogger...