Buscar este blog

domingo, 2 de mayo de 2010

Controles, metodos,funciones, ciclos, estructuras de decision en vb.net

A continuacion empezaremos por definirlo para asi comprender de manera mas profunda su concepto y como ligarlo a los controles en visual basic.


¿Que es un control?


Un control es una herramienta que dispone de variedad de funciones y nos ayuda a resolver algun problema en particular. Pasemos ahora a la definicion y algun ejemplo de controles en visual basic y como escribirles la linea de còdigo.

Control checkedlistbox



Control muy similar al listbox, pero con la caracteristica de que agrupa un conjunto de elementos en donde cada uno tiene la apariencia de casillas de verificacion.
Se desea elaborar un pequeño programa donde tengamos un listbox y un checkedlistbox y un boton para agregar al checkedlistbox ciertos items, y un boton para enviar los items insertados del textbox al listbox entonces procederemos de la siguiente manera:



El siguiente codigo o linea de codigo se escribe en el boton de añadir

checkedlistbox.items.add(textbox1.text)

de esta manera cuando escribamos en un textbox un nombre al presionar el boton de agregar nos saldran insertados lo que escribamos en el textbox. si por lo general quisieramos que lo que escribamos en el checkedlistbox y deseemos transferirlo al listbox y de igual manera que al momento de transferirlo al listbox se quite del checkedlistbox lo que debemos hacer es lo siguiente:


listbox.items.add(checkedlistbox.selecteditem). listbox.items.remove(checkedlistbox.selecteditem).


Otro control tambien muy interesante y muy usado en el explorador de windows es el listview

a continuacion ingreso un enlace el cual te mostrara una previa imagen de un form con el diseño adecuado para este control

haz click http://www.scribd.com/doc/31120970/Imagen-de-Un-Ejemplo-de-Checked-List-Boxcribd.com/doc/31120970/Imagen-de-Un-Ejemplo-de-Checked-List-Box y


Listview



el control listview nos muestra un conjunto de elementos de manera tabular como ya lo dije anteriormente muy similar al usado por el explorador de windows.



Caracteristicas particulares

  1. mostrar la lista de elementos vista de imagen grande
  2. imagen pequeña
  3. lista
  4. detalles
  5. tambien se le pueden insertar columnas

pasemos ahora a mirar un ejemplo de una aplicacion que contenga 3 label con el nombre deseado, tres textbox y un boton de añadir y lo mas importante el listview.

lo que haremos ahora en la parte de diseño en el form_load el form1 en este caso, sera que al momento de cargar el form nos aparescan 3 columnas con los nombre que queramos denominarlas. el siguiente es el codigo para insertarlas

  • listview1.columns.add("nombre")
  • listview1.columns.add("apellido")
  • listview1.columns.add("telefono")


ahora para que podamos agregar items hacemos lo siguente en el boton de agregar que sera el encargado de insertar en el listview los items. El procedimiento es el que viene a continuacion:

declaramos una variable

Dim sitem as listviewitem
sitem= listview1.items.add(textbox1.text)
sitem.subitems.add(textbox2.text)
sitem.subitems.add(textbox3.text)

al hacer esto en el listview nos saldran las 3 columnas asignadas anteriormente y luego para cada columna un item y dos subitem.Si se desean mas items simplemente es extender mas los subitems y listo es todo.

mira un form con los items y subitems agregados
enlace aqui


FUNCIONES EN PROGRAMACION ORIENTADA A OBJETOS

Una funcion en visual basic net es un modulo de un programa separado del cuerpo principal, que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa u otra funcion o procedimiento que la invoque.

La diferencia entre las dos es que las primeras (Sub) no retornan valores y las segundas (Function) si.

Ninguna de las dos puede definirse dentro de una misma función o un procedimiento.

Se pueden definir dentro de un módulo, clase, interfaz o estructura.

Ambos métodos son por defecto públicos y los parámetros que se les pasa por defecto son por valor ByVal, que significa que lo que hace una copia de la variable al parámetro.

ByRefl para la dirección de la variable.

Veamos como se define una función

Public Sub Mostrar(ByVal a As Short)

End Sub

Y un procedimiento

Public Function Mostrar(ByVal a As Short) As Integer

Return 0

End Function

La forma general de una funcion es:

Function Nom_fun(parametros)o nombre de la funcion instrucciones

nomfun = valor

End Function

