222
Manual de Visual Basic.net 2003/2005 Manual de Visual Vasic.Net Manual de Visual Vasic.Net LAS SOLUCIONES APORTADAS POR VB.NET VB.NET aporta un buen número de características que muchos programadores de VB hemos Demandado desde hace largo tiempo. En cierto modo, algunas de estas incorporaciones hemos de Agradecérselas a la plataforma .NET, ya que al integrar VB dentro del conjunto de lenguajes de .NET Framework, dichos cambios han sido necesarios, no ya porque los necesitara VB, sino porque eran Requisitos derivados de la propia arquitectura de .NET. Entre las novedades aportadas por VB.NET tenemos plenas capacidades de orientación a objetos (Full-OOP), incluyendo por fin, herencia; Windows Forms o la nueva generación de formularios para Aplicaciones Windows; soporte nativo de XML; gestión de errores estructurada; un modelo de objetos Para acceso a datos más potente con ADO.NET; posibilidad de crear aplicaciones de consola (ventana MS-DOS); programación para Internet mediante Web Forms; un entorno de desarrollo común a todas Las herramientas de .NET ¿Qué es .NET? .NET es toda una nueva arquitectura tecnológica, desarrollada por Microsoft para la creación y Distribución del software como un servicio. Esto quiere decir, que mediante las herramientas de Desarrollos proporcionados por esta nueva tecnología, los programadores podrán crear aplicaciones basadas en servicios para la Web. Las características principales que conforman .NET son las siguientes: 1) La plataforma .NET Framework, que proporciona la infraestructura para crear aplicaciones y El entorno de ejecución para las mismas. 2) Los productos de Microsoft enfocados hacia .NET, entre los que se encuentran Windows .NET Server, como sistema operativo que incluirá de forma nativa la plataforma .NET Framework; Visual Studio .NET, como herramienta integrada para el desarrollo de Aplicaciones; Office .NET; central para .NET, etc. [email protected] [email protected]

Manual de Visual Studio 2005

Embed Size (px)

DESCRIPTION

para estudiantes de Programacion

Citation preview

Page 1: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Manual de Visual Vasic.NetManual de Visual Vasic.Net

LAS SOLUCIONES APORTADAS POR VB.NET

VB.NET aporta un buen número de características que muchos programadores de VB hemosDemandado desde hace largo tiempo. En cierto modo, algunas de estas incorporaciones hemos de Agradecérselas a la plataforma .NET, ya que al integrar VB dentro del conjunto de lenguajes de .NET Framework, dichos cambios han sido necesarios, no ya porque los necesitara VB, sino porque eran Requisitos derivados de la propia arquitectura de .NET.

Entre las novedades aportadas por VB.NET tenemos plenas capacidades de orientación a objetos (Full-OOP), incluyendo por fin, herencia; Windows Forms o la nueva generación de formularios para Aplicaciones Windows; soporte nativo de XML; gestión de errores estructurada; un modelo de objetos Para acceso a datos más potente con ADO.NET; posibilidad de crear aplicaciones de consola (ventana MS-DOS); programación para Internet mediante Web Forms; un entorno de desarrollo común a todas Las herramientas de .NET

¿Qué es .NET?

.NET es toda una nueva arquitectura tecnológica, desarrollada por Microsoft para la creación yDistribución del software como un servicio. Esto quiere decir, que mediante las herramientas deDesarrollos proporcionados por esta nueva tecnología, los programadores podrán crear aplicaciones basadas en servicios para la Web. Las características principales que conforman .NET son las siguientes:

1) La plataforma .NET Framework, que proporciona la infraestructura para crear aplicaciones yEl entorno de ejecución para las mismas.2) Los productos de Microsoft enfocados hacia .NET, entre los que se encuentran Windows.NET Server, como sistema operativo que incluirá de forma nativa la plataforma .NETFramework; Visual Studio .NET, como herramienta integrada para el desarrollo deAplicaciones; Office .NET; central para .NET, etc.

3) Servicios para .NET desarrollados por terceros fabricantes, que podrán ser utilizados por otras aplicaciones que se ejecuten en Internet.

[email protected][email protected]

Page 2: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

LOS TIPOS DE DATOS SON OBJETOS

Dentro de .NET Framework, todos los tipos de datos están implementados como clases, de ahí el hecho de que cuando declaremos una variable en el código, esa variable sea además, un objeto de la clase relacionada con el tipo de dato que contiene, disponiendo de propiedades y métodos al igual que cualquier otro objeto. Ver Código fuente.

En el Código fuente , escrito en VB.NET, declaramos una variable de tipo String (cadena de Caracteres), y a continuación le asignamos un valor; hasta aquí, todo igual que en versiones anteriores.Pero ahora viene lo novedoso, ya que manipulamos la variable igual que un objeto, obteniendo la longitud de su valor mediante la propiedad Length y convertimos su valor a mayúsculas ejecutando el método ToUpper(); en ambos casos mostramos el resultado usando un objeto MessageBox.

Realizamos una Aplicación Windows y le agregamos un botón – doble clic y escribimos lo siguiente:

[email protected][email protected]

Cantidad de caracteres (coche)

Page 3: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Debemos aclarar, no obstante, que el tipo String no se englobaría dentro de los tipos primitivos del lenguaje, ya que realmente, una variable de tipo String, lo que contiene es un array de tipos Char; sin embargo, nosotros podemos seguir manipulando cadenas de caracteres del mismo modo en el que lo hacíamos en versiones anteriores de VB, ya que el entorno se encarga de gestionar el array de valores Char que una cadena contiene.

[email protected][email protected]

Page 4: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

La clase String

Esta clase posee muchos métodos entre ellos tenemos

ToUpper Convierte todos los caracteres de una cadena en Mayúsculas.

ToLower Convierte todos los caracteres de una cadena en minúsculas.

Chars Obtiene el carácter situado en una posición especificada en la instancia en cuestión.

Length Obtiene el número de caracteres de la instancia en cuestión.

Clone Crea otra referencia a la misma cadena

Concat Concatena dos cadenas

Copy Crea un nuevo objeto de tipo string

EndsWith Determina si un string termina o no en una cadena dada.

IndexOf Retorna la posición de la primera ocurrencia de un carácter o de un string dado como parámetro.

Insert Inserta una instancia especificada de String en una posición de índice especificada de la instancia.

Join Concatena un objeto String separador especificado entre cada uno de los elementos de una matriz String especificada, generando una sola cadena concatenada.

LastIndexOfRetorna la posición de la última ocurrencia de un carácter o de un String dado como parámetro.

[email protected][email protected]

Page 5: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

PadLeft Inserta caracteres a la izquierda de una cadena la cantidad especificada.

PadRight Inserta caracteres a la derecha de una cadena la cantidad especificadaSi la cantidad estipulada es menor o igual a la cantidad de caracteres que tiene la cadena original no hará nada

Remove Elimina un número de caracteres especificado de la instancia a partir de una posición especificada.

Replace Reemplaza todas las apariciones de un carácter Unicode o un objeto String en la instancia por otro carácter Unicode u otro objeto String.

Split Toma en un vector de tipo string las cadenas que estén separadas por un carácter especifico.

StartsWith Determina si el principio de la instancia coincide con el objeto String especificado.

Substring Toma n caracteres de una cadena estipulando el inicio y la cantidad a tomar

ToCharArray Copia los caracteres de la instancia en una matriz de caracteres Unicode.

ToLower Devuelve una copia de String en minúsculas.

ToString Convierte el valor de la instancia en un objeto String.

ToUpper Devuelve una copia de String en mayúsculas.

Trim Eliminar los espacios al comienzo y al final de una cadena

TrimEnd Elimina los espacios al final de una cadena

[email protected][email protected]

Page 6: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

TrimStart Elimina los espacios al comienzo de una cadena

CONOCIENDO LOS CONTROLES MÁS BÁSICOS CON SUS PROPIEDADES

Control Button (antes CommandButton)

El control CommandButton en Visual Basic .NET recibe el nombre de Button, la propiedad Caption ahora recibe el nombre de Text, ocurre lo mismo para el caso del control Label.

Control Label

El control Label ahora su propiedad Caption recibe el nombre de Text y por ejemplo la antes propiedad Alignment ahora recibe el nombre de TextAlign la cual tiene más opciones de alineación.

Control TextBox

El control TextBox tiene una capacidad de almacenamiento de 32 Kbytes de texto.

Control DateTimePicker

El control DateTimePicker muestra por defecto la fecha actual que es posible modificar a través de su propiedad value.

Este control puede mostrar fechas u horas, si desea mostrar horas utilice:

nombreControl.Format = DateTimePickerFormat.Time

Control LinkLabel

A través de este control es posible abrir el navegador por default y acceder a un URL específico:

LinkLabel1.LinkVisited = True System.Diagnostics.Process.Start (LinkLabel1.Text)

Donde LinkLabel1.Text es el valor que tiene asignado la propiedad Text por ejemplo file:///C:/pagina.html si quiere probar sin tener acceso a internet o si quiere probar con acceso a internet seria http://www.elSitioWeb.com.

Si requiere especificar el navegador con el cual desea abrir el URL basta con señalarlo:

[email protected][email protected]

Page 7: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

System.Diagnostics.Process.Start ("firefox.exe", LinkLabel2.Text)'La página se mostrara utilizando el navegador firefoxEs necesario señalar algo importante del código y adentrarnos a la programación .NET, ya que el método Start de la clase Process inicia en memoria un proceso de programa ejecutable para el navegador.

La clase Process hace mucho más que eso pero la parte a destacar es que forma parte de la biblioteca de objetos System.Diagnostics la cual los programadores Visual Basic .NET llaman espacio de nombres System.Diagnostics.

En cuanto al método Process.Start destaca que además de abrir una página web puede ser utilizado para ejecutar otras aplicaciones:

System.Diagnostics.Process.Start (LinkLabel3.Text)'Donde el valor de LinkLabel3.Text es "winword"

El método Start utiliza 2 argumentos, el primero especifica la aplicación a emplear y el segundo especifica el archivo que abrirá la aplicación, es decir, el siguiente ejemplo abre el archivo indicado con Microsoft Excel:

System.Diagnostics.Process.Start ("excel", "c:\pagos.xls")

Control MainMenu

El Control MainMenu agrega menús a un programa, el manú se configura mediante sus propiedades.

Para agregar un menú simplemente seleccione el control MainMenu el cual de manera automática se ajusta al tamaño del formulario, este menú es de fácil manipulación pues basta con escribir el nombre para las opciones y a través del menú popup es posible modificarlo.

Una vez agregado el control MainMenu también se agrega un panel debajo del formulario la cual recibe el nombre de Bandeja de Componentes a través del cual será posible definir y modificar sus propiedades.

Ahora bien lo que se muestra en la parte superior del formulario es un representación visual del menú misma que recibe el nombre de diseñador de menú, pero el objeto menú principal se muestra en la parte inferior dentro de la bandeja de componentes.

Para definir teclas de acceso para las opciones del menú, continua con la forma de hacerlo en Visual Basic 6 que es anteponiendo al carácter al cual deseamos hacer referencia el símbolo &

[email protected][email protected]

Page 8: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Si después de escribir las opciones de su menú desea cambiar el orden basta con seleccionar y mover la opción a la posición deseada

Funciones Intrínsecas

Val, regresa el número contenido en un argumento, se detiene en el primer caracter no numérico.

CDbl, regresa un valor double si el argumento puede ser convertido a double

IsNumeric, regresa True si el argumento puede ser convertido a double Rnd, regresa un valor random entre 0 y 1 Abs, regresa el valor absoluto de un número (es necesario importar

System.Math) Int, regresa la parte entera de un número FormatCurrency, regresa un string formateado a moneda y redondeado

a dos decimales Formar(expr,str),convierte una expresión a un formato string específico.

Funciones Financieras

Visual Basic .NET provee funciones financieras como Pmt(Rate,Nper,PV) para determinar pagos mensuales y FV(Rate,Nper,Pmt) para determinar el valor futuro de una anualidad basada en pagos fijos periodicos e intereses de tasa fija.

Funciones de Tiempo y Hora

En Visual Basic .NET existen funciones a través de las cuales es posible manipular el tiempo y la hora:

TimeString, regresa la hora actual del sistema. DateString, regresa la fecha actual del sistema. Now, regresa un valor codificado que representa la hora y fecha actual

del sistema. Hour(hora), regresa el número de hora actual del sistema. Minute(hora), regresa el número de minuto actual del sistema. Second(hora), regresa el múmero del segundo actual del sistema. Day(fecha), regresa el número del día actual del sistema. Month(fecha), regresa el número de mes actual del sistema. Year(fecha), regresa el año actual del sistema. Weekday(fecha), regresa el número que representa el día de la

semana. (1 = Domingo, 2 = Lunes, ...).

[email protected][email protected]

Page 9: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button1.Click txtTimeString.Text = TimeString End Sub

Private Sub DateString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button2.Click txtDateString.Text = DateString End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button3.Click txtNow.Text = Now End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button4.Click txtHour.Text = Hour(Now) End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button5.Click txtMinute.Text = Minute(Now) End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button6.Click txtSecond.Text = Second(Now) End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button7.Click txtDay.Text = Microsoft.VisualBasic.DateAndTime.Day(Now) End Sub

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button8.Click txtMonth.Text = Month(Now) End Sub

Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button9.Click txtYear.Text = Year(Now) End Sub

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_

Handles Button10.Click txtWeekday.Text = Weekday(Now) End Sub

[email protected][email protected]

Page 10: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Cuadros de Dialogo

Visual Basic .NET cuanta con siete tipos de cuadro de dialogo que facilitan la construcción de interfaz de usuario:

1. OpenFileDialog, obtiene unidad, nombre de directorio y nombre de un archivo existente.

2. SaveFileDialog, obtiene unidad, nombre de directorio y nombre para un archivo nuevo.

3. FontDialog, para que el usuario seleccione una configuración para la fuente.

4. ColorDialog, para que el usuario seleccione un color de una paleta. 5. PrintDialog, para que el usuario defina opciones de impresión 6. PrintPreviewDialog, muestra al usuario una vista previa de impresión. 7. PageSetupDialog, para que el usuario controle las opciones de

configuración de página.

Al momento de diseñar la interfaz de usuario los controles de cuadro de dialogo no aparecen en la pantalla pero si se muestran visibles al pie de la misma, pudiendo acceder a sus propiedades para configurar el control.

Si requiere hacer visible el cuadro de dialogo en modo ejecución tendrá que emplear el método ShowDialog().

El método ShowDialog() regresa un valor denominado DialogResult, indicando el botón del cuadro de diálogo en el que el usuario dio clic.

OpenFileDialog

El control OpenFileDialog representa un dialogo preconfigurado para seleccionar un archivo que será abierto. La propiedad InitialDirectory especifica el directorio inicial desplegado por la caja de dialogo de archivo. La propiedad Filter determina el formato de archivos que podrán ser presentados en la caja de dialogo, para desplegar la caja de dialogo de archivo se utiliza su método ShowDialog, la propiedad FileName mantiene es un string que contiene el nombre del archivo seleccionado.

Suponga un ejercicio donde tiene un control OpenFileDialog y otro PictureBox, a través del cuadro de dialogo es posible seleccionar una imagen, misma que será cargada y presentada por el control de imagen (*.bmp, *.emf, *.wmf, *.ico, *.cur, *.jpg, *.jpeg, *.png, *.gif), es posible utilizar el método Filter para especificar solamente los archivos que tengan el formato especificado (entre formato y formato se utiliza como separador el símbolo | pipe):

[email protected][email protected]

Page 11: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

ofd.Filter = "formato 1|*.jpg|formato 2|*.bmp"ofd.ShowDialog()pb.Image = System.Drawing.Image.FromFile(ofd.FileName)Dim drdr = ofd.ShowDialog()MsgBox(dr)

La siguiente línea descarga el control de imagen:

pb.Image = Nothing

COLORDIALOG

El control ColorDialog representa un dialogo preconfigurado que despliega la caja de dialogo de color estándar, permitiendo al usuario seleccionar el color o definir un color personalizado, para desplegar la caja de dialogo de color se utiliza su método ShowDialog, la propiedad color mantiene el color seleccionado por el usuario.

Es posible agregar el control ColorDialog al formulario aunque esté no este visiblemente contenido en el formulario pero si visible en la bandeja de componentes o es posible agregar el control ColorDialog a través de código declarando un objeto de este tipo.

REM Agregando un control ColorDialog al formulario Private Sub BtnBgColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles BtnBgColor.Click CD.ShowDialog() LblText.BackColor = CD.Color End Sub

REM Declarando un objeto tipo ColorDialog via código Private Sub BtnForeColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles BtnForeColor.Click Dim FC As New ColorDialog FC.ShowDialog() LblText.ForeColor = FC.Color End Sub

[email protected][email protected]

Page 12: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

FontDialog

El control FontDialog representa un dialogo preconfigurado que despliega la caja de dialogo de fuente estándar, por default la caja de dialogo muestra cajas de listas para la fuente, estilo-fuente, y tamaño, cajas de chequeo para efectos como subrayado o tachado, también muestra un ejemplo de como la fuente podría aparecer, para desplegar la caja de dialogo de fuente se utiliza su método ShowDialog, la propiedad font mantiene el color seleccionado por el usuario.

Es posible agregar el control FontDialog al formulario aunque este no esté visiblemente contenido en el formulario pero si visible en la bandeja de componentes o es posible agregar el control FontDialog a través de código declarando un objeto de este tipo.

Private Sub BtnFont_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles BtnFont.Click Dim FD As New FontDialog FD.ShowDialog() LblText.Font = FD.Font End Sub

PrintDialog

El control PrintDialog es una caja de dialogo preconfigurada, utilizada para seleccionar una impresora, escoger las páginas a imprimir y determinar otras características de impresión en aplicaciones Windows. Es posible habilitar al usuario para imprimir varias partes de sus documentos: imprimir todo, imprimir un rango de páginas o imprimir una selección. La propiedad Document se establece con un objeto PrintDocument, para desplegar la caja de dialogo de impresión utilice el método ShowDialog, la caja de dialogo de impresión almacena la configuración del usuario en el objeto PrintDocument y para imprimir utilice el método Print.

PrintPreviewDialog

El control PrintPreviewDialog es una caja de dialogo preconfigurada, para presentar como podría ser el documento cuando se imprima. La propiedad Document se establece con un objeto PrintDocument, el cual tiene propiedades que describen que será impreso y la habilidad para imprimir dentro de una aplicación Windows, para desplegar la caja de dialogo de impresión-previa utilice el método ShowDialog,

[email protected][email protected]

Page 13: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

PageSetupDialog

El control PageSetupDialog es una caja de dialogo preconfigurada que permite al usuario manipular la configuración de páginas, incluyendo margenes y orientación del papel. La propiedad Document se establece con un objeto PrintDocument, para desplegar la caja de dialogo de PageSettings utilice el método ShowDialog, la selección del usuario se almacena en la propiedad PageSettings y debería entonces ser copiado al objeto PrintDocument.

Control ListBox

El control ListBox hace visible una lista de items, donde el usuario puede seleccionar items en la lista utilizando los clics del mouse.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) -

Handles MyBase.Load LstBox.Items.Add("Red") LstBox.Items.Add("Green") LstBox.Items.Add("Blue") End Sub

Private Sub LstBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles LstBox.SelectedIndexChanged LstBoxOut.Items.Add(LstBox.SelectedItem) End Sub

Private Sub LstBoxOut_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles LstBoxOut.SelectedIndexChanged LstBoxOut.Items.Remove(LstBoxOut.SelectedItem) End Sub

Trim, LTrim, RTrim

Visual Basic .NET provee mecanismos para la eliminación de espacios en blanco contenidos en un string a través de las siguientes funciones:

1. LTrim, regresa un string que contiene una copia de un string especifico al cual se eliminaron los espacios en blanco contenidos al inicio del string.

2. RTrim, regresa un string que contiene una copia de un string especifico al cual se eliminaron los espacios en blanco contenidos al final del string.

3. Trim, regresa un string que contiene una copia de un string especifico al cual se eliminaron los espacios en blanco contenidos al inicio y al final del string.

[email protected][email protected]

Page 14: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Control CheckBox

Un control CheckBox indica cuando un valor particular esta encendido o apagado, verdadero o falso, si o no, puede ser utilizado también para seleccionar múltiples items de una lista de opciones.

Control RadioButton

Un control RadioButton permite al usuario seleccionar sólo un item de una lista de opciones.

Evento KeyPress

El evento KeyPress es utilizado para capturar la tecla digitada por el usuario. Este evento distingue entre letras mayúsculas y minúsculas. El segundo argumento del este evento expone dos propiedades: Handled y KeyChar, la propiedad KeyChar es el caracter correspondiente a la tecla digitada. La propiedad Handled es un valor booleano, si se establece este valor como True entonces indicamos al formulario que no procese el evento.

El siguiente ejemplo evita que se digite un número:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal _e As System.Windows.Forms.KeyPressEventArgs) Handles

TextBox1.KeyPress If IsNumeric(e.KeyChar) Then e.Handled = True End Sub

El siguiente ejemplo válida que la entrada únicamente acepte números (permite borrar la entrada):

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal _e As System.Windows.Forms.KeyPressEventArgs) Handles

TextBox1.KeyPress REM If IsNumeric(e.KeyChar) Then e.Handled = True If (Asc(e.KeyChar)) >= 48 And (Asc(e.KeyChar)) <= 57 Or (Asc(e.KeyChar)) = System.Windows.Forms.Keys.Back Then e.Handled = False Else e.Handled = True End If End Sub

[email protected][email protected]

Page 15: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

El siguiente ejemplo válida que la entrada únicamente acepte letras (permite borrar la entrada):

Private Sub txtLetras_KeyPress(ByVal sender As Object, ByVal _e As System.Windows.Forms.KeyPressEventArgs) Handles

txtLetras.KeyPress If (Asc(e.KeyChar)) >= 65 And (Asc(e.KeyChar)) <= 90 Or _

(Asc(e.KeyChar)) >= 97 And (Asc(e.KeyChar)) <= 122 Or _(Asc(e.KeyChar)) = System.Windows.Forms.Keys.Back Then

e.Handled = False Else e.Handled = True End If End Sub

El control Windows Media Player

Reproduce video y archivos de sonido en distintos formatos, incluyendo MPEG, AVI, WAV y MIDI.

