Upload
elvis-urrutia-michuy
View
307
Download
4
Embed Size (px)
DESCRIPTION
para estudiantes de Programacion
Citation preview
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.
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)
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.
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.
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
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:
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 &
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, ...).
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
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):
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
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,
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.
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
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.
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.
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.
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)
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
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) _
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
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.
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)
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
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
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
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)
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
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
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
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
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
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
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
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)
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..
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
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)
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
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.
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.
Manual de Visual Basic.net 2003/2005
Mostrando la Aplicación Desarrollada de las Fechas (Pág. Nº 9)
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)
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”
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
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
Manual de Visual Basic.net 2003/2005
En el botón1 y botton2 y crearemos una subrutina
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
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
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
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.
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í
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
Manual de Visual Basic.net 2003/2005
En el botón
En el botón
En el botón
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
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
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.
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 |*.*"
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”
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
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
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
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
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:\"
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
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
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()
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)
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.
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
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
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”
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
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”
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
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()
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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..."
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
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
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”
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
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
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
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
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
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
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
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
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
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
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
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)))
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
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
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
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)
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
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.
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
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)
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
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
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
Manual de Visual Basic.net 2003/2005
Escribimos el Nombre a borrar en este caso “Mi Numero” y pulsamos clic en eliminar
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
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
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
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.
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
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:
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.
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
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.
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
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.
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.
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
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.
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 ] }
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
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
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
Manual de Visual Basic.net 2003/2005
Mostrando la tabla clientes en visual
Diseñar la siguiente interfaz
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
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
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
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
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")
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.
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
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.
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.
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
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
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
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”
Manual de Visual Basic.net 2003/2005
Crearemos procedimientos Almacenados (Eliminar)
Crearemos el store procedure
Eliminando
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
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
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
Manual de Visual Basic.net 2003/2005
Ejecutando nuestra aplicación
Guardando
Diseñar la siguiente interfaz
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
Manual de Visual Basic.net 2003/2005
EJECUTANDO NUESTRA APLICACIÓN
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
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
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
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
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
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
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
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
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
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
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