En esta imagen se alcanza a apreciar un poco la funcion antes descrita

click aqui:

CICLO FOR NEXT EN VB.NET



En visual basic net este ciclo es uno de los mas usados para repetir una secuencia de instrucciones sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccion simple o compuesta.


ejemplo

en el jemeplo a continuacion iniciaremos un ciclo for next donde iniicaremos una varible en 1 y se le ira añadiendo mama hasta llegar a 10 y luego finaliza.


haz click aqui para ver un form con este ejemplo

su sintaxis es la siguiente:

DIM X AS INTEGER
LISTA.ITEMS.CLEAR
FOR X = 1 TO 10
LISTA.ITEMS.ADD(X & "= MAMA")

NEXT X

END SUB


CICLO DO WHILE LOOP

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca como verdadera, en el momento en que la condición se convierte en falsa el ciclo termina.

Su formato general es :


cargar o inicializar variable de condición

Declaramos una variable llamada num2

luego asignamos el valor de 0 para empezar a la variable

num2=0

WHILE (num2<20)

num2=num2 + 1

InputBox("INGRESE UN VALOR ENTERO", NUM2, 1, 20)

'AUMENTANDO LOS NUMEROS'

end while

mira aca un ejemplo http://www.scribd.com/doc/31121540/Bucle-While#fullscreen:off


CICLO DO UNTIL


En este caso el ciclo se repetira hasta que la condicion dada sea la correcta es decir el bucle se repetira mientras la edad sea igual a 0

ejemplo basico:

Do Until edad = 0
edad = edad - 1
Loop



STREAM Y FICHEROS



  • Ficheros

Existen tres tipos de ficheros donde podremos almacenar y leer datos:

  • - Secuenciales
  • - Aleatorios (Random)
  • - Binarios


Cada uno de ellos tiene sus aplicaciones y particularidades.



Ficheros secuenciales



Este tipo de ficheros nos permite guardar información de cualquier longitud. En este tipo de ficheros, la información se guarda colocando un carácter tras otro. La forma de leerlos es, igualmente, carácter tras carácter. (Byte tras byte)

Permiten guardar datos en un fichero con un determinado nombre, "machacando" la información de otro posible fichero que ya estuviese en el disco con el mismo nombre, o añadir la información nueva a continuación de la ya existente.

De esta forma, si ya existía un fichero llamado xxxxx, sobreescribiremos dicho fichero perdiendo la información que contuviese. Es la forma típica de hacerlo cuando modificamos un texto.


FICHEROS ALEATORIOS (RANDOM)


Un fichero aleatorio es un conjunto de registros, todos ellos de la misma longitud, que nos permite guardar varias colecciones de datos.

Los ficheros aleatorios permiten almacenar información en registros que pueden ser fácilmente leídos, pudiendo leer los registros uno a uno, sin necesidad de leerlos todos.

ejemplo de como crear un fichero con una cadena string denominada "hola me llamo daniel medina y soy el nuevo programador entusiasta mucho gusto"

ejemplo

Private Sub Form1_Load(ByVal sender As System.Object, _

  1. ByVal e As System.EventArgs) Handles MyBase.Load


  2. Try
  3. Dim Archivo As System.IO.FileStream
  4. ' crea un archivo vacio prueba.txt
  5. Archivo = System.IO.File.Create("c:\Prueba.txt")
  6. ' error
  7. Catch oe As Exception
  8. MsgBox(oe.Message, MsgBoxStyle.Critical)
  9. End Try
  10. End Sub

Acceso desde aqui


otro ejemplo

Const fic As String = "E:\tmp\Prueba.txt"
Dim texto As String = "Érase una vez una vieja con un moño..."

Dim sw As New System.IO.StreamWriter(fic)
sw.WriteLine(texto)
sw.Close()


Anexar contenido a un fichero existente


Cómo agregar contenido a un fichero, es decir, si ese fichero existe, lo que haremos es añadir más contenido, de forma que después de escribir, lo que tendrá será lo que antes hubiere más lo que ahora escribamos.
Para conseguir esto lo único que tenemos que hacer es indicar en el constructor de la clase StreamWriter un segundo argumento con un valor verdadero.
De esa forma, si el fichero existe, se añadirá el texto al final de lo que ya tuviera. Si el fichero no existe, simplemente se creará y se guardará el texto actual, pero no dará error de que no existe.
Veamos el código para añadir texto a un fichero existente (o crearlo si no existe):
Visual Basic:


Const fic As String = "E:\tmp\Prueba.txt"
Dim texto As String = "Pablito tenía una moto con un pito."

Dim sw As New System.IO.StreamWriter(fic, True)
sw.WriteLine(texto)
sw.Close()


Como ves lo único que hay que hacer es indicar como segundo argumento del constructor de la clase StreamWriter un valor verdadero, y de esa forma le indicamos que queremos agregar el texto al fichero.
Si en vez de usar un valor verdadero, indicas un valor falso (false) el comportamiento será como el del primer ejemplo, es decir, se sobrescribirá el fichero eliminando lo que antes hubiera.


Stream

Los stream proporcionan una forma de leer y escribir bytes desde y hacia un repositorio de seguridad. Un repositorio de seguridad es un medio de almacenamiento, como un disquete o una memoria.


Todas las clases que representan streams heredan de la clase STREAM. La clace STREAM y sus subclases proporcionan una vista generica de fuentes de datos y repositorios, y protegen al programador de los detalles especificos del sistema operativo y de los dispositivos subyacentes


PRICIPALES OPERACIONES DE STREAM

Los stream permiten realizar tres operaciones principales;

1. podemos leer de stream
la lectura es la transferecia de datos desde un stream a una estrectura de datos(como una matriz de bytes)

2. podemos escribir a streams.
La escritura es la transferencia de datos desde una estructura de datos a un stream


3. los stream pueden soportar busqueda.

La busquedas es la consulta y modificacion de la posición actual en un stream. La capacidad de la busqueda depende del tipo de repositorio de seguridad que tenga un stream. Por ejemplo: en conceto de un stream en una red no aplica busqueda por que no lo soportan.
Dependiendo de la fuente de datos subyacente o repositorio. Los streams pueden soportar unicamente algunas de estas capacidades una aplicación puede realizar una consulta a un stream sobre sus capacidades utilizando propiedades CanRead. CanWrite y Canseek.

Los metodos read y write leen y escriben datos en forma de bytes,para los streams que soportan busqueda, los metodos seek y setlengh y las propiedades Position y Lengh pueden utilizarse para consultar y modificar la posición y longitud actuales de un stream.

LAS CLASES DE STREAM PROPORCIONADAS POR EL .NET FRAMEWORK

El .NET Framework contiene varias clases de stream que derivan de la clase system.IO.Stream. el espacio de nombre System.net.sockets cotiene la clase Network.stream.networkstream proporciona el stream subyacente de datos para el acceso a redes.

El espacio de nombre system.IO contiene las clases Bufferedstream Memorystream y Filestream.derivadas de la clase System.IO.stream

Clase bufferedstream

La clase bufferedstream se utiliza para invocar el proceso de lectura de buffer
Desde otro stream,y escritura de buffer a otro stream. Un buffer es un bloque de bytes en memoria que se utiliza para almacenar datos en cache,reduciendo asi el numero de llamadas al sistema operativo. Los buffers pueden utilizarse para mejorar el rendimiento de la lectura y escritura,ninguna otra clase puede heredar de la clase BufferedStream.

Clase MemoryStream

La clase de memorystream proporciona un metodod e creación de streams que utiliza la memoria(en lugar de un disquete o una conecxion de red) como repositorio de seguridad. La clase MemoryStream crea un stream desde una matriz de bytes.

Clase File stream

La clase filestream se utiliza tanto par leer de archivos como para escribir a ellos.de forma predeterminada, la clase Filestream abre archivos sincronamente, pero tambien proporciona una constructor para abrir archivos asincronamente

Instancia de stream null

En ocasiones, una aplicación simplemente necesita que un stream elimine su salida y no devuelda ninguna entrada, podemos obtener este tipo de stream que no tiene repositorio de seguridad y que no consumira ningun recurso operativo,del campo estatico puplico de la clase stream denominado null.

Por ejemplo,podemos codificar una aplicación para que siempre esbriba su salida filestream especificado por el usuario.cuando el usuario no desea un archivo de salida, la aplicación dirige su salida al stream Null,cuando se invocan los metodos de write de stream en este stream Null, la invocación simplemente regresa y no se escribe ningun dato. Cuado se invocan los metodos de read, el stream Null devuelve 0 sin lee datos.

Espacios de nombres usados en el código de este artículo:
System.IO
System.Text