Este control no es parte de la caja de herramientas estándar, para agregarlo seleccione Add/Remove ToolBox Items/COM/Windows Media Player

Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles BtnOpen.Click Dim OFD As New OpenFileDialog OFD.ShowDialog() wmp.openPlayer(OFD.FileName) End Sub

¿Qué es un error en tiempo de ejecución?,

No es más que un error inesperado del cual un programa en Visual Basic .NET no se puede recuperar, por no poderse completar una instrucción entonces Visual Basic .NET no tiene instrucciones precisas que ejecutar en estos casos cuando se genera el error.

Para lidiar con los errores en tiempo de ejecución Visual Basic tiene este nuevo mecanismo Try - Catch para controlar los errores, ya que este mecanismo atrapa el error definiendo las acciones a seguir cuando se identifica el error.

Algo importante a anazalir y diseñar es cuando y como integrar un mecanismo Try - Catch. Así que deberá emplearse en aquellas situaciones susceptibles a error.

[email protected][email protected]

Page 16: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

La manera en que debe utilizar este mecanismo es la siguiente:

Trysentencia(s) que pueden generar un error en tiempo de

ejecuciónCatch

(el error se genero)sentencia(s) que definen las acciones a seguir ya que se

genero el errorFinally

sentencia(s) que reestablecen las condiciones antes de generarse el error.

End Try

La palabra reservada Finally es opcional.

El código contenido dentro de un bloque Try recibe el nombre de código protegido, porque evita la interrupción del programa o aplicación y ejecuta las instrucciones contenidas en Catch.

Para probar más de una condición de error en tiempo de ejecución utilice la sentencia Catch When:

Try'Evaluar expresión

Catch When Err.Number = 13'Ocurrio un error de tipo de datos, no coinciden los

tiposCatch When Err.Number = 6

'Ocurrio un error en el control del índice, desbordamiento

Catch'Controlar el error

End Try

Por último, este mecanismo al igual que las sentencias de control tiene una manera de salir del bloque ya sea este Try o Catch a través del empleo de la instrucción Exit try, pero si contiene una sentencia Finally el código contenido en esta si se ejecuta, únicamente aplica para Try y Catch pues el objetivo de Finally es precisamente el ejecutar pase lo que pase su contenido.

[email protected][email protected]

Page 17: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Try'sentencia(s) que pueden generar un error en tiempo de

ejecución'Bajo determinada condición Exit try

Catch'(el error se genero)'sentencia(s) que definen las acciones a seguir ya que se

genero el error'Bajo determinada condición Exit try

Finally'sentencia(s) que reestablecen las condiciones antes de

generarse el error.End Try

Err

Manipulación de Archivos de Texto

En Visual Basic .NET existen nuevas funciones para el manejo de archivos de texto proporcionandas por el objeto Filesystem:

FileOpen(numeroArchivo,directorioNombreArchivo,modoApertura), abre un archivo de texto para entrada y salida.

Donde el primer argumento es un número entre 1 y 255 cuya función es controlar los archivos abiertos que tiene un programa, en el segundo argumento se especifica la ruta y nombre del archivo que deseamos abrir y por último es necesario especificar en que modo se abrira el archivo, es decir, si deseamos agregar datos nuevos utilizamos el método Append, si deseamos leer su contenido utilizamos output, si deseamos escribir input o también es posible abrirlo en modo binario binary o en modo aleatorio random.

ofd.Filter = "txt|*.txt|ini|*.ini|log|*.log|inf|*.inf" ofd.ShowDialog() FileOpen(1, ofd.FileName, OpenMode.Input)

Precaución, tenga cuidado con el modo de apertura de archivos ya que si abre un archivo con Output se elimina el contenido del archivo dejándolo vació y en espera de nuevos datos. Cuando requiera leer su contenido utilice Input.

[email protected][email protected]

Page 18: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

LineInput, lee una línea de entrada desde el archivo de texto.

Dim sOutAux As String If Not EOF(1) Then sOutAux = txtOut.Text txtOut.Text = vbNullString txtOut.Text += sOutAux & nLine & " : " & LineInput(1) & vbNewLine nLine += 1 Else MsgBox("Fin de archivo, no hay más líneas que leer") End If

EOF, comprueba el final del archivo de texto.

If EOF(1) Then MsgBox("Fin de archivo")

FileClose, cierra el archivo de texto.

FileClose(1)

Utilice TextBox.Select(1,0) para eliminar la selección de texto.

Como nota aclaratoria los archivos de texto son diferentes a los archivos de documentos, los cuales tienen códigos de formato, cuando nos referimos a archivos de texto entiendase un archivo que contiene únicamente caracteres reconocibles y quizá su formato sea txt, ini, log o inf.

PrintLine(numeroArchivo, objeto), esta función escribe datos con formato a un archivo secuencial

El siguiente ejemplo ilustra el ejemplo algunas de las funciones de manipulación de archivos de texto:

Dim nLine As Integer = 1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles MyBase.Load btnLine.Enabled = False btnClose.Enabled = False btnSave.Enabled = False End Sub Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnOpen.Click ofd.Filter = "txt|*.txt|ini|*.ini|log|*.log|inf|*.inf" ofd.ShowDialog() FileOpen(1, ofd.FileName, OpenMode.Input)

[email protected][email protected]

Page 19: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

btnOpen.Enabled = False btnLine.Enabled = True btnSave.Enabled = True End Sub Private Sub btnLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnLine.Click If Not EOF(1) Then txtOut.Text += nLine & " : " & LineInput(1) & vbNewLine nLine += 1 Else MsgBox("Fin de archivo, no hay más líneas que leer") btnLine.Enabled = False btnClose.Enabled = True txtOut.Select(1, 0) End If End Sub Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnClose.Click FileClose(1) btnSave.Enabled = False btnClose.Enabled = False End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnSave.Click sfd.Filter = "Archivos de texto txt|*.txt" sfd.ShowDialog() If sfd.FileName <> vbNullString Then FileOpen(2, sfd.FileName, OpenMode.Output) PrintLine(2, txtOut.Text) FileClose(2) MsgBox("Archivo almacenado") End If End Sub

[email protected][email protected]

Page 20: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Manipulación de Cadenas

El método Concat hace posible concatenar cadenas de texto. Utilice la función UCase o método ToUpper, para convertir una cadena a

mayúsculas. Utilice la función LCase o método ToLower, para convertir una cadena a

minúsculas. Utilice la función Len o método Length, para determinar el número de

caracteres que tiene una cadena. Utilice la función Mid o método Substring, obtiene un número fijo de

caracteres a partir de una posición dada de una cadena. (El primer elemento de una cadena tiene el índice 0).

Utilice la función InStr o método IndexOf, si una cadena se encuentra contenida en otra regresa la posición a partir de la cual encontro la cadena.

Utilice la función Trim o método Trim, elimina los caracteres en blanco iniciales y finales de una cadena.

Utilice el método Remove, para eliminar caracteres de la parte central de una cadena.

Utilice el método Insert, para agregar caracteres a la parte central de una cadena.

Utilice la función StrCmp, compara cadenas y detecta diferencias en el uso de mayúsculas y minúsculas, regresa los siguientes valores:

o -1, sorts ahead o 0, las cadenas son iguales o 1, sorts after

Ejemplos:

Dim s As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles MyBase.Load lblTitulo.Text = s.Concat(" ", "www", ".", "informatique", ".", "com", ".", _

"mx", " ", "Tutoriales de Programación ") End Sub

Private Sub btnLower_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnLower.Click txtOut.Text = lblTitulo.Text.ToLower End Sub

Private Sub btnUpper_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnUpper.Click txtOut.Text = lblTitulo.Text.ToUpper End Sub Private Sub btnLen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

[email protected][email protected]

Page 21: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Handles btnLen.Click txtOut.Text = lblTitulo.Text.Length End Sub

Private Sub btnSubStr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnSubStr.Click txtOut.Text = lblTitulo.Text.Substring(14) End Sub

Private Sub btnIndexOf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnIndexOf.Click txtOut.Text = lblTitulo.Text.IndexOf("informatique") End Sub

Private Sub btnTrim_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnTrim.Click txtOut.Text = lblTitulo.Text.Trim End Sub

Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnRemove.Click txtOut.Text = lblTitulo.Text.Remove(lblTitulo.Text.IndexOf("informatique"), 12) End Sub

Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnInsert.Click txtOut.Text = lblTitulo.Text.Insert(0, "http://") End Sub

Private Sub btnStrComp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnStrComp0.Click txtOut.Text = StrComp(lblTitulo.Text, lblTitulo.Text, CompareMethod.Binary) & _

" is equal." End Sub

Private Sub btnStrComp_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) -

Handles btnStrComp1.Click txtOut.Text = StrComp(lblTitulo.Text, UCase(lblTitulo.Text), CompareMethod.Binary) & _

" sorts after." End Sub

[email protected][email protected]

Page 22: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Private Sub btnStrCompL1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnStrCompL1.Click txtOut.Text = StrComp(lblTitulo.Text, "abc" & lblTitulo.Text & "abc", CompareMethod.Binary) & _

" sorts ahead." End Sub

Funciones Chr Asc

Chr, regresa el caracter asociado con el código ASCII especificado. Asc, regresa un valor entero el cual representa el código ASCII del

caracter correspondiente.

A través de estas funciones es posible determinar el código ASCII de una letra o su propio código ASCII, es decir, por ejemplo si deseamos obtener el código ASCII de la letra 'a' entonces empleados la función Asc, si conocemos el código ASCII y deseamos saber el caracter asociado a este entonces empleamos la función Chr

Visual Basic .NET cuando hace una comparación entre cadenas se basa en el código ASCII de cada uno de los caracteres que compone la cadena por lo que una comparación entre las cadenas "A" = "a" da como resultado False, pues en realidad estaria comparando 65 y 97.

Dim bResultado As Boolean = ("A" = "a") MsgBox(bResultado & " : (" & Asc("A") & " = " & Asc("a") & ")")

Automatización

La automatización (automation) es una tecnología basada en el estándar de interoperabilidad denominado Modelo de Objetos Componentes (COM).

El objetivo de automatización es utilizar las funciones de una aplicación en otra aplicación.

Las aplicaciones basadas en Windows que exponen sus objetos se denominan aplicaciones objeto o servidoras y los programas que utilizan estos objetos se denominan aplicaciones controladoras o clientes.

[email protected][email protected]

Page 23: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Por ejemplo si desea utilizar Excel desde Visual Basic .NET :

1. Agregue una referencia excel (Project/Add Reference/Microsoft Excel versión Object Library)

2. Declare una variable de tipo objeto Excel

Dim xlsApp As Excel.Application xlsApp = CType(CreateObject("Excel.Application"), Excel.Application)

Nota: si no agrega la referencia entonces no tendrá disponibles las referencias del objeto Excel. En Visual Basic 6 era posible emplear la técnica enlace en tiempo de ejecución en la cual se declaraba una variable de tipo objeto y en tiempo de ejecución se asignaba un tipo de aplicación específico, esta técnica ya no se recomienda.

Lo recomendable es emplear la técnica de enlace en tiempo de compilación donde se asigna en tiempo de diseño un tipo a las variables que almacenan los objetos Automatización, para ser enlazados a los datos durante la compilación.

A través de la función CType es el mecanismo que durante la compilación devuelve el tipo de aplicación específica a la variable de aplicación.

Ejemplo:

Dim xlsApp As Excel.Application Dim xlsBook As Excel.Workbook Dim xlsSheet As Excel.Worksheet Dim sFile As String

xlsApp = CType(CreateObject("Excel.Application"), Excel.Application) xlsBook = CType(xlsApp.Workbooks.Add, Excel.Workbook) xlsSheet = CType(xlsBook.Worksheets(1), Excel.Worksheet)

xlsSheet.Cells(1, 1) = "www" xlsSheet.Cells(1, 2) = "informatique" xlsSheet.Cells(1, 3) = "com" xlsSheet.Cells(1, 4) = "mx"

xlsSheet.Range("B1").Font.Bold = True xlsSheet.Application.Visible = False sFile = "c:\prueba" & Now.Day & Now.Month & Now.Year & Now.Hour & Now.Minute & Now.Second & ".xls" xlsSheet.SaveAs(sFile) xlsSheet = Nothing xlsBook.Close() xlsBook = Nothing xlsApp.Quit() xlsApp = Nothing MsgBox("Se ha creado el archivo : " & sFile)

[email protected][email protected]

Page 24: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Al crear este tipo de aplicaciones deberá tener un buen dominio de su funcionamiento, ya que puede observar a través del administrador de programas que al iniciar la aplicación se crea un objeto excel.exe, al emplear Excel.Application desde Visual Basic .NET se crea otro objeto EXCEL.EXE y solo se cierran estos objetos hasta que se cierre la aplicación, por lo que será necesario una buena administración de las aplicaciones a fin de no dejarlas abiertas o que originen conflictos con otras aplicaciones que el usuario abra o cierre.

Componente Process

Es posible utilizar el método Process.Start para iniciar cualquier aplicación que se encuentre registrada en el Sistema. Si la extensión del archivo a ejecutar es reconocida por el Sistema no será necesario especificar su ubicación.

Por ejemplo para iniciar la calculadora de Windows:

System.Diagnostics.Process.Start("calc.exe")

Una vez que inica una aplicación Visual Basic .NET no puede detenerla. La solución es utilizar una de las nuevas funciones de Visual Studio referentes al control de procesos en Windows.

De clic a la sección Components agregue el componente Process, de clic a su propiedad StartInfo y asigne el valor calc.exe a su propiedad FileName, es posible pasar argumentos al abrir la aplicación para ello asigne los valores correspondientes a las propiedad Arguments.

De esta manera para abrir una aplicación utilice el método Start() y para cerrarla el método CloseMainWindow(). También es posible cerrar aplicaciones utilizando el método Kill, pero tenga cuidado ya que esta técnica no le permitira almacenar los cambios realizados en su trabajo..

Será posible incluir clases como Threading y Diagnostics para manipular vía código, no serán necesarios si únicamente emplea Start y CloseMainWindow

Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnCalc.Click System.Diagnostics.Process.Start("calc.exe") End Sub Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnOpen.Click Proc.Start() End Sub Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnClose.Click Proc.CloseMainWindow() End Sub

[email protected][email protected]

Page 25: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Formularios

Un formulario en Visual Basic .NET hereda sus propiedades de la Clase System.Windows.Forms.Form.

Para abrir un formulario especifico en Visual Basic .NET digamos que más que novedad es algo un poco más tedioso, pues antes de poder abrir el formulario es necesario crear una variable del tipo del formulario que deseamos abrir y después utilizar el método Show (que abre el formulario en modo no-modal) de esta variable objeto.

Dim frm2 As New Form2frm2.Show()

La forma en que Visual Basic 6 abre formularios recibe el nombre de generación implícita de instancias, pero Visual Basic .NET exige que se declare específicamente una variable de tipo formulario antes de utilizarlo.

Ahora en Visual Basic .NET para abrir un formulario de manera Modal es necesario especificarlo a través del método ShowDialog,

Dim frm2 As New Form2frm2.ShowDialog()

Para definir las coordenadas a partir de las cuales se desea ubicar el formulario en la pantalla en Visual Basic .NET existe una propiedad llamada DesktopBounds, la cual únicamente puede ser leída o definida en tiempo de ejecución y recibe como argumentos las dimensiones de un rectángulo en pares (esquina superior izquierda y esquina inferior derecha). Estas coordenadas se expresan en píxeles y toman como referencia la parte superior izquierda de la pantalla.

Dim oRect As New Rectangle(0, 0, 300, 300)frm2.DesktopBounds = oRect

Otra forma de establecer la posición de un formulario durante el tiempo de diseño, pero con menos opciones es la propiedad StartPosition, cuyo valor de argumento define la posición que tendrá el formulario.

frm2.StartPosition = FormStartPosition.CenterScreen

Es posible manipular el estado minimizado, maximizado y restaurado de las ventanas a través de las propiedades correspondientes:

WindowState = FormWindowState.MinimizedWindowState = FormWindowState.MaximizedWindowState = FormWindowState.Normal

[email protected][email protected]

Page 26: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

También es posible establecer el tamaño máximo o mínimo de las ventanas:

Dim nMax As New Size(200, 200)MaximumSize = nMaxWindowState = FormWindowState.Maximized

Gráficos

En Visual Basic .NET no existen los controles de dibujo pues la novedad será emplear los servicios de gráficos GDI+ a través del espacio de nombres System.Drawing

Instrucciones como Circle, Line y PSet, son sustituidas por los métodos DrawEllipse, DrawLine y la estructura Point de la clase System.Drwaing.Graphics.

El sistemas de coordenas predeterminado de Visual Basic .NET utiliza píxeles en lugar de Twips

En Visual Basic .NET los controles no tienen un método Move, pero es posible desplazarlos rápidamente al actualizar las propiedades Left, Top o Location de los controles o también utilizando el método SetBounds.

Las propiedades DragIcon y DragMode ya no están disponibles en Visual Basic .NET aunque el evento DragDrop continua.

Visual Basic .NET soporta más tipos de formato para imagenes, el espacio de nombres System.Drawing.Imaging incluye funciones que trabajan con los formatos siguientes:

BMP EMF EXIF GIF Icon JPEG MemoryBMP PNG TIFF WMF

[email protected][email protected]

Page 27: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

A través de la utilización de funciones GDI+ del espacio de nombres System.Drawing que es una nueva API (Interfaz de Programación de Aplicaciones) será posible crear gráficos.

Sistema de Coordenadas

El punto de origen del sistema de coordenas es la esquina superior izquierda del formulario. El sistema de coordenadas predeterminado se conforma de renglones (Eje Horizontal X) y columnas (Eje Vertical Y), de elementos de imagen independientes del dispositivo (píxeles) los cuales representan los puntos más pequeños que un formulario puede ubicar.

Las coordenas (x,y) de la esquina superior izquierda de un formulario son siempre (0,0).

Visual Basic .NET trabaja en conjunto con el controlador de vídeo de la máquina para calcular como se deben presentar los píxeles del formulario y como deben aparecer en la pantalla figuras como líneas, rectángulos, curvas y círculos.

Clase System.Drawing.Graphics

El espacio de nombres System.Drawing contiene diversas clases con las que es posible crear dibujos en un programa. Esta clase dispone de métodos y propiedades para dibujar figuras en un formulario.

A continuación se presenta una lista de figuras geométricas básicas y el método que emplea la clase System.Drawing.Graphics para crearlas:

Figura Método DescripciónLínea DrawLine Línea sencilla entre dos puntosRectángulo DrawRectangle Cuadrado o Rectángulo dado por cuatro

puntosArco DrawArc Línea curva entre dos puntosCírculo/Elipse DrawEllipse Figura elíptica contenida en un ractánguloPolígono DrawPolygon Figura compleja con un número de puntos y

lados variableCurva Drawcurve Línea curva que pasa por un número variable

de puntosBézier splines

DrawBezier Curva dibujada utilizando cuatro puntos (puntos 2 y 3 son puntos de control)

[email protected][email protected]

Page 28: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Los métodos mencionados en la tabla crean figuras vacías, pero existen métodos con el prefijo Fill que dibujan figuras que rellenan automáticamente con un color.

Para hacer uso de la clase System.Drawing.Graphics es necesario crear un objeto de tipo Graphics, un objeto Pen o Brush para indicar los atributos de la figura, el objeto Pen se utiliza como argumento de los métodos cuando no se rellena con color. El objeto Brush se utiliza como argumento cuando se requiere un color de relleno.

También será necesario generar una instancia de la variable Graphics mediante el método CreateGraphics para Windows Form.

El espacio de nombres System.Drawing.Graphics se incluye en el proyecto de manera automática por lo que no es necesario importarla.

Dim Grafico As System.Drawing.GraphicsDim Lapiz As New System.Drawing.Pen(System.Drawing.Color.Blue)Grafico = Me.CreateGraphicsGrafico.DrawLine(Lapiz, 20, 30, 100, 80)

Este código si lo incluye en el evento Load del formulario dará la sensación de no hacer nada, esto es por un efecto que se produce con los gráficos, la solución es agregar el código en el método Paint del formulario.

Evento Paint

Al dibujar una figura, esta será visible mientras:

Otro control o figura no se sobreponga Si se minimiza y maximiza la ventana del formulario

[email protected][email protected]

Page 29: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Para evitar que la figura desaparezca es necesario utilizar el evento Paint del formulario, para que cada vez que se refresque el formulario el gráfico también se dibujo de nuevo.

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _

Handles MyBase.PaintDim Grafico As System.Drawing.GraphicsDim Lapiz As New

System.Drawing.Pen(System.Drawing.Color.Blue)Grafico = Me.CreateGraphicsGrafico.DrawLine(Lapiz, 20, 30, 100, 80)

End Sub

ANIMACIÓN: TOP - LEFT - LOCATION - SETBOUNDS

La animación es la simulación de movimiento generado por la visualización rápida de series de imágenes correlativas en la pantalla.

Visual Basic .NET no incluye el método Move (el cual permitía mover objetos en el sistema de coordenadas) pero es posible utilizar:

Left, propiedad que mueve un objeto horizontalmente Top, propiedad que mueve un objeto verticalmente Location, propiedad que mueve un objeto a una posición especifico SetBounds, método que define los límites de un objeto a una posición y

tamaño específicos

Private Sub btnIzq_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnIzq.Click btn.Left -= 10 End Sub

Private Sub btnDer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnDer.Click btn.Left += 10 End Sub

Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnUp.Click btn.Top -= 10 End Sub

[email protected][email protected]

Page 30: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Private Sub btnDw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnDw.Click btn.Top += 10 End Sub

Private Sub btnMove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnMove.Click Dim newPos As New Point(100, 100) If btn.Top = 32 And btn.Left = 104 Then btn.Location = newPos Else btn.Top = 32 btn.Left = 104 End If End Sub

Private Sub btnSize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnSize.Click If btn.Width = 75 And btn.Height = 23 Then btn.SetBounds(btn.Left, btn.Top, btn.Width + 10, btn.Height + 10) Else btn.SetBounds(btn.Left, btn.Top, 75, 23) End If End Sub

Opacidad en Formularios

La novedad gráfica en los formularios para Visual Basic .NET es la propiedad Opacity a través de la cual puede hacer un efecto de transparencia en sus formularios.

Tenga en cuenta que el valor de la opacidad está en el rango del 0 al 1.

Me.Opacity -= 0.1

[email protected][email protected]

Page 31: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Programación Orientada a Objetos

Se considerada un lenguaje orientado a objetos si soporta las siguientes tres características Encapsulación, Herencia y Polimorfismo.

La programación orientada a objetos es un excelente ejemplo de un mejoramiento creciente. Los objetos son piezas modulares con interfaces bien definidas que explican el uso apropiado de los objetos. Los objetos emplean encapsulación para prevenir accesos impropios a la estructura interna de un objeto. Los objetos soportan herencia para perfeccionar el código reutilizado y diseño lógico.

Clases y Objetos

Un Objeto es una combinación de datos y acciones que pueden ser tratados como unidad.

Una Clase es una estructura de un objeto, un diseño que describe las propiedades (datos) y métodos (acciones) de un objeto.

Encapsulación

Encapsulación, referente a un grupo de propiedades y métodos que pueden ser tratados como una unidad u objeto, además de proteger el contenido interno de un objeto a través de una avería o referencia incorrecta por código externo. Con la apropiada encapsulación un objeto es solamente referenciado a través de una interfaz formal evitando efectos laterales, es decir, referencias inesperadas y cambios indeseables que ocurran en adición a el comportamiento intencionado.

Una de las reglas básicas de la encapsulación es que los datos de las clases deberían ser modificados o recuperados sólo a través de procedimientos apropiados, limitando interactuar al objeto con código externo y manteniendo las operaciones internas del objeto invisibles hacia el mundo exterior, de esta manera el contenido interno del objeto es protegido de daños accidentales o intencionados por código externo.

La encapsulación también permite controlar como los datos y procedimientos son utilizados, para ello se pueden utilizar los modificadores Private o Protected para evitar que un procedimiento externo ejecute un método de clase o evitar la lectura y modificación de datos en las propiedades y campos.

Data hiding es una técnica en la cual se declaran detalles internos de una clase como Private para prevenirlos de ser utilizados fuera de la clase.

Herencia

La Herencia describe la habilidad para crear una nueva clase basada en la existencia de una clase existente, donde esta clase existente recibe el nombre de Clase Base y la nueva clase derivada de la clase base es llamada Clase

[email protected][email protected]

Page 32: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Derivada. La clase derivada hereda las propiedades, métodos y eventos de la clase base y puede ser personalizada agregando nuevas propiedades y métodos.

Visual Basic .NET agrega el mecanismo de Herencia, que en versiones anteriores del Lenguaje no la incluia, solo incorporaba ciertas características de la programación orientada a objetos.

La Herencia es un mecanismo por medio del cual una Clase puede adquirir las características de comportamiento e interfaz de otra Clase.

En Visual Basic .NET las clases se definen utilizando la siguiente sintaxis:

Public Class...End Class

Las propiedades de las clases cambian de sintaxis y ya no se utiliza Property Get, Let y Set.

Para que una Clase herede la interfaz y comportamiento de otra Clase existente se utiliza la palabra clave reservada Inherits.

Polimorfismo

El Polimorfismo es la habilidad de los objetos de diferentes clases para responder apropiadamente a nombres u operadores de métodos identicos, el polimorfismo permite utilizar nombres compartidos y el sistema podría aplicar el código apropiado para un objeto particular.

Agregar una Clase

La definición de una clase consiste de campos, propiedades y métodos, un campo es una variable en la clase y usualmente es privada, una propiedad es una programación constructora que tipicamente provee la interfaz para un campo en una clase, una propiedad contiene procedimientos especiales Get y Set que permiten al código externo hacer referencia al campo en un sentido que mantiene la encapsulación de datos, un método es una función o procedimiento dentro de una clase. La definición de la clase puede también contener métodos constructores que son invocados cuando un nuevo objeto es instanciado desde una clase. Es conveniente listar primero los campos, después las propiedades y los métodos constructores y por último cualquier otro método adicional.

La definición de una clase consiste de campos, propiedades y métodos, un campo es una variable en la clase y usualmente es privada, una propiedad es una programación constructora que tipicamente provee la interfaz para un

[email protected][email protected]

Page 33: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

campo en una clase, una propiedad contiene procedimientos especiales Get y Set que permiten al código externo hacer referencia al campo en un sentido que mantiene la encapsulación de datos, un método es una función o procedimiento dentro de una clase. La definición de la clase puede también contener métodos constructores que son invocados cuando un nuevo objeto es instanciado desde una clase. Es conveniente listar primero los campos, después las propiedades y los métodos constructores y por último cualquier otro método adicional.

Private|Public Class nombreClasecampospropiedadesconstructoresmétodos

End Class

En Visual Basic .NET para agregar una Clase seleccione: Project/Add Class y escriba un nombre para la Clase.

Escriba las variables para su clase:

Public Class Persona Private sNombre As String Private nEdad As Integer Private bSexo As BooleanEnd Class

A continuación escriba las funciones para sus operaciones, escriba el nombre de la propiedad y su tipo, presione Enter y de manera automática se agrega el código de la propiedad el cual es necesario completar:

Public Class Persona Private sNombre As String Private nEdad As Integer Private bSexo As Boolean Public Property Nombre() As String Get Return sNombre End Get Set(ByVal Value As String) sNombre = Value End Set End PropertyEnd Class

[email protected][email protected]

Page 34: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Si necesita agregar un método a su clase, entonces escriba su procedimiento:

Public Sub sexoPersona() If bSexo Then MsgBox("Hombre") Else MsgBox("Mujer") End If End Sub

Ejemplo de la Clase Persona:

Public Class Persona Private sNombre As String Private nEdad As Integer Private bSexo As Boolean Public Property Nombre() As String Get Return sNombre End Get Set(ByVal Value As String) sNombre = Value End Set End Property Public Property edad() As Integer Get Return nEdad End Get Set(ByVal Value As Integer) nEdad = Value End Set End Property Public Property sexo() As Boolean Get Return bsexo End Get Set(ByVal Value As Boolean) bsexo = Value End Set End Property Public Sub sexoPersona() If bSexo Then MsgBox("Hombre") Else MsgBox("Mujer") End If End SubEnd Class

[email protected][email protected]

Page 35: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Interfaz de la Clase Persona:

Dim Empleado As New Persona Empleado.Nombre = txtNombre.Text Empleado.edad = CInt(txtEdad.Text) Empleado.sexo = txtSexo.Text Empleado.sexoPersona()

Como puede notar las declaraciones de obtención y asignación de valores para las propiedades coinciden no en nombre ya que puede declarar la primer parte de las propiedades con un nombre y con otro la declaración de la propiedad por completo, es decir, la parte donde se asigna y recupera el valor, la única relación existente es por el valor que se asigna o por el valor que se regresa.

Atención es posible crear más de una Clase dentro de un módulo de Clase siempre y cuando las clases se encuentren delimitadas por las intrucciones de inicio (Public Class) y final (End Class) de la Clase.

Así que, si desea crear una Clase que herede de la Clase Persona puede incluir en el mismo módulo de Clase Persona, la Clase que hereda, por ejemplo Director y escribir dentro del bloque de la clase la declaración que indica que hereda el comportamiento y propiedades de otra Clase a través de la palabra reservada Inherits.

Debajo del código de la Clase Persona escriba:

Public Class Director Inherits Persona Private sArea As String Public Property Area() As String Get Return sArea End Get Set(ByVal Value As String) sArea = Value End Set End PropertyEnd Class

En su interfaz agregue:

Dim DirectorRegional As New Director DirectorRegional.Area = "Finanzas" MsgBox(DirectorRegional.Area)

[email protected][email protected]

Page 36: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Impresión

Si requiere imprimir, Visual Basic .NET utiliza como mecanismo la Clase PrintDocument (agregando el control al formulario o a través de código), en vez de hacerlo con el objeto Printer como se hace en Visual Basic 6.

Para la interfaz de impresión es posible utilizar los controles de cuadros de diálogo como PrintDialog, PrintPreviewDialog y pageSetupDialog

Si requiere imprimir varias páginas deberá crear un manejador de eventos PrintPage que imprima un documento página a página.

La Clase PrintDocument dispone de objetos como PrinterSettings que define la impresión predeterminada para una impresora, el objeto PageSettings que define la impresión predeterminada para una página o el objeto PrintPageEventArgs, que define la información de eventos de la página a imprimir.

El espacio de nombres System.Drawing.Printing contiene la clase PrintDocument, al agregar un control PrintDocument a un formulario, algunos objetos se agregan de manera automática al proyecto, pero será necesario importar al principio del formulario:

Imports System.Drawing.Printing

Cuando es invocado el método PrintDocument, el evento PrintPage es invocado para cada página que se imprima. El método Graphics.MeasureString cuantifica el tamaño del string y determina el número de caracteres adecuado y líneas para el string especificado, fuente, tamaño máximo y formato. El método Graphics.PrintString dibuja el string utilizando font, brush, destinación point y format. La propiedad HasMorePages indica cuando una página adicional debería ser impresa.

Impresión de un gráfico

Importe la Clase System.Drawing.Printing al inicio del formulario:

Imports System.Drawing.PrintingPublic Class Form1..

[email protected][email protected]

Page 37: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Agregue un control PrintDocument (no es visible en su formulario, pero si debajo de este)

Escriba el código del manejador:

Private Sub imprimirImagen(ByVal sender As System.Object, ByVal ePrint As PrintPageEventArgs)

ePrint.Graphics.DrawImage(Image.FromFile("c:\relog.ico"), ePrint.Graphics.VisibleClipBounds)

ePrint.HasMorePages = FalseEnd Sub

Agregue un botón (utilicelo como requiera)

Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnPrint.Click Try AddHandler printDoc.PrintPage, AddressOf Me.imprimirImagen printDoc.Print() Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try End Sub

Impresión de un texto

A diferencia del ejercicio anterior, conoceremos como imprimir un texto, sin agregar un control PrintDocument, pero si agregando en su lugar código y también en vez de un manejador de evento, utilizaremos un procedimiento:

Importar la clase:

Imports System.Drawing.Printing

Escribir en lugar del manejador de evento un procedimiento:

Private Sub ImprimirTexto(ByVal sender As System.Object, ByVal ePrint As PrintPageEventArgs) ePrint.Graphics.DrawString(txt.Text, New Font("Arial", 11, FontStyle.Regular), _

Brushes.Black, 100, 100) ePrint.HasMorePages = False End Sub

[email protected][email protected]

Page 38: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En lugar de agregar un control PrintDocument, lo haremos via código:

Dim prnTxt As New PrintDocument

Agregar una caja de texto

Agregar un botón, para imprimir el contenido de la caja de texto, en el evento clic del botón, escribir:

Private Sub bntPrnTxt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles bntPrnTxt.Click Try Dim prnTxt As New PrintDocument AddHandler prnTxt.PrintPage, AddressOf Me.ImprimirTexto prnTxt.Print() Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try End Sub

Importante, tenga en cuenta las limitaciones que se tienen, pues no se permite imprimir texto que sobrepase el margen derecho del papel, tampoco se ajustan automáticamente las líneas cuando se alcanza el borde del papel, por ejemplo si imprime un archivo que no tiene retornos de carro al final de las líneas será necesario escribir código que lo controle. Tampoco es posible imprimir más de una página de texto, pues lo que sobrepase una página se ignora, por lo tanto no se imprime.

Para controlar la impresión de varias páginas es necesario crear una página virtual, para ello utilice el evento PrintPage o el método Graphics.MeasureString.

Impresión de un archivo

Importar clases

Imports System.IOImports System.Drawing.Printing

Debajo del código generado automáticamente por Visual Basic .NET (Windows Form Designer generated code) escriba

Private OptPrnPage As New PageSettings Private StrToPrn As String Private FontPrn As New Font("Arial", 12)

[email protected][email protected]

Page 39: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Agregar un control OpenFileDialog

Agregar un control de texto enriquecido

Agregar un botón para abrir un archivo de texto y en el evento clic escribir

Private Sub btnOpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnOpenFile.Click OFD.Filter = "txt|*.txt" OFD.ShowDialog() If OFD.FileName <> vbNullString Then Try Dim FS As New FileStream(OFD.FileName, FileMode.Open) RTB.LoadFile(FS, RichTextBoxStreamType.PlainText) FS.Close() StrToPrn = RTB.Text Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try End If End Sub

Agregar un control PrintDialog

Agregue un botón para mandar imprimir el archivo y en el evento clic escriba

Private Sub btnPrnFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnPrnFile.Click Try prnFile.DefaultPageSettings = OptPrnPage StrToPrn = RTB.Text PD.Document = prnFile Dim DR As DialogResult = PD.ShowDialog If DR = DR.OK Then prnFile.Print() End If Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try End Sub

[email protected][email protected]

Page 40: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Dé doble clic para agregar al control PrnFile (PrintDocument1) el código del evento clic

Private Sub PrnFile_PrintPage(ByVal sender As System.Object, ByVal e As _

System.Drawing.Printing.PrintPageEventArgs) Handles PrnFile.PrintPage Dim nChars As Integer Dim nLines As Integer Dim sPage As String Dim sFormat As New StringFormat Dim rectAng As New RectangleF(e.MarginBounds.Left, e.MarginBounds.Top, _

e.MarginBounds.Width, e.MarginBounds.Height) Dim MySize As New SizeF(e.MarginBounds.Width, e.MarginBounds.Height - FontPrn.GetHeight(e.Graphics)) sFormat.Trimming = StringTrimming.Word e.Graphics.MeasureString(StrToPrn, FontPrn, MySize, sFormat, nChars, nLines) StrToPrn = StrToPrn.Substring(0, nChars) e.Graphics.DrawString(sPage, FontPrn, Brushes.Black, rectAng, sFormat) If nChars < StrToPrn.Length Then StrToPrn = StrToPrn.Substring(nChars) e.HasMorePages = True Else e.HasMorePages = False StrToPrn = RTB.Text End If End Sub

Hasta aquí hemos logrado reconocer las funciones y cada evento y saber como funciona mediante código de aquí en adelante vamos aver ejemplos desarrollados con cada uno de ellos , entre ellos ejemplos simples, avanzados y complejos, teniendo todos estos conceptos vistos anteriormente.

[email protected][email protected]

Page 41: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Tipos de Mensajes ( MsgBox)

Al ejecutar debe debe de salir “Hola esto es un ejemplo” pero mira en la forma que sale una línea debajo de la otra, eso nos permite el código vbCrLf entre amperson como se muestra en el código.

Agregar un formulario y luego agregar un botón doble clic en el botón y escribir el siguiente código.

MsgBox("Hola" & vbCrLf & "Esto es un ejemplo.")

Tipos de Mensajes (InputBox)

Al ejecutar se debe Mostar una ventana pequeña (InputBox) donde te dirá “Déme su Nombre” deberás ingresar tu nombre y hacer clic en aceptar y se mostrara “Su nombre es: “Nombre Ingresado”. Estamos declarando una variable de tipo lectura esa variable va a tomar todo lo que introduzca en el Input Box.

Agregar un formulario y luego agregar un botón doble clic en el botón y escribir el siguiente código.

[email protected][email protected]

Page 42: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Mostrando la Aplicación Desarrollada de las Fechas (Pág. Nº 9)

[email protected][email protected]

Page 43: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Aplicación de Animación

Para poder Realizar esta Aplicación agregaremos un formulario y le pondremos de fondo de color negro

Agregaremos un Picturebox añadiéndole una imagen en este caso yo elegí la de un avión y en la propiedad de picturebox SiZeMode la Pondremos en StrechImage

Por ultimo agregaremos un timer en su propiedad enabled la pondremos a true

Y su otra propiedad Interval será = 50

Le damos doble clic al timer1 y codificaremos lo siguiente:

Luego Presionar “F5”

Se Notara como el Avión Avanza y crece y Luego vuelve a Avanzar

[email protected][email protected]

1) 2)

3)

Page 44: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Funciones Matemáticas

Si se les pide hallar el valor de dos números multiplicados y mostrarlo en un label pero que los números que vallas a multiplicar sean capturados de un InputBox

Suena un Poquito confuso o tedioso pero se nos va hacer fácil ahora veremos aplicando funciones y concatenación

Agregaremos un formulario y dos label el primer label escribir “El Producto es:”

El otro label color de fondo blanco y su propiedad BorderStyle =”Fixed3D”

Y Un Botón la propiedad tex=”Multiplicar”

Agregaremos un modulo

Código del Modulo

Código del Botón

Luego Presionar “F5”

[email protected][email protected]

Page 45: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Hallando Suma, Resta, Multiplicación, Division

Se nos pide ingresar dos números en un textbox y haciendo clic en el botón calcular hallar la suma, resta, multiplicación, división, pues también lo haremos con una función.

Agregaremos un formulario, que contendrá 10 label, dos botones, dos textbox y un modulo

[email protected][email protected]

Page 46: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el Modulo

Codificaremos

[email protected][email protected]

Control Propiedad Definición

Label1 Text Numero 1

Label2 Text Numero 2

Label3 Text Suma

Label4 Text Resta

Label5 Text Multiplicación

Label6 Text División

Label7 Name Lblsuma

Label8 Name Lblresta

Label9 Name Lblmultiplicacion

Label10 Name lbldivision

Textbox1 Text Txt1

Textbox2 Text Txt2

Button1 Text Calcular

Button2 Text Nuevo

Page 47: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el botón1 y botton2 y crearemos una subrutina

[email protected][email protected]

Page 48: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Presionar “F5”

Utilizando las Funciones de Cadena

Si nos piden que de una frase cualquiera solo las primeras letras de cada palabra se conviertan a mayusculas

Agregaremos un formulario con 1 botón, 2 label y un textbox donde el primer label en su propiedad text “Ingrese una frase en minúsculas” los demás estarán en blanco

El textbox su propiedad name =”txtfrase” y el label2 su name=”lblresultado”

Por ultimo Agregaremos un modulo

Codificación del Modulo

[email protected][email protected]

Page 49: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificación del botón

Presionar “F5”

Aplicación (Simulación de una Compra)

Agregaremos un formulario con 9 textbox (txtcodigo, txtcliente, txtproducto, txtprecio, txtcantidad, txtsubtotal, txtdes, txtigv, txttotal)

Ingresaremos 9 Label y tres botones l

[email protected][email protected]

Page 50: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificando en el botón calcular

Codificando en el botón salir

Application.exit,,, nos permite cerrar toda la aplicación

Codificando en el botón Nuevo

[email protected][email protected]

Page 51: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Aplicación (Listbox agregar y eliminar elementos)

Agregaremos un formulario que contendrá 4 label

El label1en su propiedad text (“Listado de Nombres Propios”)

El label2en su propiedad text (“Agregar”)

El label3en su propiedad text (“Nº Items”)

El label3en su propiedad text (“déjalo en blanco”) y su propiedad BackColor =”White”, su propiedad BorderStyle =”Fixed3D”

Agregaremos 3 Botón

El boton1en su propiedad text (“&Agregar”)

El boton1en su propiedad text (“&Eliminar”)

El boton1en su propiedad text (“&Salir”)

[email protected][email protected]

& = Permitirá tener acceso con botón pulsando Alt. + la letra seguida del amperson. Si pulsamos Alt. + a accederemos al agregar.

Page 52: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificando en el botón agregar

Codificando en el botón Eliminar

Codificando el botón salir

Aplicación Listbox Distintos Métodos

Agregar un formulario que contendrá 5 label

Agregar 12 botones

Agregar una textbox

Por ultimo agrega 4 listbox

Debe quedar así

[email protected][email protected]

Page 53: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Nota: Lo que vemos dentro del listbox no lo vallan a escribir eso se llenara en el evento load del formulario aquí les viene la codificación de cada botón

Codificando en el botón agregar

Codificando en el botón Eliminar

En el evento load del formulario

[email protected][email protected]

Page 54: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el botón

En el botón

En el botón

[email protected][email protected]

Page 55: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el botón

[email protected][email protected]

Page 56: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el botón

[email protected][email protected]

Page 57: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Manejando el Mouse

Que les parece si haciendo clic en un botón el puntero del mouse no podrá salir del margen del formulario y volviendo ha hacer clic en el botón el puntero del mouse volverá a su estado normal

En el botón Codificamos

[email protected][email protected]

Page 58: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

La variable estática “blnAtrapado” para saber si hay que liberar el mouse o luicerarlo

x: coordenada horizontal del ángulo superior izquierdo del area cliente del formulario

y: coordenada vertical del ángulo superior izquierdo del area cliente del formulario

Creamos el punto que representa el ángulo superior izquierdo de el area cliente de nuestro formulario

Creamos un rectangulo del tamaño de el area cliente de nuestro formulario

Aquí atrapamos el cursor, pasando como argumento el rectangulo creado

Liberamos el cursor

Presionen “F5” y verán que al hacer clic del mouse no puede salir fuera del margen que tiene el formulario y volviendo ha hacer clic en el botón volverá a liberarse el cursor

Manejando el Evento Mouse_Move con el Método Randon

Diseñar la siguiente interfaz

Codificando el Botón Salir

[email protected][email protected]

Page 59: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificando en el Botón Desea un Aumento de Sueldo

Presionar F5 y Vera que cada vez que usted quiera dar un clic en el botón “Desea un Aumento de Sueldo no Podrá”

Manejando el (Picture box, OpenFileDialog, SavefileDialog)

Cuadro de dialogo savefiledialog

Este cuadro se dialogo presenta a los usuarios una forma de examinar el sistema de archivos y seleccionar el archivo que se va a guardar.

Propiedades Importantes

Title= Es el titulo que tendrá el cuadro de dialogo

InitialDirectory= Ruta Inicial que mostrara el cuadro de dialogo

Filter= Filtra los archivos que mostrara el cuadro de dialogo

Filterindex = El index del tipo de archivo filtrado en la propiedad alter.

Filename = Nombre del archivo en el que se realiza la escritura.

DefaultExt = Extensión por defecto que se aplicara al nombre del Archivo.

[email protected][email protected]

Page 60: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la Siguiente Interfaz:

Nota

Agregar 2 Picture box su propiedad SizeMode=StretchImagen

Los label lbldestino1, lbldestino2, lblruta1, lblbruta2 en su propiedad backColor elijan color blanco y su propiedad BorderStyle= Fixed3D

Agregar de la barra de Herramientas el control Openfiledialog1 y Savefiledialog1

Al control openfiledialog1 su propiedad name = ofdfoto

Código del botón Mostrar foto1

ofdfoto.Filter = "Imagenes jpg |*.jpg| Imagenes bmp |*.bmp|Archivos gif(*gif;*.gif) | *gif;*.gif | Todos los Archivos |*.*"