Programación orientada a objetos en Visual Basic .NET

Todo .NET Framework está basado en clases (u objetos). A diferencia de las versiones anteriores de Visual Basic, la versión .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework, además casi sin ningún tipo de limitacion.

La POO es una evolución de la programación por procedimientos llamada también estructurada. Se basaba en funciones y procedimientos y el código que controlaba el flujo de las llamadas a estos. En Visual Basic, sobre todo en versiones anteriores se sigue programando mucho así. A veces por desconocimiento y otras por "miedo" no se da el salto a la POO, aunque un programador con experiencia en VB puede hacer magníficas aplicaciones sin utilizar la POO (y sin aprovecharse de sus ventajas) , y sobre todo, en un tiempo relativamente reducido.

Todos los lenguajes basados en objetos, deben cumplir estos tres requisitos:

  • Herencia
  • Encapsulación
  • Polimorfismo


HERENCIA

"La herencia es la capacidad de una clase de obtener la interfaz y comportamiento de una clase existente."

Es la característica más importante de la POO. Según la propia documentación de Visual Studio .NET:

"La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar el diseño de la aplicación proporcionando una estructura de relaciones entre las distintas clases. También admite la reutilización de código porque sólo se debe codificar el comportamiento de clases nuevas o distintas." .

Una relación de herencia es una relación en la que un tipo (el tipo derivado) se deriva de otro (el tipo base), de tal forma que el espacio de declaración del tipo derivado contiene implícitamente todos los miembros de tipo no constructor del tipo base.


Encapsulacion

"La encapsulación es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Las clases proporcionan una de las formas más comunes de encapsular elementos."


La encapsulación es esa capacidad de la clase de ocultarnos sus interioridades para que sólo veamos lo que tenemos que ver, sin tener que preocuparnos de cómo está codificada para que haga lo que hace... simplemente nos debe importar que lo hace.

Resumiendo: Establece la separación entre la interfaz del objeto y su implementación.

Polimorfismo

"El polimorfismo se refiere a la posibilidad de definir múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución."

Dicho de otra manera, puede tener múltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase implementa las mismas propiedades o los mismos métodos de maneras diferentes. El polimorfismo es importante en la programación orientada a objetos puesto que permite usar elementos que tienen el mismo nombre, independientemente del tipo de objeto que se esté utilizando en ese momento.

Resumiendo: Determina que el mismo nombre de método realizará diferentes acciones según el objeto sobre el que se ha aplicado.



haga click en este enlace y le mostrara la pagina donde se carga en pantalla la sintaxis y un pequeño diseño de un form con este temario.



¿Qué es una clase?

Una clase es simplemente una representación de un tipo de objeto. Pensad en ella como un plano que describe el objeto. Así como un plano puede utilizarse para construir varios edificios, una clase podemos usarla para crear varias copias de un objeto.

Por ejemplo, el control TextBox lo define una clase TextBox, que define su aspecto y sus funciones. Cada vez que arrastramos un control TextBox a un formulario, realmente está creando una nueva instancia de la clase TextBox.

¿Qué hay dentro de una clase?


Todos los objetos tienen propiedades que describen sus atributos, métodos que definen sus acciones y eventos que definen sus respuestas. Igualmente, la clase que define un objeto tiene sus propias propiedades, métodos y eventos ( a veces llamados miembros) que se pasan a todas las instancias de esa clase.

Puede ocultar los miembros de una clase si los declara como Private o exponerlos si los declara como Public. También puede permitir el acceso a una propiedad y a la vez impedir que el programa cambie su valor declarándolo como ReadOnly.

El código siguiente muestra cómo podría ser una clase BankAccount, por ejemplo:

'Declaramos la clase BlankAccount
Class BankAccount
'La hacemos privada
Private AccountNumber As String
Private AccountBalance As Decimal
'Y la ponemos publica para que calcule el balance
Public Sub UpdateBalance()
End Sub
ReadOnly Property Balance() As Decimal
Get
Return AccountBalance

End Get
End Property
End Class



 Public Class Form1

Dim nombres(4, 0) As String
Dim notas(4, 2) As
Double
Dim definitiva(5, 0) As Double
Dim da As Integer
Dim
suma As Double
Dim promedio(0, 2) As Double
Dim promediototal As
Integer
Dim promedio2 As Integer

Private Sub
Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