[email protected][email protected]

Page 61: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Código del botón Mostrar foto2

ofdfoto.Filter = "Imagenes jpg |*.jpg| Imagenes bmp |*.bmp|Archivos gif(*gif;*.gif) | *gif;*.gif | Todos los Archivos |*.*"

Código del botón Guardar foto1

SaveFileDialog1.Title = "como guardar mi archivo"SaveFileDialog1.Filter = "Imagenes jpg |*.jpg| Imagenes bmp |*.bmp|Archivos gif(*gif;*.gif) | *gif;*.gif | Todos los Archivos |*.*"

Código del botón Guardar foto2

SaveFileDialog1.Title = "como guardar mi archivo"SaveFileDialog1.Filter = "Imagenes jpg |*.jpg| Imagenes bmp |*.bmp|Archivos gif(*gif;*.gif) | *gif;*.gif | Todos los Archivos |*.*"

Presionar “F5”

[email protected][email protected]

Page 62: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

He Abierto una imagen desde una unidad la ruta de visualiza y esa foto la guarde en el escritorio con el nombre “1”

Los mismo hice en el otro pero lo cambie de formato la que la primera imagen que guarde esta con formato bmp y la otra esta con formato jpg

Código autogenerado

Si se nos pide hallar las dos últimas letras del apellido paterno, y las dos primeras letras del apellido materno y la 1ra y la 4ta letra de los nombres y la primera letra del sexo y la edad y de todo esto se debe generar nuestro código se debe auto generar al dar enter en nuestra edad

Pareja ramos luis daniel mi código vendría hacer así jaraism19

Diseñar la siguiente interfaz

Label7 color de fondo blanco y borderstyle=fixed3D

[email protected][email protected]

Page 63: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el evento KeyPress Textbox5.text

Desarrollando Aplicación con Modulo y Panel

Diseñar la siguiente interfaz

Agregar don paneles el panel 1 estará y el panel2 estará de color azul en panel dos debe estar encima del panel1 pero sin taparlo totalmente vean el diseño que el panel1 se nota un borde y agregaremos un modulo

[email protected][email protected]

Page 64: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificando el modulo

Sub ActualizarBarra(ByRef NombreBarraRelleno As Panel, ByRef NombreBarraBase As Panel, ByVal PuntoInicio As String, ByVal Valor As Integer)

NombreBarraRelleno.Width() = NombreBarraRelleno.Left + (Unidad * Valor) Case Else MessageBox.Show("El valor del parámetro PuntoInicio no es válido", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Select End Sub

Sub InicializarBarra(ByRef NombreBarraRelleno As Panel, ByVal PosicionBarra As String) If PosicionBarra.ToUpper = "H" Then NombreBarraRelleno.Width = 0 End If End Sub

En el evento Load del formulario

InicializarBarra(Panel1, "H")

En el evento clic del botón

Dim A, B As Long For A = 0 To 400 For B = 0 To 100000 Next ActualizarBarra(Panel1, Panel2, "L", A) Panel2.Visible = True Next Panel2.Visible = False

Presionar “F5”

Y hacer clic en el botón Generar

[email protected][email protected]

Page 65: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la siguiente interfaz (Creando un Explorador de Imagenes)

Agregar un TreeView propiedad name =TvDir ListView propiedad name =LvImgCombobox propiedad name =CbDriverStatusBar con dos paneles propiedad panels clic agregar dos paneles Statusbarpanel1 y Panel2 eso es todo PicrtureBox propiedad name=pbimgLabel propiedad name=lbimg

Importamos los espacios de nombresEstas importaciones se escriben arriba de Public Class Form1 así debe de quedar

Imports SystemImports System.Windows.FormsImports System.Text'Para manipular archivos gráficosImports System.DrawingImports System.Drawing.Imaging'Para manipular directorios y ficherosImports System.IO'Para iniciar y detener procesos del sistema local

[email protected][email protected]

Boton1Boton2 Boton3

Boton4

Boton5

Boton6

lbImg

Page 66: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Imports System.Diagnostics

Public Class Form1 Inherits System.Windows.Forms.Form 'Para saber si la imagen está ajustada a la ventana o a tamaño real Dim ajustar As Boolean = True ' Variable para ser utilizada en el método btAbrir_Click Dim nombreImg As String = ""En el evento load del formulario'cbDrive = System.Drawing.Icon('rellenar el Combobox con las letras de unidad del sistema:'array de cadenas para contener los nombres de las unidades Dim drives() As String'rellenar el array con las unidades lógicas del sistema drives = System.Environment.GetLogicalDrives() 'rellenar el Combobox dese el array Me.cbDrive.Items.AddRange(drives) lbimg.Text = "Ninguna imagen cargada"

En el cbdriver_selectedIndexChangedTry 'la clase DirectoryInfo expone métodos de instancia para _ 'crear, mover y enumerar archivos en directorios y subdirectorios; 'se utiliza la clase DirectoryInfo para operaciones típicas como copiar, _ 'mover, cambiar de nombre, enumerar, crear y eliminar directorios. 'obtener los directorios de la unidad seleccionada; Dim combo As New DirectoryInfo(Me.cbDrive.Text) Dim carpetas() As DirectoryInfo carpetas = combo.GetDirectories() 'limpiar el Treeview Tvdir.Nodes.Clear() 'rellenar el Treeview con los nombres de los directorios; 'TreeNode representa a los nodos del Treeview Dim carpetas2 As DirectoryInfo Dim nodo As TreeNode For Each carpetas2 In carpetas 'el constructor de la clase Treenode inicializa una nueva instancia _ 'aquí se usa con 3 parámetros: _ '1 - el texto de etiqueta especificado _ '2 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'seleccionado (índice del Imagelist). '3 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'sin seleccionar (índice del Imagelist). nodo = New TreeNode(carpetas2.FullName, 0, 1) Me.Tvdir.Nodes.Add(nodo) Next 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer la unidad " & cbDrive.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) cbDrive.Text = "C:\"

[email protected][email protected]

Page 67: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

End TryEn el evento Tvdir_AfterSelect

Try 'si el nodo del árbol no está expandido If Not e.Node.IsExpanded Then 'obtener los subdirectorios del nodo seleccionado Dim carpetas3 As DirectoryInfo carpetas3 = New DirectoryInfo(e.Node.FullPath) Dim carpetas4() As DirectoryInfo carpetas4 = carpetas3.GetDirectories()

'rellenar el Treeview con los nombres de los subdirectorios; 'TreeNode representa a los nodos del Treeview Dim subcarpetas As DirectoryInfo Dim nodo As TreeNode For Each subcarpetas In carpetas4 'el constructor de la clase Treenode inicializa una nueva instancia _ 'aquí se usa con 3 parámetros: _ '1 - el texto de etiqueta especificado _ '2 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'seleccionado (índice del Imagelist). '3 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'sin seleccionar (índice del Imagelist). nodo = New TreeNode(subcarpetas.Name, 0, 1) e.Node.Nodes.Add(nodo.Text) Next 'obtener los archivos del subdirectorio Dim archivos() As FileInfo archivos = carpetas3.GetFiles() 'limpiar el Listview Me.lvImg.Items.Clear() 'rellenar el Listview con los nombres de los archivos 'que cumplan la condición: terminar por las extensiones 'de archivos de imagen (se pueden cambiar las que aparecen aquí) Dim imagen As FileInfo For Each imagen In archivos 'a cada extensión se le puede asignar una imagen diferente eb el Imagelist Select Case imagen.Extension Case ".BMP", ".bmp" Me.lvImg.Items.Add(imagen.Name, 2) Case ".JPG", ".JPEG", ".jpg", ".jpeg" Me.lvImg.Items.Add(imagen.Name, 3) End Select Next End If 'si no hay elementos en el Listview, vaicar la caja de imagen If Me.lvImg.Items.Count = 0 Then Me.pbimg.Image = Nothing

[email protected][email protected]

Page 68: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Me.lbimg.Text = "Ninguna imagen cargada" End If 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer imágenes ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try

Creamos una sub Rutina

Private Sub refrescarImg() Try 'si hay algún elemento seleccionado en el Listview If Me.lvImg.SelectedItems.Count > 0 Then 'invalidar la región gráfica del Picturebox para volver a rellenarla 'con la imagen elegida en el control Listview Me.pbimg.Invalidate() Me.pbimg.Image = New Bitmap(Me.Tvdir.SelectedNode.FullPath & "\" & Me.lvImg.SelectedItems(0).Text) End If 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer imágenes ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

En el evento ListView1_SelectedIndexChanged

'procedimiento descrito más abajo Call refrescarImg() 'mostrar información sobre ancho y alto de la imagen seleccionada Me.lbimg.Text = "Ancho de imagen: " + pbimg.Image.Width.ToString + _

" px. / Alto de imagen: " + pbimg.Image.Height.ToString + " px"

En el boton1En el boton1

'para que solamente lo haga si hay imagen en la caja de imagen If Not pbimg.Image Is Nothing Then 'si ya está a tamaño real, pasar a modo Ajustado If ajustar = True Then 'pasar a modo Normal (tamaño real) pbimg.SizeMode = PictureBoxSizeMode.StretchImage ajustar = False Else 'si la imagen está en modo Ajustado (Stretch) pbimg.SizeMode = PictureBoxSizeMode.CenterImage ajustar = True End If

[email protected][email protected]

Page 69: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

End IfEn el boton2En el boton2

'para que solamente lo haga si hay imagen en la caja de imagen If Not pbimg.Image Is Nothing Then pbimg.Image.RotateFlip(RotateFlipType.RotateNoneFlipX) pbimg.Refresh() 'Recarga la imagen End If

En el boton3En el boton3

If Not pbimg.Image Is Nothing Then dlgSave = New SaveFileDialog dlgSave.Filter = "Mapas de bits (*.bmp)|*.bmp|Imágenes JPG (*.jpg)|*.jpg" dlgSave.Title = "Guarda la imagen como..." If dlgSave.ShowDialog() = DialogResult.OK Then nombreImg = dlgSave.FileName If (nombreImg.EndsWith("jpg")) Then pbimg.Image.Save(nombreImg, ImageFormat.Jpeg) End If If (nombreImg.EndsWith("bmp")) Then pbimg.Image.Save(nombreImg, ImageFormat.Bmp) End If End If End If

Creamos una functionCreamos una function

'Función que devuelve un objeto desde el portapapeles. 'La clase ClipBoard deriva de la clase Object y tiene 3 miembros: 'constructor / GetDataObject / SetDataObject Private Function fnClipboard() As Object 'Copiar imagen al portapeles 'SetDataObject lleva 2 parámetros (objeto, booleano) 'Si booleano es true, el objeto queda en el portapapeles 'después de haber cerrado la aplicación Clipboard.SetDataObject(pbimg.Image, True) 'Variable objClipboard para contener el portapeles Dim objClipboard As IDataObject = Clipboard.GetDataObject() 'devuelve el portapapeles como mapa de bits Return objClipboard.GetData(DataFormats.Bitmap) End Function

En el boton4En el boton4

'para que solamente lo haga si hay imagen en la caja de imagen If Not pbimg.Image Is Nothing Then 'función detallada en el siguiente bloque Call fnClipboard()

[email protected][email protected]

Page 70: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

End IfEn el boton6En el boton6

Dim ra As String ra = MessageBox.Show("Desea Salir", "Salir", MessageBoxButtons.YesNo, MessageBoxIcon.Information) If ra = vbYes Then End

End If

En el boton5En el boton5

'Información al usuario MessageBox.Show("Explorador de imágenes realizado en Visual Basic .NET." + vbCrLf + "Autor: Pareja Ramos Luis Daniel. Fecha: 09/10/2003.", "Acerca de...", MessageBoxButtons.OK)

En el evento Closing del formulario en vbnet 2005 esEn el evento Closing del formulario en vbnet 2005 esForclosingForclosing

Dim reply As MsgBoxResult reply = MsgBox("Desea Cerrar la Aplicaciòn." & "Presionar YES para salir" & "Presionar NO para seguir en la Aplicaciòn.", MsgBoxStyle.YesNo) If reply = MsgBoxResult.No Then e.Cancel = True End If

En le evento Mouse_Move del formularioEn le evento Mouse_Move del formulario

Pnael2.Text = Rnd(1)

En el pictubreboxEn el pictubrebox mouse_move

Pnael2.Text = Rnd(1)

[email protected][email protected]

Page 71: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Luego Presionar F5Luego Presionar F5

Así lo intentes cerrar desde la X del formulario te preguntara si deseas cerrar oAsí lo intentes cerrar desde la X del formulario te preguntara si deseas cerrar o no esto lo hace el evento closing no esto lo hace el evento closing

Manipulando Gráficos y ControlesManipulando Gráficos y Controles

Extender un control existenteExtender un control existente

Es posible personalizar un control Windows Forms por derivación simple y sobrescribir sus propiedades, métodos y eventos. A este proceso se le denomina “Extender un Control”. Al crear una nueva clase que derive de una clase control estándar tenemos la opción de utilizar los miembros de la clase base o sobrescribir sus miembros. Al heredar de un control existente debemos hacer uso de la referencia MyBase para invocar explícitamente al constructor de la clase base, esto porque los constructores no se heredan entre clases.

[email protected][email protected]

Page 72: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crear un Control PersonalizadoCrear un Control Personalizado

Un control personalizado es un control que provee elementos de interfaz de usuario haciendo llamadas al objeto Graphics de GDI+ en el evento OnPaint. Un control personalizado deriva directamente de System.Windows.Forms.Control. Para agregar un nuevo control Personalizado haga clic derecho sobre el proyecto y seleccione Agregar/Agregar nuevo elemento y seleccione como tipo de elemento Control personalizado.

El siguiente ejemplo muestra cómo crear un control personalizado que muestre un botón circular: Public Class BotonRedondo Inherits System.Windows.Forms.Control Private Lapicero As New Pen(Color.DarkGray, 5) Private Pincel As Drawing2D.LinearGradientBrush Protected Overrides Sub OnPaint(ByVal pe _ As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(pe) Dim posInicialX, posInicialY As Integer Dim Ancho, Alto As Integer

[email protected][email protected]

Page 73: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Ancho = Me.Size.Width * 0.9 Alto = Me.Size.Height * 0.9 posInicialX = (Me.Size.Width - Ancho) / 2 posInicialY = (Me.Size.Height - Alto) / 2 pe.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality Pincel = New Drawing2D.LinearGradientBrush(New _ Rectangle(posInicialX, posInicialY, Ancho, Alto), _ Color.Gray, Color.LightGray, 45)

pe.Graphics.DrawEllipse(Lapicero, _ New Rectangle(posInicialX, posInicialY, Ancho, Alto))

pe.Graphics.FillEllipse(Pincel, _ New Rectangle(posInicialX, posInicialY, Ancho, Alto)) pe.Graphics.DrawString(Me.Text, Me.Font, Brushes.Black, _ (Me.Size.Width - pe.Graphics.MeasureString(Me.Text, _ Me.Font).Width) / 2, _ (Me.Size.Height - pe.Graphics.MeasureString(Me.Text, _ Me.Font).Height) / 2) End Sub End Class

Debido a que este control ha sido creado como parte del mismo proyecto debemos agregarlo mediante código en el evento Load del formulario:

Me.BotonRedondo1.Left = 10 Me.BotonRedondo1.Top = 10 Me.BotonRedondo1.Width = 150 Me.BotonRedondo1.Height = 80 Me.BotonRedondo1.Text = "Botón redondo" Me.BotonRedondo1.Font = New Font("Verdana", 8) Me.Controls.Add(Me.BotonRedondo1)

Agregamos además un mensaje en el evento clic del botón: Private Sub BotonRedondo1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles BotonRedondo1.Click MessageBox.Show("Haz hecho clic sobre el botón personalizado") End Sub

[email protected][email protected]

Page 74: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Si queremos que nuestro formulario tenga de fondo dos colores entonces diseñar la siguiente interfaz:

Doble clic en el formulario e importar los espacios de nombres y declarar a nivel de formulario dos variables (color1, color2) as colorDebe quedar así

Y en el evento paint del formulario escribir el siguiente código

color1 = color1.FromKnownColor(KnownColor.Blue) color2 = color2.FromKnownColor(KnownColor.Black) Dim Rec As Rectangle = New Rectangle(New Point(0, 0), New Size(f1.Width, f1.Height)) Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Horizontal) e.Graphics.FillRectangle(Br, Rec) Br.Dispose() e.Graphics.DrawString("", New Font("Microsoft Sans Serif", 9, FontStyle.Bold), Brushes.Black, 0, 0)

Pero si ejecutan saldra error por que al objeto que le están aplicando no esta declarado y ustedes le quieren aplicar al formulario Presionar “F5”

[email protected][email protected]

Page 75: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Pues debemos instaciar a nuestro formulario si para llamar al formulario hacemos lo siguiente

Dim f1 as new form1

Y cuando lo queremos mostrarF1.show ()

Pues aca solo tendremos que instanciarlo ya sea en un modulo o a nivel de formulario Public f1 as new form1A esa variable que representa al formulario se le esta aplicando el color F1OjoEl objeto a agregar los colores puede ser (button, label)

La dirección de los colores va a depender de

Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Horizontal)

Puede ser

VerticalForwadDiagonalBackwardDiagonal

[email protected][email protected]

Page 76: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Mostrando Mensaje Dinámico en Barra de titulo

Agregar un formulario y un timer

Timer propiedad enabled=”true” propiedad interval =”150”Form1 propiedad tag =”dejar 56 espacios en blanco y luego escribir tu nombre”

Nota los espacios en blanco van a depender del ancho del formulario

Doble clic en el timer1 y escribir lo siguiente

Me.Tag = Mid(Me.Tag, 3) + Microsoft.VisualBasic.Left(Me.Tag, 2)Me.Text = Me.Tag

Presionar “F5”

[email protected][email protected]

Page 77: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la siguiente Interfaz PicBoxOrig PicBoxMod

Esta aplicación nos permitirá ponerle dos marcos a la imagen para tener una mejor apariencia

Doble clic en el timer

[email protected][email protected]

Page 78: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Botón abrir

OpenFile.ShowDialog()

Doble clic en el opnefile

Timer.Enabled = TrueProgreso.Visible = TrueProgreso.Value = 0

FileNameTB.Text = OpenFile.FileNameimgOrig = Image.FromFile(OpenFile.FileName)If imgOrig.Width / 5 > PicBoxOrig.Width ThenPicBoxOrig.Image = imgOrig.GetThumbnailImage(imgOrig.Width / 5, imgOrig.Height / 5, AddressOf ThumbNailAbort, Nothing)ElsePicBoxOrig.Image = imgOrigEnd IfactualizaImgMod()BotonGuardar.Enabled = TrueProgreso.Value = 99

Baton guarder

SaveFile.ShowDialog()

Doble clic en el save file

Timer.Enabled = TrueProgreso.Visible = TrueProgreso.Value = 0salvarImagen()Progreso.Value = 99

Doble clic en el BordePicker

ColorPicker.Color = ColorBorde.BackColorColorPicker.ShowDialog()ColorBorde.BackColor = ColorPicker.ColoractualizaImgMod()

Doble clic en el margenPicker

ColorPicker.Color = ColorMargen.BackColorColorPicker.ShowDialog()ColorMargen.BackColor = ColorPicker.ColoractualizaImgMod()

Doble clic en Anchoborde

actualizaImgMod()

[email protected][email protected]

Page 79: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Doble clic en AnchoMargen

actualizaImgMod()

Creamos una SubRutina

Private Sub actualizaImgMod() Try Timer.Enabled = True Progreso.Visible = True Progreso.Value = 0

porcentajeDeMargen = AnchoMargen.Value / 100.0 imgBmp = New Bitmap(imgOrig.Width + CInt(imgOrig.Width * porcentajeDeMargen), imgOrig.Height + CInt(imgOrig.Height * porcentajeDeMargen)) canvas = Graphics.FromImage(imgBmp) canvas.FillRectangle(New SolidBrush(ColorMargen.BackColor), 0, 0, imgBmp.Width, imgBmp.Height)

coordX = Math.Floor((imgBmp.Width - imgOrig.Width) / 2) coordY = Math.Floor((imgBmp.Height - imgOrig.Height) / 2)

estiloBorde = New Pen(ColorBorde.BackColor, AnchoBorde.Value)

canvas.DrawImage(imgOrig, coordX, coordY, imgOrig.Width, imgOrig.Height) canvas.DrawRectangle(estiloBorde, coordX, coordY, imgOrig.Width, imgOrig.Height)

PicBoxMod.Image = imgBmp

estiloBorde.Dispose() canvas.Dispose() GC.Collect() Progreso.Value = 99 Catch ex As Exception 'Nothing End Try End Sub

Creamos una Funcion

Private Function salvarImagen() Dim Calidad As Integer = 100

'Obtiene la lista de encoders Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()

'Busca el encoder de tipo (mime-type) image/jpeg Dim imgCodInf As ImageCodecInfo = Nothing

For Each codec As ImageCodecInfo In codecs

[email protected][email protected]

Page 80: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

If codec.MimeType = "image/jpeg" Then imgCodInf = codec End If Next

'Crea una coleccion de parametros de encoder (se requiere uno) Dim encParm As New EncoderParameters

'Salvando la imagen en JPG con 100% de calidad encParm.Param(0) = New EncoderParameter(Encoder.Quality, CInt(Calidad)) PicBoxMod.Image.Save(SaveFile.FileName, imgCodInf, encParm)

Return Nothing End Function

Presionar “f5”

Realizaremos un Simple Captura Pantallas (Aplicando la combinación de colores)

[email protected][email protected]

Txtnombre

Button3Button2Button1

PicCaptura

Page 81: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Importar los siguientes espacios de nombres y declarar las siguientes variables

En el Load del Formulario

Dim ctl As Control'Estamos buscando en control que representa el area cliente MDI For Each ctl In Me.Controls Try ctlMDI = CType(ctl, MdiClient) ' Asignamos el color de fondo ctlMDI.BackColor = Color.AntiqueWhite 'Aquí asignamos el manejador para pintar el fondo con degradados o lo que 'queramos. Si solo queremos cambiar el color de fondo no hace falta, ni las funciones siguientes tampoco AddHandler ctlMDI.Paint, AddressOf PintarFondo Catch ex As InvalidCastException End Try Next

En el evento Resize del formulario

If Not (Me.ctlMDI Is Nothing) Then Me.PintarFondo(Me.ctlMDI, New PaintEventArgs(Me.ctlMDI.CreateGraphics, New Rectangle(Me.ctlMDI.Location, Me.ctlMDI.Size)))End If

Creamos una sub Rutina

Private Sub PintarFondo(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)Dim GradientePanel As New LinearGradientBrush(New RectangleF(0, 0, ctlMDI.Width, ctlMDI.Height), Color.Black, Color.Blue, LinearGradientMode.Vertical)e.Graphics.FillRectangle(GradientePanel, New RectangleF(0, 0, ctlMDI.Width, ctlMDI.Height))End Sub

[email protected][email protected]

Page 82: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el Evento Paint del boton1

color1 = color1.FromKnownColor(KnownColor.Orange)color2 = color2.FromKnownColor(KnownColor.White)Dim Rec As Rectangle = New Rectangle(New Point(0, 0), New Size(Me.Button1.Width, Me.Button1.Height))Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Vertical) e.Graphics.FillRectangle(Br, Rec) Br.Dispose() e.Graphics.DrawString("Capturar", New Font("Microsoft Sans Serif", 9, FontStyle.Bold), Brushes.Red, 0, 0)

En el evento Paint del boton3

color1 = color1.FromKnownColor(KnownColor.Orange)color2 = color2.FromKnownColor(KnownColor.White) Dim Rec As Rectangle = New Rectangle(New Point(0, 0), New Size(Me.Button3.Width, Me.Button3.Height))Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Vertical) e.Graphics.FillRectangle(Br, Rec) Br.Dispose() e.Graphics.DrawString("Guardar", New Font("Microsoft Sans Serif", 9, FontStyle.Bold), Brushes.Red, 0, 0)

En el evento Paint del boton2

color1 = color1.FromKnownColor(KnownColor.Orange)color2 = color2.FromKnownColor(KnownColor.White)Dim Rec As Rectangle = New Rectangle(New Point(0, 0), New Size(Me.Button2.Width, Me.Button2.Height))Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Vertical) e.Graphics.FillRectangle(Br, Rec) Br.Dispose() e.Graphics.DrawString("Capturar Pantalla", New Font("Microsoft Sans Serif", 9, FontStyle.Bold), Brushes.Red, 0, 0)

En el evento paint del Label1

color1 = color1.FromKnownColor(KnownColor.Orange)color2 = color2.FromKnownColor(KnownColor.White)Dim Rec As Rectangle = New Rectangle(New Point(0, 0), New Size(Me.Label1.Width, Me.Label1.Height))Dim Br As LinearGradientBrush = New LinearGradientBrush(Rec, color1, color2, LinearGradientMode.Vertical) e.Graphics.FillRectangle(Br, Rec) Br.Dispose() e.Graphics.DrawString("Nombre", New Font("Microsoft Sans Serif", 9, FontStyle.Bold), Brushes.Red, 0, 0)

[email protected][email protected]

Page 83: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el evento clic de boton1Dim gr As Graphics = Me.CreateGraphics' Tamaño de lo que queremos copiarDim fSize As Size = Me.Size' Creamos el bitmap con el área que vamos a capturar' En este caso, con el tamaño del formulario actualDim bm As New Bitmap(fSize.Width, fSize.Height, gr)' Un objeto Graphics a partir del bitmapDim gr2 As Graphics = Graphics.FromImage(bm)' Copiar el área de la pantalla que ocupa el formulariogr2.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, fSize)' Asignamos la imagen al PictureBoxMe.picCaptura.Image = bm

En el evento clic de boton2

' Capturar toda la pantallaDim gr As Graphics = Me.CreateGraphics' Tamaño de lo que queremos copiar' En este caso el tamaño de la ventana principalDim fSize As Size = Screen.PrimaryScreen.Bounds.Size' Creamos el bitmap con el área que vamos a capturarDim bm As New Bitmap(fSize.Width, fSize.Height, gr)' Un objeto Graphics a partir del bitmapDim gr2 As Graphics = Graphics.FromImage(bm)' Copiar todo el área de la pantallagr2.CopyFromScreen(0, 0, 0, 0, fSize)' Asignamos la imagen al PictureBoxMe.picCaptura.Image = bm

En el evento clic del boton3If String.IsNullOrEmpty(Me.txtnombre.Text) Then MessageBox.Show("Debes indicar el nombre del fichero", _ "Guardar", _ MessageBoxButtons.OK, _ MessageBoxIcon.Exclamation) Exit Sub End If' Usar el formato según la extensión Dim ext As String = Path.GetExtension(Me.txtnombre.Text).ToLower()

Select Case ext Case ".jpg" Me.picCaptura.Image.Save(Me.txtnombre.Text, ImageFormat.Jpeg) Case ".png" Me.picCaptura.Image.Save(Me.txtnombre.Text, ImageFormat.Png) Case ".gif" Me.picCaptura.Image.Save(Me.txtnombre.Text, ImageFormat.Gif) Case ".bmp" Me.picCaptura.Image.Save(Me.txtnombre.Text, ImageFormat.Bmp) Case ".tif" Me.picCaptura.Image.Save(Me.txtnombre.Text, ImageFormat.Tiff) Case Else Me.picCaptura.Image.Save(Me.txtnombre.Text) End Select

[email protected][email protected]

Page 84: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Presionar “F5”

[email protected][email protected]

Ahí esta nuestra aplicación ejecutada y hemos dado clic en

el botón “Capturar” y en el PicCaptura se muestra nuestra

aplicación capturada

Ahí esta nuestra aplicación ejecutada y hemos dado clic en el botón “Capturar Pantalla” y en el PicCaptura se muestra

nuestra aplicación con todo lo que se encuentre a su detrás en

este caso se muestra mi escritorio

Escribimos el nombre de nuestra imagen con su

extencion”prueba1.jpg” y hacemos clic en guardar ahora donde esta guardada la imagenAbran su carpeta bin /Debug y

ahí se encuentra su imagen

Page 85: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crearemos un Explorar y Reproductor de música y Video y un UserControlAgregar los siguientes componentes (DirlistBox, driveListbox, FileListbox) y hagan clic en OK el windowsmediaplayer propiedad name =wmp1

Agregaremos Windows media player componen com Clic en la pestaña com components presione OK y vera su barra de herramientas con los controles agregados

[email protected][email protected]

Page 86: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la siguiente interfaz

Formulario =MDI1) Dirlistbox1 propiedad name “drive1”2) Drivelistbox1 propiedad name “dir1”3) filelisatbox1 propiedad name “file1”

Importamos el espacio de nombre drawingImports System.Drawing.Drawing2D

En el evento change dir1_changefile1.Path = dir1.Path

En el file1_SelectedIndexChanged file1.SelectedIndexChangedwmp1.URL = file1.Path & "/" & file1.FileNameLabel1.Text = file1.Text

En el drive1_SelectedIndexChanged dir1.Path = drive1.Drivefile1.Path = dir1.Path

En el botón salir evento clic Dim ra As Stringra = MessageBox.Show("Desea Salir de la Aplicacion", "Salir", MessageBoxButtons.YesNo)If ra = vbYes Thenwmp1.close()EndEnd If

[email protected][email protected]

1

2

3

Label1

Page 87: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el Form1_FormClosing 'Dim can As MsgBoxResult'can = MsgBox("Desea Cerrar la Aplicacion . " & " Presionar Ok para Terminar" & " la Aplicacion, o Cancelar para Retornar.", MsgBoxStyle.OkCancel)'If can = MsgBoxResult.Cancel Then' e.Cancel = True 'End IfDim cerrar As BooleanIf MessageBox.Show("Desea Cerrar la Aplicacion", "Cerrar", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes ThenIf cerrar = False Thene.Cancel = FalseEnd IfElsee.Cancel = TrueEnd IfEnd Sub

En el Form1_load Dim ctl As Control'Estamos buscando en control que representa el area cliente MDI For Each ctl In Me.ControlsTryctlMDI = CType(ctl, MdiClient)' Asignamos el color de fondo ctlMDI.BackColor = Color.AntiqueWhite'Aquí asignamos el manejador para pintar el fondo con degradados o lo que'queramos. Si solo queremos cambiar el color de fondo no hace falta, ni las funciones siguientes tampocoAddHandler ctlMDI.Paint, AddressOf PintarFondoCatch ex As InvalidCastExceptionEnd TryNextwmp1.fullScreen = False

En el Form1_ResizeIf Not (Me.ctlMDI Is Nothing) ThenMe.PintarFondo(Me.ctlMDI, New PaintEventArgs(Me.ctlMDI.CreateGraphics, New Rectangle(Me.ctlMDI.Location, Me.ctlMDI.Size)))End If

Agregaremos un ModuloPublic f2 as new form2

[email protected][email protected]

Page 88: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Agregaremos un usercontrol

Nos aparecerá como un formulario normal así que agregaremos un label y un timer en le label yo escribí mi nombre pero ustedes escriban lo que mas les gusteTimer1 propiedad enabled =true y interval =200

[email protected][email protected]

Page 89: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Doble clic en el timer1 escribir lo siguiente esto es arriba del evento del timer ósea debajo de public class User control1 es como declarar a nivel de formulario

En el evento tick del timer1

Label1.Visible = Not Label1.Visible

[email protected][email protected]

Page 90: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el evento Paint del Label1

Dim pincel As New Drawing2D.LinearGradientBrush(e.ClipRectangle, Me.m_ColorInicialGradiente, Me.m_ColorFinalGradiente, Me.m_AnguloGradiente) e.Graphics.FillRectangle(pincel, e.ClipRectangle)

Dim altotexto As Integer = e.Graphics.MeasureString(Me.Label1.Text, Me.Label1.Font).Height

Dim anchotexto As Integer = e.Graphics.MeasureString(Me.Label1.Text, Me.Label1.Font).Width

e.Graphics.DrawString(Me.Label1.Text, Me.Label1.Font, New SolidBrush(Me.ForeColor), (e.ClipRectangle.Width - anchotexto) / 2, (e.ClipRectangle.Height - altotexto) / 2

Ahora Hay que generar nuestro usercontrol

Una vez generada nos vamos a nuestro formulario form2 que esta vació Le agregamos un label propiedad text =”Elaborado por:”Un Picturebox con tu fotoUn botón salir Y hacemos lo siguiente

Clic

[email protected][email protected]

Page 91: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Te llevara automáticamente a la carpeta de tu archivoY si no te lleva busca la ruta donde lo guardaste

Luego

[email protected][email protected]

Page 92: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Se debe de haber generado tu dll wundowscontrollibrary1.dllHaces clic en OpenY tu user control debe esta en tu barra de herramientas y lo insertas en tu formulario2Luego Presionar “F5”

Observaran como palpadea el nombre

[email protected][email protected]

Clic

Page 93: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Antes de pasar a conexiones con base de datos les voy a enseñar unos trucos y Métodos avanzados con Novedades de vb net 2005

Imprimir el contenido de un TextBox Encriptando Datos Simular Nieve en vbnet a una imagen Conociendo el Tool strip Evento DragDrop (Mover Imágenes de un lugar a otro) Cambiar Formato de una Foto o Imagen Apagar la Pc Mostrar Una Pagina web (Web Browser / LinkLabel) Solo Números o letras en un Textbox Limpiar N cantidades de Textbox y Funcionalidades

Imprimiendo el contenido de un Textbox

Diseñar la Siguiente Interfaz

[email protected][email protected]

Page 94: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Deberemos importar el Nombre de Espacio

Explicación del Código

En la primera línea de código estamos importando del sistema al objeto printer(Imports System.Drawing.Printing)

En esta otra estamos declarando una variable privada con el nombre de (ImprimirTexto) y les pasamos sus parametros

Private Sub ImprimirTexto(ByVal sender As System.Object, ByVal ePrint As PrintPageEventArgs) ePrint.Graphics.DrawString(txt1.Text, New Font("Arial", 11, FontStyle.Regular), _ Brushes.Black, 100, 100) ePrint.HasMorePages = False End Sub

Luego declaramos una variableDim prnTxt As New PrintDocument

[email protected][email protected]

Le estamos agradando el objeto a imprimir en este caso la cajita de texto que tiene su name txt1

Page 95: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Dentro Del Botón

Try Dim prnTxt As New PrintDocument AddHandler prnTxt.PrintPage, AddressOf Me.ImprimirTexto prnTxt.Print() Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try

Encriptando Datos

Diseñar la siguiente interfaz

Importar los espacios de nombre

[email protected][email protected]

Addhandler estamos diciendo que nuestra variable imprima una página, junto a eso que se le añadirá la variable privada Imprimir texto

Aquí volvemos hacer una instancia de la variable hacia el objeto PrintDocument

lblmsg

Page 96: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

A nivel de Formulario

'cría un array de 8-byte para a chave privadaPublic aChave (7) As Byte

'preenche o vetor de inicialização com alguns valores aleatóriosPrivate Vector() As Byte = {&H12, &H44, &H16, &HEE, &H88, &H15, &HDD, &H41}

Crear la Siguiente Sub Rutina

Sub Cifrar(ByVal inName As String, ByVal outName As String)Try Dim storage(4096) As Byte 'cria um buffer Dim totalBytesEscritos As Long = 8 'bytes escritos

Dim tamanhoPacote As Integer 'determina o numero de bytes escritos de uma vez 'Declara os arquivos streams. Dim arqEntrada As New FileStream(inName, FileMode.Open, FileAccess.Read) Dim arqSaida As New FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write) arqSaida.SetLength(0) Dim comprimentoTotalArquivo As Long = arqEntrada.Length 'Define o tamanho do arquivo fonte 'cria um objeto cripto Dim des As New DESCryptoServiceProvider Dim crStream As New CryptoStream(arqSaida, des.CreateEncryptor(aChave, Vector), CryptoStreamMode.Write) 'fluxo de streamd While totalBytesEscritos < comprimentoTotalArquivo tamanhoPacote = arqEntrada.Read(storage, 0, 4096) crStream.Write(storage, 0, tamanhoPacote) TotalBytesEscritos = Convert.ToInt32(totalBytesEscritos + tamanhoPacote / des.BlockSize * des.BlockSize) End While crStream.Close () Catch e As Exception MsgBox (e.Message) End Try End Sub

[email protected][email protected]

Page 97: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Sub Decifrar(ByVal inName As String, ByVal outName As String) Try Dim storage(4096) As Byte Dim totalBytesEscritos As Long = 8 Dim tamanhoPacote As Integer Dim arqEntrada As New FileStream(inName, FileMode.Open, FileAccess.Read) Dim arqSaida As New FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write)

arqSaida.SetLength(0)

Dim comprimentoTotalArquivo As Long = arqEntrada.Length 'instancia um objeto para cifrar Dim des As New DESCryptoServiceProvider Dim crStream As New CryptoStream(arqSaida, des.CreateDecryptor(aChave, Vector), CryptoStreamMode.Write)

Dim ex As Exception

While totalBytesEscritos < comprimentoTotalArquivo tamanhoPacote = arqEntrada.Read(storage, 0, 4096) crStream.Write(storage, 0, tamanhoPacote) totalBytesEscritos = Convert.ToInt32(totalBytesEscritos + tamanhoPacote / des.BlockSize * des.BlockSize) Console.WriteLine("Processed {0} bytes, {1} bytes total", tamanhoPacote, totalBytesEscritos) End While crStream.Close() Catch e As Exception MsgBox(e.Message & " Verifique se esta usando a senha correta.") End Try

End Sub

[email protected][email protected]

Page 98: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificando Botón “Inicia proceso de cifragendo archivo”

Dim arquivo_destino, arquivo_origem As String

'verifica se foi entrado um nome de arquivo If TextBox1.Text = "" Or TextBox2.Text = "" Then MsgBox ("Você precisa informar um nome de arquivo e uma seenha."): Exit Sub

'verifica se esta cifrando ou decifrando ( o nome do arquivo termina com "_#") Dim ext As String 'extensao do arquivo Dim caminhoArquivo As String 'o caminho do arquivo menos a extensão Dim n As Integer 'a localização do pronto no caminho do arquivo

n = TextBox1.Text.IndexOf(".") 'se não tem extensão retorna -1 If n <> -1 Then 'extrai a extensão ext = TextBox1.Text.Substring(n + 1) caminhoArquivo = TextBox1.Text.Substring(0, TextBox1.Text.Length - ext.Length - 1) Else caminhoArquivo = TextBox1.Text End If

'verifica se existe '_#' no final do arquivo, se tiver o arquivo ja foi cifrado If caminhoArquivo.Substring(caminhoArquivo.Length - 2) = "_#" Then 'este arquivo sera cifrado 'decifrar arquivo_origem = TextBox1.Text 'remove o "_#": caminhoArquivo = caminhoArquivo.Substring(0, caminhoArquivo.Length - 2) If ext <> "" Then caminhoArquivo &= "." & ext arquivo_destino = caminhoArquivo

criaChave(TextBox2.Text) 'cria a chave Decifrar(arquivo_origem, arquivo_destino) lblmsg.Text = "DeCifragem terminada..."

Exit Sub End If

'cifrar 'não há "_#" no final do arquivo , vamos cifrar arquivo_origem = TextBox1.Text 'acrescenta o compose the Cifrared file's filepath by appending "_#": caminhoArquivo &= "_#" If ext <> "" Then caminhoArquivo &= "." & ext arquivo_destino = caminhoArquivo criaChave(TextBox2.Text) 'cria a chave Cifrar(arquivo_origem, arquivo_destino) lblmsg.Text = "Cifragem do arquivo encerrada..."

[email protected][email protected]

Page 99: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Creamos una sub rutina para la clave

'cria a chave e o hash da senha Sub criaChave(ByVal strKey As String)

' array de Byte para tratar a senha Dim arrByte(7) As Byte

Dim AscEncod As New ASCIIEncoding Dim i As Integer = 0 AscEncod.GetBytes(strKey, i, strKey.Length, arrByte, i)

'obtem o valor do hash da senha Dim hashSha As New SHA1CryptoServiceProvider Dim arrHash() As Byte = hashSha.ComputeHash(arrByte)

'poe o valor do hash na chave For i = 0 To 7 aChave(i) = arrHash(i) Next i End Sub

Codificando el Botón Procurar

OpenFileDialog1.Title = "Seleccione o arquivo para Cifrar/Decifrar" OpenFileDialog1.Filter = "Todos os arquivos (*.*)|*.*" lblmsg.Text = ""

If OpenFileDialog1.ShowDialog () = DialogResult.OK Then TextBox1.Text = OpenFileDialog1.FileName Button2.Enabled = True ‘nomeArquivoSaida () End If

En el evento load del formulario

Button2.Enabled = False

Presionen “F5” Creen un documento de texto pónganle cualquier nombre y escriban “hola” solo un ejemplo Cuando hagan clic en el Botón iniciar proceso elijan su archivo de texto y pónganle su nombre en el cuadro que queda vació automáticamente miren su escritorio se genero otro documento de texto con el nombre pero ábranlo y miren pues esta encriptado

[email protected][email protected]

Page 100: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Simular Nieve sobre una Imagen

Diseñar la Siguiente interfaz Timer1 propiedad = enabled=true y interval=1

Mucho ojo se podrá dejar caer la nieve sobre cualquier imagen pera esta tendrá que tener fondo negro ósea un poco trabajoso llevarlo a paint y pintarlo de negro o si tiene otro programa yo uso el PhotoImpresion 5 le explico como esAbres tu foto recortas solamente tu foto y todo a su alrededor lo pintas de negro una vez hecho lo guardas y lo copias en tu carpeta donde esta en bin y así caerá la nieve sobre tu foto

Agregaremos un Picturebox su color de fondo será negro

Declararemos a nivel de formulario

'Variables globalesDim intlin(110) As Integer ' Array el cual contiene la línea de cada copo de nieveDim intcol(110) As Integer ' Array el cual contiene la columna de cada copo de nieveDim ContNumCopo As Integer ' Contador de CoposDim bm As Bitmap

En el evento load del formulario

Dim wid As IntegerDim hgt As IntegerDim x As Integer

wid = PictureBox1.ClientRectangle.Widthhgt = PictureBox1.ClientRectangle.Height

[email protected][email protected]

Page 101: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

'Creamos el Bitmapbm = New Bitmap("Dibujo1.bmp")

PictureBox1.Width = bm.WidthPictureBox1.Height = bm.HeightMe.Width = bm.Width + 8Me.Height = bm.Height + 26'Colocamos aleatoria menté un copo en una columnaFor x = 0 To 110 : intcol(x) = Int(Rnd() * PictureBox1.Width) : Next xintlin(ContNumCopo) = 0Randomize()

Crearemos una funcion Function ElijeLado() Dim clr As System.Drawing.Color Dim clr1 As System.Drawing.Color Dim Lado(110) As Integer ElijeLado = False 'Ponemos aleatoria menté el lado por el cual rodara el copo Lado(ContNumCopo) = Rnd() * 1 If Lado(ContNumCopo) = 0 Then clr = bm.GetPixel(intcol(ContNumCopo) + 1, intlin(ContNumCopo) + 1) clr1 = bm.GetPixel(intcol(ContNumCopo) - 1, intlin(ContNumCopo) + 1) If clr.ToArgb = 0 Or clr.ToArgb = -16777216 Then Call borrar() intcol(ContNumCopo) = intcol(ContNumCopo) + 1 ElijeLado = True

ElseIf clr1.ToArgb = 0 Or clr1.ToArgb = -16777216 Then Call borrar() intcol(ContNumCopo) = intcol(ContNumCopo) - 1 ElijeLado = True End If Else clr = bm.GetPixel(intcol(ContNumCopo) - 1, intlin(ContNumCopo) + 1) clr1 = bm.GetPixel(intcol(ContNumCopo) + 1, intlin(ContNumCopo) + 1) If clr.ToArgb = -16777216 Or clr.ToArgb = 0 Then Call borrar() intcol(ContNumCopo) = intcol(ContNumCopo) - 1 ElijeLado = True ElseIf clr1.ToArgb = -16777216 Or clr1.ToArgb = 0 Then Call borrar() intcol(ContNumCopo) = intcol(ContNumCopo) + 1 ElijeLado = True End If End If End Function

[email protected][email protected]

Esta imagen con el nombre “Dibujo1.bmp esta en el bin”

Page 102: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Creamos una sub Rutina

Sub borrar() 'Borramos para dar la sensación de movimiento If intlin(ContNumCopo) - 1 > 0 Then bm.SetPixel(intcol(ContNumCopo), intlin(ContNumCopo) - 1, Color.Black) bm.SetPixel(intcol(ContNumCopo), intlin(ContNumCopo), Color.Black) End Sub