nombres(0, 0) = "pedro
duarte"
nombres(1, 0) = "leonardo corzo"
nombres(2, 0) = "juliana
barrera"
nombres(3, 0) = "enrrique talero"
nombres(4, 0) = "sonia
caballero"
notas(0, 0) = 4.5
notas(0, 1) = 5.0
notas(0, 2) =
4.0
notas(1, 0) = 4.3
notas(1, 1) = 4.2
notas(1, 2) = 3.2
notas(2,
0) = 1.5
notas(2, 1) = 3.6
notas(2, 2) = 4.3
notas(3, 0) = 5.0
notas(3,
1) = 2.5
notas(3, 2) = 3.1
notas(4, 0) = 2.8
notas(4, 1) = 4.3
notas(4,
2) = 4.7

For i = 0 To 4
For j = 0 To 2
TextBox1.Text =
("")
TextBox1.Text = "nombres" + vbCrLf

suma = notas(i, j) +
suma

TextBox2.Text += CStr(notas(i, j)) + ""

Next

TextBox2.Text
+= vbCrLf
definitiva(i, 0) = suma / 3
suma = 0

Next

For
i = 0 To 4
TextBox1.Text += nombres(i, 0) + vbCrLf
TextBox3.Text
+= CStr(definitiva(i, 0)) + vbCrLf
Next
For n = 0 To 2
For m = 0
To 4
promedio(0, n) = promedio(0, n) + notas(m, n)
Next
TextBox4.Text
+= CStr(promedio(0, n) / 5) + " " + vbCrLf
promedio(0, n) = 0
Next

End
Sub

Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click

TextBox1.Text =
""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""

End
Sub
End Class
Public Class Form3





Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.ComboBox1.Items.Add(" empleado tiempo completo") Me.ComboBox1.Items.Add("empleado medio tiempo") End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim x, comision Dim total_sueldo x = Val(TextBox1.Text) Select Case ComboBox1.SelectedIndex Case 0 If x = 5000000 Then comision = x * 0.03 total_sueldo = comision + 1000000 ElseIf x > 5000000 And x <= 10000000 Then comision = x * 0.05 total_sueldo = comision + 1000000 ElseIf x <> comision = x * 0.02 total_sueldo = comision + 1000000 End If Case 1 If x = 5000000 Then comision = x * 0.02 total_sueldo = comision + 1000000 ElseIf x > 5000000 And x <= 10000000 Then comision = x * 0.045 total_sueldo = comision + 1000000 ElseIf x <> comision = x * 0.017 total_sueldo = comision + 1000000 End If End Select TextBox2.Text = comision TextBox3.Text = total_sueldo End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x x = 0 For x = 0 To 20 Step +2 MsgBox(x) Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim x x = TextBox4.Text If x = "l" Then Label4.Text = "leon" ElseIf x = "b" Then Label4.Text = "burro" ElseIf x = "p" Then Label4.Text="perro" End If End Sub End Class



Qué son los componentes en Visual Basic .NET


Visual Basic .NET permite la creación de componentes que pueden ser utilizados en aplicaciones de Windows, aplicaciones de consola, de Web. Los componentes no son más que clases que trabajan de una forma muy eficiente, no son elementos visuales y es muy fácil incorporarles características a elementos existentes dentro del mismo ambiente de desarrollo.

Los nuevos elementos de desarrollo para las aplicaciones RAD soportan el diseño de controles no visuales, tan fácil como crear un formulario. Únicamente se requiere heredar de un componente existente las características necesarias que requiere el proyecto o bien agregar otros componentes para diseñar o construir las funcionalidades que se requieren.

Por ejemplo, la mayoría de las aplicaciones requieren sistemas de validación donde puedan enviarle al usuario un aviso cuando los datos son requeridos y otro centenar de características que pueden ser incorporadas dentro de los mismos componentes y esto permite no repetir el código de un formulario en otro. El fragmente de código que mostraré a continuación esta basado en agregarles nuevas características a con control TextBox, entre ellas una forma sencilla de validación y programar la tecla Enter cada vez que el usuario quiera ir al siguiente control dentro del formulario.


Creando componentes en Microsoft Visual Basic .NET

En el diseñador, aparece un el menú de proyectos la opción agregar componentes. Se ejecuta esta opción y a continuación se visualiza una pantalla el cual solicita el nombre del componente a insertar en el proyecto. A continuación muestro el menú para ejecutar la opción :