Doble Clic en el Timer evento Tick

Dim x As Integer Dim clr As System.Drawing.Color

For x = 1 To 50 'Le ponemos un bucle para que aumente la velocidad de la caída de copos ContNumCopo = ContNumCopo + 1 ' Aumentamos la variable del array para pasar de copo If ContNumCopo = 110 Then ContNumCopo = 0 Try

intlin(ContNumCopo) = intlin(ContNumCopo) + 1 'Incrementamos la y(Linea) del copo actual bm.SetPixel(intcol(ContNumCopo), intlin(ContNumCopo), Color.White) 'Pintamos el copo de blanco If intlin(ContNumCopo) >= PictureBox1.ClientRectangle.Height - 1 Then intlin(ContNumCopo) = 0 intcol(ContNumCopo) = Int(Rnd() * PictureBox1.Width) End If clr = bm.GetPixel(intcol(ContNumCopo), intlin(ContNumCopo) + 1) 'Capturamos el color actual If clr.ToArgb <> -16777216 And clr.ToArgb <> 0 Then If ElijeLado() = False Then intlin(ContNumCopo) = 0 intcol(ContNumCopo) = Int(Rnd() * PictureBox1.ClientRectangle.Width) End If Else If intlin(ContNumCopo) - 1 > 0 Then bm.SetPixel(intcol(ContNumCopo), intlin(ContNumCopo) - 1, Color.Black) End If

Catch

End Try

' Mostramos la Imagen. PictureBox1.Image = bm Next x

[email protected][email protected]

Page 103: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Presionar “F5”

El Tool Strip

Es una de las Nuevas Herramientas que nos trae visual Studio 2005 Nos permite crear barra de herramientas en forma sencilla y rápida

[email protected][email protected]

Page 104: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Haciéndole un clic Nos brinda diferentes opciones Como Button, label, SplitButoon, DropDownButton, Separador, Combobox, textbox, progressbar

Agregamos un Button

Clic derecho y le podremos agregar una imagen

[email protected][email protected]

Page 105: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Utilizando DragDropNos permitirá manejar el Botón izquierdo como derecho del mouse para poder mover una imagen de un lugar a otro en este caso de un picturebox a otro

Diseñar la siguiente interfazAgregar dos Picture box (Picturebox1 Picturebox2)

Declarar a nivel de formulario

Private m_MouseIsDown As Boolean = True

En el evento load

' Enable dropping.PictureBox2.AllowDrop = TruePictureBox1.AllowDrop = True

En el PictureBox1_MouseDown

If Not PictureBox1.Image Is Nothing Then' Set a flag to show that the mouse is down.m_MouseIsDown = TrueEnd If

En el PictureBox1_MouseMove

If m_MouseIsDown Then' Initiate dragging and allow either copy or move.PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.Copy Or DragDropEffects.Move)End Ifm_MouseIsDown = False

[email protected][email protected]

Picture box1

Picture box2

Page 106: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En El Picturebox2_Dragenter

If e.Data.GetDataPresent(DataFormats.Bitmap) Then' Check for the CTRL key.If e.KeyState = 9 Thene.Effect = DragDropEffects.CopyElsee.Effect = DragDropEffects.MoveEnd IfElsee.Effect = DragDropEffects.NoneEnd If

En el PictureBox2_DragDrop

' Assign the image to the PictureBox.PictureBox2.Image = e.Data.GetData(DataFormats.Bitmap)' If the CTRL key is not pressed, delete the source picture.If Not e.KeyState = 8 ThenPictureBox1.Image = NothingEnd If

En el PictureBox2_MouseDown

If Not PictureBox2.Image Is Nothing Then' Set a flag to show that the mouse is down.m_MouseIsDown = TrueEnd If

En el PictureBox2_MouseMove

TryIf m_MouseIsDown Then' Initiate dragging and allow either copy or move.PictureBox2.DoDragDrop(PictureBox2.Image, DragDropEffects.Copy Or DragDropEffects.Move)End Ifm_MouseIsDown = TrueCatch ex As Exception' MessageBox.Show(ex.Message)End Try

En el PictureBox1_DragDrop

' Assign the image to the PictureBox.PictureBox1.Image = e.Data.GetData(DataFormats.Bitmap)' If the CTRL key is not pressed, delete the source picture.If Not e.KeyState = 8 ThenPictureBox2.Image = NothingEnd If

[email protected][email protected]

Page 107: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el PictureBox1_DragEnter

If e.Data.GetDataPresent(DataFormats.Bitmap) Then' Check for the CTRL key.If e.KeyState = 9 Thene.Effect = DragDropEffects.CopyElsee.Effect = DragDropEffects.MoveEnd IfElsee.Effect = DragDropEffects.NoneEnd If

Al picture box 1 agregarle una imagen y su piroedad sizemode=strechimagePresionar “F5”

Haga clic derecho y sin soltar el mouse llevelo hasta el picturebox2

Los mismo pero llevo de regreso al picturebo1

[email protected][email protected]

Page 108: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Cambiar el Formato de Una Imagen

Para que esta aplicación funcione debe de tener una imagen en la unidad c o d dependiendo de la ruta que le de usted en el codigo pero veamos para que me entiendan

Diseñar la Siguiente Interfaz

Hacemos doble clic en el Botón

Dim StrFileToConvert as String = "c:\nombre_foto"Dim Path As New Bitmap ("c:\foto.gif")Path.Save (StrFileToConvert + ".jpeg", System.Drawing.Imaging.ImageFormat.Jpeg)MsgBox ("El Cambio de formato fue Realizado")

El código nos dice que en nuestra unidad c tenemos una imagen con formato gif y haciendo clic la vamos a cambiar a jpg aunque no parezca muy interesante solo hecho este ejemplo para que tengan idea como se trabaja con imágenesPues el nombre de la imagen esta acaCon ese nombre se va a guardar

[email protected][email protected]

Page 109: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Solo Apagar la PC

Esta es la otra forma pero mas complicadaImportar Imports System.DiagnosticsBoton_clic escribir “Process.Start ("shutdown.exe", " -s -t 0 -f")”

Diseñar La siguiente interfaz

Declararemos una funcionPrivate Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)

Doble clic en el Botón

Dim i as Integeri = ExitWindowsEx (1, 0&) 'Apaga el equipo

Mostrando una Pagina de internet

Utilizaremos un Web Browser que se encuentra en la caja de herramientasDiseñar la siguiente interfaz

[email protected][email protected]

Page 110: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Nota si al insertar el web Browser ocupa todo el formulario simplemente vallan a su propiedad dock =”None”

El web browser tiene la propìedad Nvigate donde especificaremos donde queremos navegar

En el boton ir webrowser1.navigate(textbox1.text)Al hacer clic en el Botón nos llevara a la dirección que hallamos escrito en le textbox

En el Botón atrás

TryWebBrowser1.GoBack()Catch Er As ExceptionMsgBox(Er.Message, MsgBoxStyle.Information, "Información")End Try

En el Botón adelante

TryWebBrowser1.GoForward()Catch Er As ExceptionMsgBox(Er.Message.ToString, MsgBoxStyle.Information, "Información")End Try

En el evento KeyPress del textobx1

If Asc(e.KeyChar) = 13 ThenWebBrowser1.Navigate(TextBox1.Text)End If

Luego Presdionar “F5” O tal vez le agregamos otro boton o en un manin menu puede serPara poder ver las propiedades de la pagina web

[email protected][email protected]

Page 111: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Doble clic en el boton “Propiedades”

If Not WebBrowser1.Url Is Nothing ThenWebBrowser1.ShowPropertiesDialog()End If

Ejecutemos la aplicación

Yo no cuento con internet pero venaIngrese en el textbox1 www.google.comy hice clic en “ir”Luego en propiedades

[email protected][email protected]

Page 112: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Veremos otra opcion mas (Actualizar)Ya les dije si quieren lo pueden hacer ne un menu para que se vea mas presentable

Doble clic en el boton Actulizar

'volver a cargar la página'si textbox1 no está vacíoIf Not (TextBox1.Text = "") Or Not WebBrowser1.Url.Equals("about:blank") ThenWebBrowser1.Refresh()End If

Aplicando el LinkLabel

Que se encuentra en la barra de herramientas

[email protected][email protected]

Page 113: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la Siguiente Interfaz

En la propiedad text del linkLabel escribiremos www.google.com

Hacemos doble clic en el LinkLabelSystem.Diagnostics.Process.Start ("http://www.google.com")

Solo Números en un Textbox

Diseñas la siguiente interfaz

1) Lo podremos hacer de dos formas aplicando una funcion y codificando en En el evento KeyPress

2) La otra forma Solamente codificando en el evento KeyPress

Mostrando la Primera Forma

1) con funcion

Private Function soloNumeros(ByVal kcode As Int16) As Boolean If (kcode >= 48 And kcode <= 57) Or kcode = 8 Then Return False Else Return True End If End Function

En el evento KeyPress del Textbox1

e.Handled = soloNumeros(System.Convert.ToInt16(Asc(e.KeyChar)))

[email protected][email protected]

Page 114: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

2) Solo en el evento KeyPress

En el evento KeyPress del Textbox1

If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If

Solo Letras en un Textbox

Diseñar la Siguiente Interfaz

Codificando en el Evento Key Press del textbox

If e.KeyChar.IsLetter(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If

Tpis

Si queremos limpiar todo un grupo de textbox sin estas haciendo textbox1.cluear o textbox1.text =””No importa la cantidad de textbox que sean

[email protected][email protected]

Page 115: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñas la siguiente interfaz

El codigo lo pueden hacer en una sub rutina osea asiSub Limpiar Codigo codigo codigoEnd sub

y doble clic en el boton nombre de sub rutina “Limpiar”

o simplimente codificar en el boton

Codificando en este caso doble clic en el boton

Dim x As Object For Each x In Form.ActiveForm.Controls If TypeOf x Is TextBox Then x.text = "" End If Next

Si vallamos a escribir una contraseña no se debe mostras lo que vallamos a escribir en este caso iremos a la propiedad PasswordChar =* del textbox

Y si queremos agrandar el texbox su prpiedadMultilne=true

[email protected][email protected]

Page 116: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Empesaremos con Bases de DatosComo a algunas personas todavia les enseñan a utilizar access 2203 - 2007 con vb net veremos un poco de coneccion con access pero no explicare como crear una base de datos con access ni tabla eso ya deben de saber

Tambien conectaremos a sql server 2005 ahí si explicare la creacion de base de datos, tablas, tipos,store procedure,vistas,ect empesemos

Mostraremos el control Datagridview

Propiedades Principales

Name .. Especifica el nombre del controlDataSource.- Obtiene o establece el origen de datos para el que muestra datos la cuadraticaReadOnly.- Especifica si el control es de solo lecturaEnabled.- Habilida y deshabilita el controlCurrentCell.- Obtiene o establece la celda que tiene el foco . no esta disponible en tiempo de diseñoCurrentRowIndex.- Obtiene o establece el indice de la fila seleccionadaItem.- Obtiene o establcece el indice de la celda unbicada en la fila y la columna especificados.

Como vamos a trabajar con ms-access para poder traer la data hacia vb.netTendremos que importar el nombre OleDb se utiliza para el mismo sql,Erginw,etc)

Imports System.Data.OleDb

Coconiendo las clases mas Usadas

OleDbConnectionOleDbDataAdapterOleDbDataReaderOleDbCommandOleDbCommandBuilder

[email protected][email protected]

Page 117: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

OleDbConnectionRepresenta una conexion abierta con una base de datos de Access esta clase no se puede heredar

Propiedades Principales

ConnectionStringObtiene o establece la cadena de conexión utilizada para abiri una base de datos

DataBaseObtiene el nombre de la base de datos actual o de la que se va a utilizar una vez que se abre la coneccion

DataSourceObtiene el nombre de la instancia Access con la que se estabelce la conexión

Metodos Principales

ClaseCierra la conexión con la base de datos , este es el metodo recoomendado para cerrar conexiones abiertas

DisposeSobrecargado Libera los recursos Utilizados por Component.

OpenAbre una conexión de la base de datos con la configuracion de propiedades especificada en connectionString

Parámetro DescripciónProvider Establece o retorna el nombre del proveedor para la conexión.

Es usado solamente con objetos OlDbConnection.

TimeoutEs el lapso de tiempo de espera (en segundos) para una conexión a un servidor antes que genere una execion. El tiempo predeterminado es de 15 segundos

Inicial Catalog Es el nombre de la base de datos. Para OleDb

Server ó Data Source

Es el nombre del servidor Sql Server que se usara para abrir una conexión o el nombre del archivo de una base de datos de Microsoft Access.

User Id óUid

Es el nombre de usuario para inicio de sesión.

Password La contraseña de usuario para la cuenta Sql Sever

Integrated Security Este parámetro determina si es o no una conexión segura. Los valores posibles son True, False o SSPI (SSPI es equivalente a True)

[email protected][email protected]

Page 118: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

OleDbDataAdapter

Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar un DataSet y actualizar una base de datos de SQL Server. Esta clase no se puede heredar.

Propiedades Principales:

SelectCommandObtiene o establece una instrucción de para seleccionar registros en el origen de datos.DeleteCommandObtiene o establece una instrucción de para eliminar registros de un conjunto de datos.

InsertCommandObtiene o establece una instrucción de para insertar nuevos registros en el origen de datos.

UpdateCommandObtiene o establece una instrucción de para actualizar los registros del origen de datos.

Métodos Principales:

FillSobrecargado. Reemplazado. Agrega filas a DataSet o las actualiza para que coincidan con las filas del origen de datos.

UpdateSobrecargado. Llama a las instrucciones INSERT, UPDATE o DELETE respectivas para cada fila insertada, actualizada o eliminada en DataSet.

DisposeSobrecargado. Libera los recursos utilizados por Component.

Dataset Es un contenedro de tablas Nos va a permitir almacenar varias tablas Pero veamos ne el ejemplo

[email protected][email protected]

Page 119: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

OleDbDataReader

El objeto DataReader es un cursor de tipo forwar-only que captura una secuencia de filas. Cuando ejecuta un objeto command que devuelve un conjunto de filas, puede usar un DataReader para recoger el conjunto de filas.

El método ExecuteReader del objeto Command devuelve un objeto DataReader. Puede ejecutar cualquier sentencia Select o un Procedimiento Almacenado que contiene una sentencia Select.

El objeto DataReader proporciona consistentes métodos de tipos de datos para obtener el valor de una columna de la fila actual. También podrá obtener meta datos sobre las filas, tales como el nombre de la columna y su tipo de dato.

Cuando procesa un conjunto de resultados en un DataReader, la conexión asociada se mantiene ocupada hasta que se cierre el DataReader. Por esta razón, debería cerrar el DataReader tan pronto finalice el proceso con el conjunto de resultados.

Propiedades Principales:

ItemPropiedad que obtiene el valor de una columna con un nombre especifico o un índice. Debido a que el valor es retornado en su formato nativo, podría necesitar convertir el valor antes de utilizarlo en su código.

FieldCountObtiene el número de columnas de la fila actual.

RecordsAffectedObtiene el número de filas cambiadas, insertadas o eliminadas por la ejecución

Métodos Principales:

CloseCierra el objeto OleDbDataReader.

ReadMétodo usado para cargar la siguiente fila. Retorna Trae si existe una fila y False si llego al final de las filas.

GetXxxxEl objeto DataReader tiene implementado consistentes metodos que permite leer una columna u convertir su valor en un tipo de dato especifico. Por ejemplo GetDateTime, GetDouble, GetInt32, etc.

[email protected][email protected]

Page 120: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Utilice estos metodos cuando conosca el tipo de dato del conjunto de registros para minimizar el tiempo de conversión de tipos requerido por su código y aplicación.

OleDbCommand

Que se ejecuta en una base de datos de Access. Esta clase no se puede heredar.

Principales Propiedades:

CommandTextObtiene o establece el procedimiento almacenado o la instrucción que se ejecuta en el origen de datos.

ConnectionObtiene o establece el OleDbConnection que utiliza esta instancia de OleDbCommand.

Métodos Principales:

ExecuteReaderEjecuta un comando que retorna un conjunto de filas (DataReader).

ExecuteScalarEjecuta un comando que retorna un valor sencillo

ExecuteNonQueryEjecuta un comando que actualiza la base de datos o cambios a la estructura de la base de datos. Este método devuelve el número de filas afectadas.

Ahora Realizaremos una Conexión a una base de daos en Access Para esta Crear una Base de datos que se llame “Numero”Su extenciom de las Base de datos en Access es mdb Luego crearemos una tabla con el nombre “Datos” Agreguen dos campos Contactos y Números,En el campo Contactos Irán los nombres de sus amigos(a) y en el campo Numero Irán Números su numero telefónico y esa Base de datos la Guardan en la Unidad “C” de su disco duro

Diseñar la siguiente interfaz

Agregar un DatagridViewQue se enceuntra en la barra de Herramientas

[email protected][email protected]

Page 121: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Ojo debajo de try escribimos ds.clear esto quiere decir que estamos limpiando el dataset por que si no ponemos eso al hacer clic en mostrar contactos mas de una vez se va a llenar el datagridview se van a duplicar los datos

[email protected][email protected]

Si se dan cuenta estamos importando el names space imports system.data.oldb

Creamos una variable cn de tipo conexión, Provider viene hacer el proveedor de donde nosotros consumimos los datos en este caso es Access, data source ahí se escribe la ruta donde esta nuestra base de datos con su extensión Otra variable da de tipo oledbdataadapter ahí especificamos los campos que queremos que se muestren en nuestro datagridView si solo escribimos “select Contactos Form dato”, cn) solo se va a mostrar nuestro campo contactosSelect <campo1>, <campo2>, .etc., después del Form se escribe el nombre de nuestra tabla que en este caso viene hacer Datos cerramos las comillas cn por que por que cn esta nuestra conexión

Declaramos un ds as new dataset Doble clic en el BotónPonemos un try catch por si ocurre alguna excepción Da que es nuestro adaptador utilizamos su método fillVamos da.fill (ds,”com”) ese viene hacer un nombre de tu tabla virtual con el cual depuses lo llamaras com el data gris Por eso datagridview1.datasource = ds.tables (“com”)Como el dataset almacena varias tablas por eso ds.tables=nombre de tabla al que deseas llamarSi no le pones nombre da.fill (ds) tomar el valor inicial que es 0 Y lo invocaríamos así datagridview1.datasource=ds.tables(0)

Page 122: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Presionen “F5” y hagan clic en el boton

Podemos observar el nombre de nuestros campos con los registros guardadosSi no guardaste ni uno solo se mostraran los campos

Insertando Registros (Inser into, command)

Al ejemplo anterior le agregaremos un Botón y dos cajistas de textoTextbox1 propiedad name=txtnombreTextbox2 propiedad name=txtnumeroAsí debe quedar la interfaz

[email protected][email protected]

Page 123: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificamos en el boton Guardar

Try Dim cmd As New OleDbCommand("insert into datos (Contactos,Numeros) values('" & txtnombre.Text & "' , '" & txtnumero.Text & "')", cn) cn.Open() cmd.ExecuteNonQuery() MessageBox.Show("Contacto Agregado", "Registro Completado", MessageBoxButtons.OK) cn.Close() ds.Clear() da.Fill(ds, "guardados") DataGridView1.DataSource = ds.Tables("guardados") Catch ex As Exception MessageBox.Show(ex.Message) End Try

[email protected][email protected]

Después de insert into especificamos la tabla” datos” donde queremos insertar luego entre paréntesis especificamos los campos de la tabla después de valúes especificamos de donde queremos capturar los datos a guardar como es de un cajita de texto apostrofe ‘” & referencia & “ ‘ y se cierra con comillas y apostrofeLuego se ejecuta la consulta “ExecuteNonQuery” después mandamos un mensajito diciendo que si se guardaron los datos o no Luego cerramos la conexiónSi los dejamos hasta ahí va a guardar pero no se va a visualizar los datos en el datagridview1 Por eso volvemos a limpiar el ds y volvemos a adaptar el datagridview y cuando se guarden los datos se mostraran los datos guardados en el datagrid

Page 124: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Eliminando Registros (Delete, command)

A esa misma aplicación le agregaremos un Botón mas la interfaz deberá quedar de la siguiente manera

Codificando el Botón Eliminar TryDim cmd As New OleDbCommand( _"delete from datos where contactos = '" & txtnombre.Text & "'", cn) cn.Open() cmd.ExecuteNonQuery() MessageBox.Show("LOS DATOS FUERON ELIMINADOS", "ELIMINADOS", MessageBoxButtons.OK, MessageBoxIcon.Information) cn.Close() ds.Clear() da.Fill(ds, "eliminados") DataGridView1.DataSource = ds.Tables("eliminados") Catch ex As Exception MessageBox.Show(ex.Message) End Try

[email protected][email protected]

Después de la cláusula delete especificamos nuestra tabla después del where especificamos por que campo queremos eliminar nuestros datos pusimos contactos quiere decir que si queremos eliminar un registros en el txnombre tendremos que escribir el nombre y pulsar eliminar

Page 125: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Escribimos el Nombre a borrar en este caso “Mi Numero” y pulsamos clic en eliminar

[email protected][email protected]

Page 126: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Ahí acabaremos con Access las demás conexiones las veremos con sql espesemos

Comenzaremos con Sql Server 2005

[email protected][email protected]

Page 127: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

O también desde Ejecutar escribimos sqlwb

Hacemos clic en Connect

La interfaz que nos ofrece tu tipo de conexión será CASA-830E44C75F\SQLEXPRESS

[email protected][email protected]

Page 128: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Y si nos sale error al intentar conectar el sql entonces inicio / ejecutar /services.msc

Clic derecho Propiedades si esta en manual entonces cámbielo a automáticoVuelva hacer clic derecho y haga clic en iniciarY vuelva a conectar el sql

[email protected][email protected]

Page 129: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Introducción

El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datosNormalizado, utilizado por el motor de base de datos de Microsoft Jet. SQL se utilizaPara crear objetos QueryDef, como el argumento de origen del métodoOpenRecordSet y como la propiedad RecordSource del control de datos. También sePuede utilizar con el método Execute para crear y manipular directamente las basesDe datos Jet y crear consultas SQL de paso a través para manipular bases de datosRemotas cliente - servidor.

Componentes de sql

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funcionesDe agregado. Estos elementos se combinan en las instrucciones para crear,Actualizar y manipular las bases de datos.

Comandos

Existen dos tipos de comandos SQL:· Los DLL que permiten crear y definir nuevas bases de datos, campos eÍndices.· Los DML que permiten generar consultas para ordenar, filtrar y extraer datosDe la base de datos.

[email protected][email protected]

Page 130: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos queDesea seleccionar o manipular.

Operadores Lógicos

Operadores de Comparación

Funciones de Agregado

[email protected][email protected]

Page 131: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos deRegistros para devolver un único valor que se aplica a un grupo de registros.

CREATE DATABASE (Transact-SQL)

Crea una nueva base de datos y los archivos que se utilizan para almacenar la base de datos, crea una instantánea de base de datos, o adjunta una base de datos a partir de los archivos separados de una base de datos creada anteriormente.

Sintaxis:

CREATE DATABASE NombreBaseDatos[ ON [PRIMARYNAME = nombreArchivoLógico,FILENAME = 'nombreArchivoSO',SIZE = tamaño,MAXSIZE = { tamañoMáximo | UNLIMITED } ,FILEGROWTH = incrementoCrecimiento) [,…n]][ LOG ONNAME = nombreArchivoLógico,FILENAME = 'nombreArchivoSO',SIZE = tamaño,MAXSIZE = { tamañoMáximo | UNLIMITED } ,FILEGROWTH = incrementoCrecimiento) [,…n][COLLATE nombre_collation] [ FOR LOAD | FOR ATTACH ]

ARGUMENTOS:

[email protected][email protected]

Page 132: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

nombreBaseDatosEs el nombre de la nueva base de datos, deben ser únicos en un servidor y pueden tener hasta 128 caracteres, a menos que no se especifique ningún nombre lógico para el registro. Si no se especifica ningún nombre lógico de archivo de registro, SQL Server genera un nombre lógico al anexar un sufijo a nombreBaseDatos.

ONEspecifica que los archivos de disco utilizados para almacenar la parte de datos (Archivos de datos) se han definido explícitamente. La palabra clave va seguida de una lista delimitada por comas de elementos que definen los archivos de datos del grupo de archivos principal.

PRIMARYEspecifica que la lista de archivos está asociada al grupo principal. Este grupo contiene todas las tablas del sistema de base de datos. También contiene todos los objetos no asignados a los grupos de archivos de usuario. El primer archivo especificado pasa a ser el archivo principal, el cual contiene el inicio lógico de la base de datos y de las tablas del sistema. Una base de datos sólo puede tener un archivo principal. Si no se especificaPRIMARY, el primer archivo enumerado en la instrucción CREATE DATABASE se convierte en el archivo principal.

LOG ONEspecifica que los archivos de registro de la base de datos (archivos de registro) se han definido explícitamente. La palabra clave va seguida de una lista delimitada por comas la cual define las características de los archivos de registro. Si no se especifica LOGON, se crea automáticamente un único archivo de registro con un nombre generado por el sistema y un tamaño que es el 25% de la suma de los tamaños de todos los archivos de datos de la base de datos.

NAMEEspecifica el nombre lógico del archivo.No se requiere este parámetro cuando se especifica FOR ATTACH.Este nombre es el utilizado para referenciar al archivo en las sentencias del Transact-SQL que se ejecuten después.

FILENAMEEspecifica el nombre de archivo del sistema (archivo físico).Se debe especificar la ruta de acceso y nombre de archivo que el sistema operativo utiliza cuando crea la base de datos. La ruta de acceso debe especificar un directorio en el servidor sobre el que se instalo SQL Server.No se puede especificar un directorio en un sistema comprimido de archivos.

SIZEEspecifica el tamaño para el archivo. De no hacerlo SQL Server utiliza el tamaño del archivo principal de la base de datos model.Cuando este parámetro no es especificado para un archivo secundario o de registro SQLServer automáticamente le asigna 1 MB.El valor mínimo a asignar es de 512 KB. Si no se especifica tamaño, el valor predeterminado es 1 MB. El tamaño especificado para el archivo principal debe tener al menos el tamaño del archivo principal de la base de datos model.

[email protected][email protected]

Page 133: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

MAXSIZEEspecifica el tamaño máximo de crecimiento del archivo. Se pueden utilizar los sufijosKB y MB, el valor predeterminado es MB. Especifique un número entero; no incluya decimales. Si no se especifica, el archivo aumenta hasta que el disco esté lleno.

UNLIMITEDEspecifica que el archivo aumenta de tamaño hasta que el disco esté lleno.

FILEGROWTHEspecifica el incremento de crecimiento del archivo, este valor no puede exceder elvalor MAXSIZE. Emplee un número entero. Un valor 0 indica que no hay

crecimiento.El valor se puede especificar en MB, KB o %, el valor predeterminado es MB.

Cuandose especifica %, el tamaño de incremento de crecimiento es el porcentaje

especificado del tamaño del archivo en el momento en que tiene lugar el incremento. De no emplear

FILEGROWTH, el valor predeterminado es 10% y el valor mínimo es 64 KB. El tamaño especificado se redondea al múltiplo de 64 KB más cercano.

ObservacionesEmplee CREATE DATABASE para crear una base de datos y los archivos que

almacenan ésta. SQL Server implementa CREATE DATABASE en dos pasos:

SQL Server utiliza una copia de model para inicializar la base de datos y sus metadatos.

SQL Server rellena el resto de la base de datos con páginas vacías, excepto las páginas que tengan datos internos que registren cómo se emplea el espacio en la base de datos.

Cualquier objeto definido por el usuario en model se copiará a todas las bases de datos recién creadas.

Cada base de datos nueva hereda los valores opcionales de la base de datos model (a menos que se especifique FOR ATTACH).

En un servidor se puede especificar un máximo de 32,767 bases de datos.

Cuando específica una instrucción CREATE DATABASE nombreBaseDatos sin parámetros adicionales, la base de datos se crea con el mismo tamaño que model.

Cada base de datos tiene un propietario con capacidad para realizar actividades especiales. El propietario es el usuario que crea la base de datos, este propietario se puede cambiar mediante sp_changedbowner.

ALTERACIÓN DE UNA BASE DE DATOS

ALTER DATABASE (Transact-SQL) Modifica una base de datos o los archivos y grupos de archivos asociados a la base de datos. Agrega o quita archivos y grupos de archivos en una base de datos, cambia los

[email protected][email protected]

Page 134: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

atributos de una base de datos o de sus archivos y grupos de archivos, cambia la intercalación de base de datos y establece las opciones de base de datos.

SintaxisALTER DATABASE baseDeDatos { ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP NombreGrupoArchivos ] | ADD LOG FILE < filespec > [ ,...n ] | REMOVE FILE NombreArchivoLogico | ADD FILEGROUP NombreGrupoArchivos | REMOVE FILEGROUP NombreGrupoArchivos | MODIFY FILE < filespec > | MODIFY FILEGROUP NombreGrupoArchivos PropiedadGrupoArchivos}

< filespec > =( NAME = ‘NombreArchivoLogico’     [ , FILENAME = 'NombreArchivoSO' ]     [ , SIZE = Tamaño ]     [ , MAXSIZE = { TamañoArchivo | UNLIMITED } ]     [ , FILEGROWTH = IncrementoCrecimiento ] )

ARGUMENTOS:baseDeDatosEs el nombre de la base de datos cambiada.

ADD FILEEspecifica que se está agregando un archivo.

TO FILEGROUPEspecifica el grupo de archivos al que se agrega el archivo especificado.

NombreGrupoArchivosEs el nombre del grupo de archivos al que se va a agregar el archivo especificado.

ADD LOG FILEEspecifica que se agrega un archivo de registro a la base de datos indicada.

REMOVE FILEQuita la descripción del archivo de las tablas del sistema de base de datos y elimina el archivo físico. El archivo no puede eliminarse a menos que esté vacío.

ADD FILEGROUPEspecifica que se va a agregar un grupo de archivos.

NombreGrupoArchivosEs el nombre del grupo de archivos que se va a agregar o quitar.

REMOVE FILEGROUPQuita el grupo de archivos de la base de datos y elimina todos los archivos del grupo de archivos. El grupo de archivos no puede eliminarse a menos que esté vacío.

[email protected][email protected]

Page 135: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

MODIFY FILEEspecifica el archivo determinado que se debe modificar, incluidas las opciones FILENAME, SIZE, FILEGROWTH y MAXSIZE. Sólo se puede cambiar una de estas propiedades a la vez.

ELIMINAR UNA BASE DE DATOS

DROP DATABASE (Transact-SQL)Quita una o más bases de datos de Microsoft® SQL Server™. Al quitar una base de datos se eliminan la base de datos y los archivos de disco que utiliza.

Sintaxis:

DROP DATABASE database_name [ ,...n ]

Argumentosdatabase_nameEspecifica el nombre de la base de datos que se va a quitar. Ejecute sp_helpdb desde la base de datos master para ver una lista de bases de datos.

ObservacionesEl contexto de base de datos de la conexión debe estar en la base de datos master para que se pueda utilizar DROP DATABASE.DROP DATABASE quita las bases de datos dañadas marcadas como sospechosas y quita la base de datos especificada.

PermisosPara ejecutar DROP DATABASE, el usuario debe tener, como mínimo, el permiso CONTROL en la base de datos.

SQL-SERVER contiene procedimientos almacenados que nos permiten interactuar mostrar informaciones diversas de las bases de datos que se encuentran instaladas; algunos de estos son:

sp_helpdbPresenta información acerca de una base de datos especificada o de todas las bases de datos.

sp_spaceusedMuestra un informe acerca del espacio utilizado en una base de datos.

sp_helpfilegroup Muestra un informe de los grupos de archivos de una base de datos.

sp_helpfileMuestra un informe de los archivos de la base de datos.

Crear, Alterar, Eliminar una TABLA

[email protected][email protected]

Filas o Registros

Columnas o Campos

Page 136: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Las tablas son objetos de la BD que contienen todos sus datos. En las tablas, los datos se organizan con arreglo a un formato de filas y columnas, similar al de una hoja de cálculo. Cada fila representa a un registro único, y cada columna representa a un campo dentro de un registro.Como cada columna representa un atributo de un objeto, los datos de cada ocurrencia de la columna son similares. Una de las propiedades de las columnas es su tipo de datos, que define el tipo de datos que cada columna puede almacenar.

Tablas del UsuarioPermanentesSon las tablas donde se almacena la información que los usuarios utilizan para sus operaciones. Esta información existirá hasta que se elimine explícitamente.

TemporalesEstas son tablas similares a las permanentes que se graban en tempdb, y son eliminadas automáticamente cuando ya no son usadas.

Hay dos tipos de tablas temporales, locales y globales, difieren una de la otra en sus nombres, su visibilidad y su ámbito de vida.

Tablas Temporales Locales. El primer carácter del nombre de #, su visibilidad es solamente para la conexión actual del usuario y son eliminadas cuando el usuario se desconecta.

Tablas Temporales Globales. Su nombre comienza con ##, su visibilidad es para cualquier usuario, y son eliminadas luego que todos los usuarios que la referencian se desconectan del SQL Server.

Consideraciones al crear tablas

Billones de tablas por base de datos 1024 columnas por tabla 8060 es el tamaño máximo de registro (sin considerar datos image, text y ntext) Al momento de definir una columna se puede especificar si la columna soporta

o no valores NULL.

Tipos de Datos de SQL Server 2005En Microsoft® SQL Server™, cada columna, variable local, expresión y parámetro dispone de un tipo de datos relacionado, que es un atributo que especifica el tipo de datos (integer, character, money, etc) que el objeto puede contener. SQL Server suministra un conjunto de tipos de datos del sistema que define todos los tipos de datos que pueden utilizarse con SQL Server.

[email protected][email protected]

Page 137: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

También se pueden utilizar tipos de datos definidos por el usuario, que son en realidad alias de los tipos de datos suministrados por el sistema.

Categoría Descripción Tipo de Dato

Descripción

Binario

Almacenan cadenas de bits. La data consiste de números hexadecimales.Por ejemplo el decimal 245 es F5 en hexadecimal.

binary La data debe tener una longitud fija (hasta 8 KB).

varbinary

Los datos pueden variar en el número de dígitos hexadecimales (hasta 8 KB).

imageLa data puede tener una longitud variable y exceder los 8Kb.

Caracter

Consisten de una combinación de letras, símbolos y números. Por ejemplo las combinaciones "John928" y "(0*&(%B99nh jkJ".

charLos datos deben tener una longitud fija (Hasta 8 KB).

varcharLa data puede variar en el número de caracteres (Hasta 8 KB.)

textLos datos pueden ser caracteres ASCII que excedan los 8 KB.

Fecha yHora

Consisten en combinaciones válidas de estos datos.No puede separar en tipos distintos el almacenamiento de sólo fechas o sólo horas.

Datetime

Fechas en el rango 01 Ene 1753 hasta el 31 Dic 9999 (Se requiere 8 bytes Fecha y tes por valor).

smalldatetime

Fechas en el rango 01 Ene 1900 hasta 06 Jun 2079 (Se requiere requires 4 bytes por valor).

Decimal

Consisten en información que almacena información significativa después del punto decimal.

decimal

Los datos pueden tener hasta 38 dígitos, todos los cuales podrían estar a la derecha del punto decimal. Este tipo de dato guarda un valor exacto del número y no una aproximación.

numeric

Para SQL Server, el tipo de dato numeric es equivalente al tipo de datos decimal.

PuntoFlotante

Números aproximados(Punto flotante). float

Datos en el rango de 1.79E + Punto 308 hasta 1.79E + 308.

real Datos en el rango de 3.40E + 38 hasta 3.40E + 38.

[email protected][email protected]

Page 138: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Enteros

Consiste en información numérica positiva o negativa como por ejemplo –5, 0 y 25.

bigint

Datos en el rango de 2^63 (– 9223372036854775808) hasta 2^63–1 (9223372036854775807). Se requieren de 8 bytes para almacenar estos valores.

int

Datos en el rango de - 2,147,483,648 hasta 2,147,483,647. Se requieren de 4 bytes para almacenar estos valores.

smallint

Datos en el rango de –32,768 hasta 32,767. Se requieren 2 bytes por cada valor de este tipo.

tinyintDatos entre 0 y 255, se requiere de 1 byte.

Monetario

Cantidades monetarias positivas o negativas.

money

Datos monetarios entre – 922,337,203,685,477.5808 y +922,337,203,685,477.5807 (Se requieren 8 bytes por valor)

smallmoney

Datos monetarios entre – 214,748.3648 y 214,748.3647 (Se requieren de 4 bytes por valor)

Especiales Consisten en información que no recae en ninguna de las categorías anteriormente mencionadas.

bit

Datos que consisten de 1 o 0. Emplear este tipo de dato para representar TRUE o FALSE ó YES o NO.

cursor

Este tipo de dato es empleado por variables o procedimientos almacenados que emplean parámetros OUTPUT referenciados a un cursor.

SQL_variant

Almacena varios tipos de datos, a excepción de text, ntext, timestamp, image y sql_variant.

table Almacena un resultado de una consulta para su posterior procesamiento. Se puede emplear para definir variables locales de tipo table o para retornar los valores devueltos por una función del usuario

[email protected][email protected]

Page 139: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Unicode

Al emplear este tipo de datos se puede almacenar sobre una columna valores que incluyan este conjunto de caracteres.Hay que recordar que los datos Unicode emplean dos bytes por cada carácter a representar.

ncharDatos con longitud fija, hasta 4000 caracteres Unicode.

nvarcharDatos que pueden variar, hasta 4000 caracteres Unicode.

ntext

Datos que exceden los 4000 caracteres Unicode.

Creación de Tabla

CREATE TABLE (T-SQL)El comando CREATE TABLE permite crear una nueva tabla.

Sintaxis:CREATE TABLE[nombreBaseDatos[Propietario]|propietario]nombreTabla({<definicionColumna>|nombreColumna ASexpresionColumnaCalculada} [,…n]

<definicionColumna>::={nombreColumnatipoDatos}[[DEFAULT expresión constante]|[IDENTITY [(inicialización, incremento)]]])

Argumentos:nombreBaseDatos: El nombre de la BD donde se crea la tabla, debe especificar el nombre de una BD existente, Sino se especifica la BD, la tabla se creara en la BD Actual.

Propietario: Nombre del ID. De usuario que es propietario de la nueva tabla, es de forma predeterminada, el Id. De usuario asociado con el inicio de sesión.

NombreTabla: Es el nombre de la nueva tabla. Los nombres de tablas se deben ajustar a las reglas para los identificadores. La combinación de usuario.nombreTabla debe ser única en la base de datos. nombreTabla puede contener un máximo de 128 caracteres, excepto para los nombres de tablas temporales locales (nombres precedidos con un signo numérico simple (#)) que no pueden exceder de 116 caracteres.

[email protected][email protected]

Page 140: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

NombreColumna: Es el nombre de una columna de la tabla. Los nombres de columna deben cumplir las reglas de los identificadores y deben ser únicos en la tabla

ExpresionColumnaCalculada: Define el valor de una columna calculada, es una columna virtual no almacenada físicamente en la tabla.

TipoDato: Especifica el tipo de datos de la columna. Se permiten los tipos de datos del sistema o definidos por el usuario.

DEFAULT: Especifica el valor suministrado para la columna cuando no se ha especificado explícitamente un valor durante la inserción.

IDENTITY: Indica que la nueva columna es una columna identidad. Cuando se agrega una nueva fila a la tabla, Microsoft® SQL Server™ proporciona un valor incremental y único a la columna. Las columnas de identidad se utilizan normalmente junto con restricciones PRIMARY KEY para que actúen como identificador exclusivo de fila para la tabla. La propiedad IDENTITY puede asignarse a las columnas smallint, int, bigint, decimal(p,0) o numeric(p,0). Sólo se puede crear una columna de identidad por tabla.

Inicialización: Es el valor que se utiliza para la primera fila cargada en la tabla.

Incremento: Se trata de un valor incremental que se agrega al valor de identidad de la anterior fila cargada.

Modificar una Tabla

ALTER TABLE (T-SQL):

El comando ALTER TABLE permite modificar una definición de tabla al alterar, agregar o quitar columnas y restricciones, o al deshabilitar o habilitar restricciones y desencadenadores.

Sintaxis:

ALTER TABLE tabla { [ ALTER COLUMN nombreColumna     { nuevoTipoDatos [ ( precision [ , escala] ) ]         [ NULL | NOT NULL ] }

[email protected][email protected]

Page 141: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

    ]     | ADD         { [ < definicionColumna > ]         | nombreColumna AS exprecionCalculada         } [ ,...n ]     | [ WITH CHECK | WITH NOCHECK ] ADD         { < restriccionTabla> } [ ,...n ] DROP{    [ CONSTRAINT] nombreRestriccion |COLUMN nombrecolumna}[ ,...n ]

< definicionColumna > ::=     { nombreColumna TipoDatos }     [ [ DEFAULT exprecionConstante ]     | [ IDENTITY [ ( inicializacion, incremento )]         ] < restriccionColumna > ::=     [ CONSTRAINT nombreRestriccion ]     { [ NULL | NOT NULL ]         | [ { PRIMARY KEY | UNIQUE }

Eliminar la Tabla

DROP TABLE (T-SQL)

Quita una definición de tabla y todos los datos, índices, desencadenadores, restricciones y especificaciones de permisos de la tabla. Las vistas o procedimientos almacenados que hagan referencia a la tabla quitada se deben quitar explícitamente con la instrucción DROP VIEW o DROP PROCEDURE.

SintaxisDROP TABLE nombreTabla

ArgumentosNombreTabla: Es el nombre de la tabla que se va a quitar.

Ejm:USE BdEjemploGODROP TABLE audit._Usuario

Crear una Base de Datos Con el nombre “Muestra”

Para ello debemos realizar una nueva consulta hacemos clic en New Query

[email protected][email protected]

Page 142: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crear una tabla ClientesCon los siguientes campos (Codigo, Apellidos, Nombres, Direccion)

Luego presionar f5 y se mostraran los campos “go” es un separador de bloque de códigoLa novedad es la numeración que nos da sql Server 2005

Para activar la numeración

[email protected][email protected]

Page 143: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Activar la opción Line Numbers

Insertando Registros a nuestra Tabla Clientes

Cuando se inserten numero solamente se escribirán pero cuando sea texto Irán entre apostrofeSelect * Form clientes (solo para demostración lo correcto es )Select codigo, apellidos, nombres, direccion Form clientesEscribir todos los campos y el resultado es el mismo

Recuerden que este manual no es para sql luego veremos como crear procedimientos almacenados y ejecutarlos desde vb net no crean que con este manual van a aprender sql completo solo implementación con visual

Agregar4 registros mas para tener un total de 5 Registros

[email protected][email protected]

Page 144: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Mostrando la tabla clientes en visual

Diseñar la siguiente interfaz

[email protected][email protected]

Page 145: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Importamos Nombre de nuestro servidor Imports System.Data.SqlClientPublic cn As New SqlConnection("Server=CASA-830E44C75F\SQLEXPRESS

Referenciamos el nombre de nuestra base de datos

;initial catalog=muestra;integrated security=true")Dim ds As New DataSet

En el evento load del formulario

Dim da As New SqlDataAdapter("select codigo,Apellidos,nombres,direccion from clientes", cn)da.Fill(ds, "clie")Me.DataGridView1.DataSource = ds.Tables("clie")

Si se dan cuenta viene hacer lo mismo que Access pero solo estamos cambiando sqldatadapter (sql)

Agregando registros Diseñar la Siguiente interfaz

[email protected][email protected]

Page 146: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Doble clic en el Botón Agregar

TryDim cmd As New SqlCommand("insert into clientes (codigo,apellidos,nombres,direccion) values('" & txtcodigo.Text & "' , '" & txtapellidos.Text & "', '" & txtnombres.Text & "' , '" & txtdireccion.Text & "')", cn) cn.Open() cmd.ExecuteNonQuery()MessageBox.Show("Contacto Agregado", "Registro Completado", MessageBoxButtons.OK) cn.Close() ds.Clear() da.Fill(ds, "guardados") DataGridView1.DataSource = ds.Tables("guardados")Catch ex As Exception MessageBox.Show(ex.Message)End Try

El proceso para eliminar es el mismo que en Access solo cambien lo que dice oldb por sql

Veamos como enlazar el combobox

PripoedadesValuMember = es el valor que se guarda DisplayMember = se va a escribir el campo que se quiere mostrar en el comboDatasource = nos permite enlazar a los datos a mostrar

da.Fill(ds, "mostrar")ComboBox1.DataSource = ds.Tables("mostrar")ComboBox1.DisplayMember = ds.Tables("mostrar").Columns(1).ColumnNameComboBox1.ValueMember = "direccion"

Nuestro dataset es “Mostar” vamos a mostrar la columna (1) si se empieza a contar desde 0 código, apellidos, nombres, dirección, entornes se va a mostrar los apellidos y el campo a guardar es la dirección

[email protected][email protected]

Page 147: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el Botón guardarComboBox1.DataSource = ds.Tables("guardados")

Enlazamos al combo al daset que tiene los registros guardados por el boton

Guardando

Viendo el ValuMemberAgregamos un textbox solo para demostración En el código estábamos guardando la dirección entornes cuando seleccionemos un apellido la dirección se debe mostrar en el textbox1

Codificar en el combobox evento SelectedIndexChanged

TextBox1.Text = ComboBox1.SelectedValue.ToString

[email protected][email protected]

Page 148: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el evento Load del formulario, escriban lo siguiente

Pongan como comentario el código anterior del combobox y escriban este

ComboBox1.DataSource = ds.Tables("mostrar")ComboBox1.DisplayMember = "Apellidos"ComboBox1.ValueMember = "Apellidos"

Codificar en el combobox evento SelectedIndexChangedEl código anterior pónganlo como comentario

Tryda.SelectCommand.CommandText = "select * from clientes where Apellidos= '" & ComboBox1.SelectedValue & "'"If ds.Tables.Contains("buscados") Thends.Tables("buscados").Clear()cn.Close()End Ifda.Fill(ds, "buscados")Me.DataGridView1.DataSource = ds.Tables("buscados")Catch ex As ExceptionEnd Try

Ahora enlazaremos un ListBoxDiseñar la siguiente interfaz

[email protected][email protected]

Page 149: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

PripoedadesValuMember = es el valor que se guarda DisplayMember = se va a escribir el campo que se quiere mostrar en el comboDatasource = nos permite enlazar a los datos a mostrar

Imports System.Data.SqlClient

Public cn As New SqlConnection("Server=CASA-830E44C75F\SQLEXPRESS ;initial catalog=muestra;integrated security=true")Dim ds As New DataSet

En el evento load del formularioDim da As New SqlDataAdapter("select Nombres from clientes", cn)da.Fill(ds, "Nombres")ListBox1.DisplayMember = "Nombres"ListBox1.ValueMember = "Apellidos"ListBox1.DataSource = ds.Tables("Nombres")

[email protected][email protected]

Page 150: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Procedimientos almacenados

Colección precompilada de instrucciones Transact-SQL que se almacenan bajo un nombre y se procesan como unidad. SQL Server proporciona procedimientos almacenados para la administración de SQL Server y para presentar información sobre las bases de datos y los usuarios. Los procedimientos almacenados que proporciona SQL Server se denominan procedimientos almacenados de sistema.

Los procedimientos almacenados de SQL Server son similares a los procedimientos de otros lenguajes de programación en el sentido de que pueden:

Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al lote o al procedimiento que realiza la llamada.

Contener instrucciones de programación que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos.

Devolver un valor de estado a un lote o a un procedimiento que realiza una llamada para indicar si la operación se ha realizado correctamente o ha habido un error (y el motivo del mismo).

Puede utilizar la instrucción EXECUTE de Transact-SQL para ejecutar un procedimiento almacenado.

En SQL Server existen 5 tipos de procedimientos almacenados:

Procedimientos del sistema, son los que se encuentran almacenados en la base de datos master y algunas en las bases de datos de usuario, estos procedimientos almacenados brindan información acerca de los datos y características del servidor. En el nombre usan como prefijo sp_.

Procedimientos locales, son los procedimientos almacenados en una base de datos.

Procedimientos temporales, son procedimientos locales y sus nombres empiezan con los prefijos # o ##, dependiendo si se desea que sea un procedimiento global a todas las conexiones o local a la conexión que lo define.

Procedimientos remotos, son procedimientos almacenados en servidores distribuidos.

Procedimientos extendidos, son aquellos que nos permiten aprovechar las funcionalidades de otras librerías externas a SQL Server. Estos procedimientos usan el prefijo xp_ y se encuentran en la base de datos master.

[email protected][email protected]

Page 151: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Utilizar procedimientos almacenados en SQL Server presenta las siguientes ventajas:

Permiten una programación modular.

Puede crear el procedimiento una vez, almacenarlo en la base de datos y llamarlo desde el programa tantas veces como desee. Un especialista en programación de bases de datos puede crear procedimientos almacenados, que luego será posible modificar independientemente del código fuente del programa.

Permiten una ejecución más rápida.

En los casos en que la operación requiere una gran cantidad de código Transact-SQL o se realiza repetidas veces, los procedimientos almacenados pueden ser más rápidos que los lotes de código Transact-SQL. Los procedimientos son analizados y optimizados en el momento de su creación, y es posible utilizar una versión del procedimiento que se encuentra en la memoria después de haberlo ejecutado una primera vez.

Pueden reducir el tráfico de red.

Una operación que necesite centenares de líneas de código Transact-SQL puede realizarse mediante una sola instrucción que ejecute el código en un procedimiento, en vez de enviar cientos de líneas de código por la red.

Pueden utilizarse como mecanismo de seguridad.

Es posible conceder permisos a los usuarios para ejecutar un procedimiento almacenado, incluso si no cuentan con permiso para ejecutar directamente las instrucciones del procedimiento.

Crear un Procedimiento Almacenado

CREATE PROCEDURECrea un procedimiento almacenado, que es una colección guardada de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario.

SintaxisCREATE PROC [ EDURE ] procedure_name    [ { @parameter data_type } [ OUTPUT ]     ] AS sql_statement [ ...n ]

Argumentosprocedure_name

[email protected][email protected]

Page 152: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Es el nombre del nuevo procedimiento almacenado. Los nombres de procedimiento deben seguir las reglas de los identificadores y deben ser únicos en la base de datos y para su propietario.

@parameterEs un parámetro del procedimiento. En una instrucción CREATE PROCEDURE se pueden declarar uno o más parámetros. El usuario debe proporcionar el valor de cada parámetro declarado cuando se ejecuta el procedimiento, a menos que se haya definido un valor predeterminado para el parámetro. Un procedimiento almacenado puede tener un máximo de 2.100 parámetros.Especifique un nombre de parámetro con un signo (@) como el primer carácter.

data_typeEs el tipo de datos del parámetro. Todos los tipos de datos, incluidos text, ntext e image, se pueden utilizar como parámetros de un procedimiento almacenado.

OUTPUTIndica que se trata de un parámetro de retorno. El valor de esta opción puede devolverse a EXEC[UTE]. Utilice los parámetros OUTPUT para devolver información al procedimiento que llama. Los parámetros text, ntext e image se pueden utilizar como parámetros OUTPUT. Un parámetro de salida que utilice la palabra clave OUTPUT puede ser un marcador de posición de cursor.

ASSon las acciones que va a llevar a cabo el procedimiento.

sql_statementEs cualquier número y tipo de instrucciones Transact-SQL que se incluirán en el procedimiento.

[email protected][email protected]

Page 153: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

ENTRE ESTOS PROCEDIMIENTOS ALMACENADOS CREADOS POR EL USUARIO TENEMOS:

1.- Procedimiento que no recibe ni devuelve Parámetro:CREATE PROCEDURE nombre_procASSentencia_sql

2.- Procedimiento que recibe parámetros:CREATE PROCEDURE nombre_proc

@parametro1 tipo_dato[=Valor],@parametro2 tipo_dato[=Valor],…

ASSentencia_sql

3.- Procedimiento que recibe y entrega parámetros:CREATE PROCEDURE nombre_proc

@parametro1 tipo_dato[=Valor],@parametro2 tipo_dato[=Valor]OUTPUT ,…

ASSentencia_sql

Ejemplo:

Use AlmacenGOCREATE PROCEDURE usp_ConsultaClientesASSELECT * FROM Cliente

Modificar un Procedimiento Almacenado

ALTER PROCEDUREModifica un procedimiento creado anteriormente por la ejecución de la instrucción CREATE PROCEDURE, sin cambiar los permisos y sin que afecte a ningún procedimiento almacenado ni desencadenador dependientes.

[email protected][email protected]

Page 154: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

EjemploALTER PROCEDURE au_info_allASSELECT au_lname, au_fname, FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idGO

Eliminar un Procedimiento Almacenado

DROP PROCEDUREQuita uno o más procedimientos almacenados o grupos de procedimientos de la base de datos actual.

EjemploEste ejemplo quita el procedimiento almacenado byroyalty (de la base de datos actual).

DROP PROCEDURE byroyalty

Ejecutar un procedimiento almacenado que muestre todos los clientes (sin parámetros)

[email protected][email protected]

Nombre del store

Page 155: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Diseñar la siguiente interfaz

Imports System.Data.SqlClientPublic cn As New SqlConnection("Server=CASA-830E44C75F\SQLEXPRESS ;initial catalog=muestra;integrated security=true")

Doble clic en el Botón Mostrar Nombre del storeTry Dim da As New SqlDataAdapter("usp_Mostrar_clientes", cn) da.SelectCommand.CommandType = CommandType.StoredProcedure

Dim ds As New DataSet da.Fill(ds, "clietodos") DataGridView1.DataSource = ds.Tables("clietodos")Catch ex As Exception MessageBox.Show(ex.Message)End Try

[email protected][email protected]

Indicamos el tipo y el comando que se va a ejecutar

Page 156: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crearemos procedimientos Almacenados con Parámetros

Crearemos el store procedure

Para la ejecución del store hay dos formas Exec usp_guasrda_clientes 9,’pareja’,’luis’,’lurin’

O simplemente el nombre y sus registros s guardarusp_guasrda_clientes 9,’pareja’,’luis’,’lurin’

O siendo mas especificoexec usp_guarda_clientes @codigo =9,@apellidos='Carvejo quispe',@nombres='Carlos Joel',@direccion='san martin de porres'

Diseñaer la siguiente internaz

[email protected][email protected]

Son los parámetros que van a tener su mismo valor que los campos de la tabla, los parámetros se inician con un @

Le pasamos los campos pero evaluamos los parámetros después de valúes

Ejecutamos el store procedure

De esta forma importa el orden de inserción de registros

De esta forma no importa el orden por que estamos especificando parámetro y valor

Page 157: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Imports System.Data.SqlClientPublic cn As New SqlConnection("Server=CASA-830E44C75F\SQLEXPRESS ;initial catalog=muestra;integrated security=true")

Doble clic en el Botón guardar

Try Dim cmd As New SqlCommand("usp_guarda_clientes", cn)cmd.CommandType = CommandType.StoredProcedureWith cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Char, 2)).Value = txtcodigo.Text

.Add(New SqlParameter("@apellidos", SqlDbType.VarChar, 25)).Value = txtapellido.Text

.Add(New SqlParameter("nombres", SqlDbType.VarChar, 25)).Value = txtnombre.Text

.Add(New SqlParameter("@direccion", SqlDbType.VarChar, 35)).Value = txtdireccion.Text

End With cn.Open() cmd.ExecuteNonQuery() MessageBox.Show("Clientes Guardado Ok", "Guardar", MessageBoxButtons.OK)

Dim da As New SqlDataAdapter("usp_Mostrar_clientes", cn)Dim ds As New DataSetda.Fill(ds, "Guardados")DataGridView1.DataSource = ds.Tables("Guardados")Catch ex As Exception MessageBox.Show(ex.Message, ex.Source)Finally cn.Close()End Try

[email protected][email protected]

Nuestra command que es representado por “cmd” esta ejecutando nuestro storeLuego un with cm.parameretes estamos indicando que se van a ejecutar parámetros.Add (new sqlparameter “se crea una instancia” luego se escriben los parámetros de tu store con su tipo y se evalúa con .valué va hacer = destino de donde vamos a guardar en este caso nuestras cajitas de texo, estamos utilizando el otro store “usp_Mostrar_clientes para llenar el datagrid”

Page 158: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crearemos procedimientos Almacenados (Eliminar)

Crearemos el store procedure

Eliminando

[email protected][email protected]

Page 159: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Doble clic en el Botón Eliminar

Try Dim cmd As New SqlCommand("usp_elimina_cliente", cn) cmd.CommandType = CommandType.StoredProcedure With cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Char, 2)).Value = txtcodigo.Text End With cn.Open() cmd.ExecuteNonQuery()MessageBox.Show("Cliente Borrado", "Borrar", MessageBoxButtons.OK) Dim da As New SqlDataAdapter("usp_Mostrar_clientes", cn) da.Fill(ds, "eliminados") DataGridView1.DataSource = ds.Tables("eliminados") Catch ex As Exception MessageBox.Show(ex.Message, ex.Source) Finally cn.Close() End Try

Mostrando conexiones con clases

Agregaremos una clase y escribir el nombre “operaciones”Y un formulario

[email protected][email protected]

Page 160: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Nos mostrara la siguiente ventana y en el explorador de formularios se agregara nuestra clase operaciones

ImportAmos en names space Y nuestra cadena de conexion

Imports System.Data.SqlClientPrivate cn As New SqlConnection("Server =.; initial catalog = muestra; integrated security = true")

Deberá quedar de la Siguiente manera ´

Imports System.Data.SqlClientPublic Class operacionesPrivate cn As New SqlConnection("Server =.; initial catalog = muestra; integrated security = true")

Se acuerdan del código anterior que codificábamos Dentro de los botones pues ahora vamos a codificar Dentro de la clase operaciones así desde el Botón solo llamaremos a nuestra clase

Para esto crearemos una funcion Utilizaremos nuestro store usp_Mostrar_clientes

Diseñar la siguiente interfaz

[email protected][email protected]

Page 161: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Codificaremos en nuestra clase operaciones

Crearemos nuestra funcion

Public Function getMostrarClientes() As DataTable Try Dim da As New SqlDataAdapter("usp_Mostrar_clientes", cn) da.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New DataSet da.Fill(ds) Return ds.Tables(0) Catch ex As Exception Throw ex End Try End Function

Codificando en el formularioCrear una instancia a nivel de formulario tendremos que instanciar nuestra clase

Dim obj As New operaciones

Declaramos una variable “obj” y la instanciamos a nuestra clase “operaciones”

Doble clic en el Botón “Mostrar Todos los Clientes”

TryDataGridView1.DataSource = obj.getMostrarClientesCatch ex As ExceptionMessageBox.Show(ex.Message, ex.Source)End Try

Estamos enlazando con nuestra variable obj.getMosrarClientesY el nombre de nuestra funcionPor que Get<Nombre funcion>Es un estándar de nombre de funciones para poder encontrarlos mas rápido en la compilación y al ejecutarse

[email protected][email protected]

Es de tipo data table por que los que no devuelve es una tabla y retornamos una tabla (dataset)

Como es una funcion nos pide retornar algo (un objeto de tipo datatable (dataset)

Estamos dentro de una clase no podemos mandar mensajes “throw ex” manda el error a quien lo genere

Nombre de funcion

Page 162: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Ejecutando nuestra aplicación

Guardando

Diseñar la siguiente interfaz

[email protected][email protected]

Page 163: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Creamos otro funcion Lo único nuevo es las variables declaradas dentro de la funcion (codclie, apeclie, nomclie, dirclie)Solo están tomando el valor de nuestros parámetros

Public Function getclientesguardados(ByVal codclie As String, ByVal apeclie As String, ByVal nomclie As String, ByVal dirclie As String) As String Try Dim cmd As New SqlCommand("usp_guarda_clientes", cn) cmd.CommandType = CommandType.StoredProcedurecmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.NChar, 8)).Value = codclie

cmd.Parameters.Add(New SqlParameter("@apellidos", SqlDbType.NChar, 30)).Value = nomclie

cmd.Parameters.Add(New SqlParameter("@nombres", SqlDbType.NChar, 30)).Value = apeclie

cmd.Parameters.Add(New SqlParameter("@direccion", SqlDbType.NChar, 30)).Value = dirclie

cn.Open() cmd.ExecuteNonQuery() Dim codigo As String codigo = cmd.Parameters("@codigo").Value cn.Close() Return codigo Catch ex As Exception Throw ex Finally If cn.State = ConnectionState.Open Then cn.Close() End If End Try End Function

En el Botón codificaremos

TryMe.TextBox1.Text = obj.getclientesguardados(Me.TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text)

Aca estamos llamando a nuestra funcion getMostrarClientes para que nos muestre los clientes que acabamos de guardar

Me.DataGridView1.DataSource = obj.getMostrarClientesMessageBox.Show("Ok")Catch ex As ExceptionMessageBox.Show(ex.Message)End Try

[email protected][email protected]

Page 164: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

EJECUTANDO NUESTRA APLICACIÓN

[email protected][email protected]

Page 165: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Por ultimo Veremos

Enlazar nuestra Base de Datos con un App Config Guardar Archivos Xml Leer Archivos Xml

Agregaremos un formularioAgregaremos un AppConfig

Poner como comentario la cadena de conexión que tenemos en nuestra clase

[email protected][email protected]

Page 166: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Debajo de <Configuration> escribir lo siguiente

<connectionStrings >

<add name ="cnMuesta" connectionString ="server=CASA-830E44C75F\SQLEXPRESS;initial catalog=muestra;integrated security=true"/></connectionStrings>

[email protected][email protected]

Es el alias por el cual vamos a llamar a nuestra base de datos lo de mas es nuestra cadena de conexión, conforme van escribiendo van apareciendo los metodos

Page 167: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En nuestra clase debemos importar Imports System.Configuration

Ya deben haber dos configuraciones

Volvemos a declarar nuestra conexión pero de manera muy diferente

Private cn As New SqlConnection(ConfigurationManager.ConnectionStrings("cnMuestra").ConnectionString)

Si les muestra error o subrayado Agregren la referencia “System.Configuration” y ya no hay errores

[email protected][email protected]

Escribimos el Alias de nuestra Base de Datos

Page 168: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Ejecutemos nuestra aplicación

La ventaja de usar un AppConfig imaginemos que nuestro sistema ya esta trabajando nuestra base de datos también y que ya tiene registros ventas etc.Pero nos piden cambiar el nombre de la base de datos, sabes que si drapeas una base de datos se borrara todo aunque están los Backups pero no seria mas fácil solo cambiarle el nombre a la base de datos por el que nos digan

El appaconfig es evitable solo cambien el alias y en la clase y generen su solución sin afectar a los datos

[email protected][email protected]

Page 169: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Guardando Archivos XML

Agreguen otro formulario Y diseñen lo siguiente

A nivel de formulario Public cn As New SqlConnection(ConfigurationManager.ConnectionStrings("cnMuestra").ConnectionString)Dim obj As New operacionesDim ds As New DataSet("clientes")En el evento load del formularioTryDim da As New SqlDataAdapter("usp_Mostrar_clientes", cn)da.SelectCommand.CommandType = CommandType.StoredProcedureda.Fill(ds, "clie")DataGridView1.DataSource = ds.Tables("clie")Catch ex As Exception MessageBox.Show(ex.Message, ex.Source)End Try

[email protected][email protected]

Page 170: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Créense una carpeta en el escritorio con el nombre “Archivo”

Doble clic en el Botón Guardar XML

ds.WriteXml("C:\Documents and Settings\Daniel\Escritorio\Archivo\clientes.xml")

MessageBox.Show("Se Genero el Archivo xml con Exito")

Vallamos a nuestra carpeta que se encuentra en el escritorio

[email protected][email protected]

Ruta donde desea generar el archivo

Page 171: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Va a depender de la cantidad de campos y tablas que contenga nuestra base de datos no alcance a capturar toda la imagen pero ustedes o apreciaran mejor

[email protected][email protected]

Page 172: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Leyendo Archivos XML

Diseñar la siguiente interfaz

Doble clic en el Botón leer XML

Dim DS As New DataSet 'aqui el ds ya tiene el archivoDS.ReadXml("C:\Documents and Settings\Daniel\Escritorio\Archivo\clientes.xml")

'aqui mostramos en ds en grilla Me.DataGridView1.DataSource = DS.Tables("clie")

EJECUTAMOS NUESTRA APLICACION

[email protected][email protected]

Page 173: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Iremos filtrando los nombres Crearemos nuestra Siguiente tabla en e insertaremos los siguientes registrosSe creara en nuestra base de datos muestra

Insertaremos los siguientes registros de tal manera que nuestra tabla quede así

Diseñaremos la siguiente interfaz

[email protected][email protected]

Txt1

Lst1

Datagridview1

Page 174: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

Crearemos nuestra cadena de conexión y las variables a utilizar

Public cn As New SqlConnection("Server=CASA-830E44C75F\SQLEXPRESS ;initial catalog=muestra;integrated security=true")Dim da As New SqlDataAdapter("select nombres from amigos", cn)Dim ds As New DataSetPrivate dt As DataTablePrivate iniciando As Boolean = True

En el evento load del formulario codificaremos

dt = New DataTableda.Fill(dt)Me.DataGridView1.DataSource = dtiniciando = False

En el txt1 evento txt1_TextChanged

Try Dim filas() As DataRow ' nos permiten mostrar los nombres que empiesen con la primera letra escrita filas = dt.Select("Nombres LIKE '" & txt1.Text & "%'") 'nos permite mostrar a todos los nombres q contengan la letra escrita 'filas = dt.Select("TRANSPORTISTAS LIKE '%" & txt1.Text & "%'")

Me.lst1.Items.Clear()

Me.lst1.Items.Clear()

' Si hay datos, mostrar los apellidos If filas.Length > 0 Then

' Recorrer cada fila y mostrar los apellidos For Each dr As DataRow In filas

Me.lst1.Items.Add( _ dr("Nombres").ToString) '& ", " & _ ' dr("Nombre").ToString) Next End If

Catch ex As Exception MessageBox.Show(ex.Message) End Try

[email protected][email protected]

Page 175: Manual de Visual Studio 2005

Manual de Visual Basic.net 2003/2005

En el listbox (lst1 en el evento lst1_SelectedIndexChanged)

Me.txt1.Text = Me.lst1.SelectedItem.ToString

Ejecutamos nuestra aplicacionSi tu viéramos mas apellidos con P o con C entonces vayan escribiendo el apellido y se Irán filtrando el apellido deseado

[email protected][email protected]