NET a su alcance
Nivel Bsico/Intermedio
Contenido
PRLOGO .................................................................................................................................... 7
1. INTRODUCCIN A VISUAL BASIC .NET .............................................................................. 10
1.1 Microsoft Visual Studio .NET ........................................................................................ 10
1.2 .NET FrameWork ......................................................................................................... 10
1.3 Pgina de Inicio Visual Studio .NET/2008 .................................................................... 11
2. PROYECTOS WINDOWS FORMS CON VISUAL BASIC .NET ............................................ 14
2.1 Crear una Aplicacin Windows Forms ......................................................................... 14
2.2 Elegir la plantilla de aplicaciones. ................................................................................. 14
2.3 Crear la interfaz de usuario. ......................................................................................... 19
2.4 Establecer las propiedades de los controles ................................................................ 20
2.5 Escribir cdigo .............................................................................................................. 21
2.6 Guardar la aplicacin .................................................................................................... 22
2.7 Ejecutar la aplicacin Windows Forms. ....................................................................... 23
2.8 Cerrar y Abrir un proyecto Windows Forms. ................................................................ 24
3. FUNDAMENTOS DE VISUAL BASIC .NET ............................................................................ 25
3.1 Variables ....................................................................................................................... 25
3.2 Constantes .................................................................................................................... 26
3.3 Tipos de datos .............................................................................................................. 26
3.3.1 Ejemplo prctico tipos de datos ................................................................................. 26
3.4 Funciones de conversin de tipos de datos ................................................................. 30
3.5 Operadores y Expresiones ........................................................................................... 32
3.5.1 Operadores aritmticos ............................................................................................. 32
3.5.2 Operadores relacionales ........................................................................................... 32
3.5.3 Operadores de igualdad ............................................................................................ 32
3.5.4 Operadores Lgicos .................................................................................................. 33
3.5.5 Ejemplo prctico operadores aritmticos .................................................................. 33
3.6 Palabras clave .............................................................................................................. 36
3.7 Comentarios ................................................................................................................. 36
4. ESTRUCTURAS DE CONTROL ............................................................................................. 37
4.1 Estructura de control If - Else ....................................................................................... 37
4.1.1 Sentencia If ................................................................................................................ 37
4.1.2 Sentencia If- Else....................................................................................................... 38
4.1.3 If (operador) ............................................................................................................... 39
4.1.4 IIF ............................................................................................................................... 39
4.1.5 Ejemplo estructura If-Else ......................................................................................... 39
4.2 Sentencia Select ........................................................................................................... 42
4.2.1 Ejemplo estructura Select .......................................................................................... 43
4.3 Estructura For-Next ...................................................................................................... 45
4.3.1 Ejemplo estructura For-Next ...................................................................................... 46
4.4 Estructura While ........................................................................................................... 48
4.4.1 Ejemplo estructura While ........................................................................................... 49
4.5 Do-Loop While .............................................................................................................. 51
4.5.1 Ejemplo estructura Do-Loop while............................................................................. 52
4.6 Estructura For-Each...................................................................................................... 55
4.6.1 Ejemplo estructura For-Each ..................................................................................... 55
4.7 Ejercicios estructuras de control ................................................................................... 58
5. MDULOS Y PROCEDIMIENTOS ......................................................................................... 59
5.1 Mdulos ........................................................................................................................ 59
5.2 Procedimientos o funciones ......................................................................................... 61
5.2.1 Ejemplo prctico mdulo y procedimientos Sub y Function ...................................... 62
5.3 Funciones predeterminadas ......................................................................................... 66
5.3.1 Funcin de fecha y hora ............................................................................................ 66
PRLOGO
Visual Basic y ASP .NET a su alcance (bsico / intermedio) proporciona los elementos
necesarios para obtener un conocimiento hasta un nivel intermedio del lenguaje de
programacin Visual Basic. Este libro se elaboro pensado en aquellos usuarios que
estn interesado en conocer las posibilidades de programacin orientada a objetos con
Visual Basic .NET, lo relacionado con la creacin de clases, herencia e interfaces.
Adems conocer los fundamentos del lenguaje de programacin: definicin de
variables, constantes, tipos de datos, estructuras de control, mdulos, procedimientos,
matrices y colecciones, as como tambin la creacin de interfaz de usuario utilizando
aplicaciones Windows Forms y ASP.NET, acceso a bases de datos, el lenguaje de
consulta integrado LINQ y la creacin y la utilizacin de servicios Web.
Todo el material didctico del libro se trata de exponer en un lenguaje sencillo,
donde se hace una conceptualizacin bsica sobre cada tema y se complementa con
ejemplos prcticos explicados y graficados que aportan al objetivo de aprendizaje. Cada
ejemplo es explicado lnea por lnea. En algunos casos se exceptan explicaciones que
ya se han realizado.
Debido al enfoque practico, basado en ejercicios y al esfuerzo de sntesis resulta
posible utilizarlo para adquirir con facilidad y rapidez un conocimiento para el
desarrollo de aplicaciones con el lenguaje de programacin Visual Basic.NET.
Todos los ejemplos del libro se han codificado, compilado y ejecutado desde el
entorno de desarrollo integrado de Microsoft Visual Studio 2008 (la mayora de los
ejemplos tambin se pueden trabajar con las versiones Express Edition Visual Basic
2005/2008 y Visual Web Developer 2005/2008).
Captulos del Libro
Visual Basic y ASP .NET a su alcance contiene 16 captulos distribuidos de la siguiente
forma:
Para el objetivo del libro se trabajar con el entorno Microsoft Visual Studio
XML, es el estndar de Extensible Markup Language. XML no es ms que un conjunto de reglas para
definir etiquetas semnticas que nos organizan un documento en diferentes partes. XML es un
metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados.
10
Aplicaciones de consola.
Aplicaciones Windows Forms.
Aplicaciones Windows Presentation Foundation (WPF).
Aplicaciones ASP.NET
Servicios Web.
11
Microsoft
Descripcin
Diseador de Windows
Forms
Herramientas
Aplicaciones
Forms
para
Windows
Herramientas
servicios Web XML
para
12
Soporte
de
lenguajes
mltiples
Acceso a datos
Gestin de errores
Asistentes
Un nuevo conjunto de herramientas diseado para reducir la complejidad del acceso a Base de Datos.
13
14
15
Men Principal
Barra de Herramientas
En el Explorador de soluciones
el botn Ver Diseador
de la barra de herramientas.
4. Explorador de soluciones
: Permite visualizar archivos y realizar tareas de
administracin de archivos en una solucin o en un proyecto. Una solucin es un
contenedor para proyectos y elementos de solucin que pueden incluirse en una
aplicacin. Normalmente, una solucin contiene uno o ms proyectos
relacionados. Un proyecto es un contendor dentro de una solucin que se utiliza
para administrar, generar y depurar lgicamente los elementos del (os) proyecto
(s) que constituyen la aplicacin.
Figura 2.6 Ventana Explorador de soluciones.
17
Nombre
Descripcin
.sln
Solucin
Studio
Visual
.suo
Solution
options
user
.vb
Proyecto
Basic
Visual
.vbproj
Proyectos Visual
Basic
.aspx
.asmx
.asax
Elementos
de
proyecto Web
Para visualizar las propiedades por categoras: Haga clic en el botn Por
de la ventana Propiedades. Las propiedades para el formulario o
categoras
control seleccionado se dividirn en categoras definidas por el control.
18
Cuando existen varios controles del mismo tipo, estos se numeran en el mismo orden en
que son colocados (nombre del control ms nmero del consecutivo). La interfaz de
usuario del ejemplo ser como muestra la figura a continuacin.
19
Label2
Label3
TextBox1
Button1
Form1
Propiedad
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
titulo
Generar una tabla de
multiplicar:
True
txtnumero
Digite numero:
txttabla
La tabla del numero
camponumero
En blanco
boton
Ver tabla
formulario
Tablas de multiplicar
20
21
Para el caso del ejemplo d doble clic en el objeto Button llamado boton y abra
el editor de cdigo, la figura muestra el editor de cdigo del control
Ahora escriba el siguiente cdigo entre Private Sub y End Sub:
With tabla
.Columns.Add("Multiplicando", " Multiplicando ")
.Columns.Add("Multiplicador", " Multiplicador ")
.Columns.Add("Producto", "Producto")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = camponumero.Text
.Item(1, i).Value = i + 1
.Item(2, i).Value = (camponumero.Text * (i + 1))
Next
End With
Este cdigo sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el mtodo Add de la propiedad Columns se le adicionan los nombres
Multiplicando, Multiplicador, Producto en la primera fila y la propiedad RowCount
se le asigna un valor de 10 filas. Con un ciclo For que se ejecutar desde una posicin i
igual a cero (0) hasta el numero de filas -1 del objeto tabla y por cada fila tres tems. En
la primera columna se imprimir el valor digitado en el objeto camponumero, en la
segunda columna se imprimir el valor de i+1, en la tercera columna el producto de
multiplicar el valor del objeto camponumero por i+1.
2.6 Guardar la aplicacin
Una vez finalizada la creacin de la aplicacin, se debe guarda la aplicacin dentro del
entorno de desarrollo para asegurar que todos los cambios realizados se almacenen, esto
se puede realizar de la siguiente forma:
de la barra de herramientas.
22
23
En cada caso se deben guardar los nuevos cambios que se hayan realizado.
Para volver a abrir la aplicacin MiProgramaWF o cualquier otra aplicacin
existente se debern realizar los siguientes pasos:
1. Abrir Visual Studio .NET.
2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del proyecto que
se desea abrir haga doble clic para abrir la aplicacin. Si por el contrario no se visualiza
la aplicacin en el men Archivo, seleccione Abrir proyecto..., busque la carpeta
MiProgramaWF y seleccione el archivo MiPrograma.sln y pulse la opcin Abrir para
abrir la aplicacin en el entorno de desarrollo de Visual Basic .NET.
24
Las variables pueden ser locales o globales. Las variables locales son aquellas
que se crean dentro de un bloque especfico de programacin y se destruirn al
finalizarse el bloque de programacin.
Ejemplo:
End Sub
Las variables globales son aquellas que pueden ser modificadas desde cualquier
punto de un programa.
Ejemplo:
Public Class Variables_Globales
Public var_global As Integer (variable global)
Private Sub funcin ()
Dim var_local As integer
var_global=10 (valor modificado en la funcin1 ())
::::::::
End Sub
Private Sub funcin2 ()
Dim var_local As integer
var_global=20 (valor modificado en la funcin2 ())
::::::::::
End Sub
::::::::::::::::
End Class
25
3.2 Constantes
Son variables que permanecen constantes durante el desarrollo del programa. Existen
constantes numricas, de carcter, lgicas, etc. El formato de la declaracin de una
variable constante es:
Ejemplo:
Integer
Long
Short
Single
String
Valores
Representa un valor verdadero (True) o falso (False).
Representa un valor de 8 bits en un rango entre 0 y 255.
Representa un carcter de 16 bits.
Representa un valor de fecha y hora.
Representa un valor de 28 dgitos significativos. De +/7,9228162514264337593543950335.
Representa un valor en coma flotante de 64 bits. De 1,79769613486231570E+308
a
4,94065645841246544E-324 para valores negativos;
4,94065645841246544E-324
a
1,79769613486231570E+308 para valores positivos.
Representa un valor entre un rango de +/-2,147,483,698
Representa un valor entre un rango de +/9.223.372.036.854.775.807
Representa un valor entre un rango de +/- 32.677
De -3,4028235E+38 a -1,401298E-45 para los valores
negativos; 1,401298E-45 a 3,4028235E+38 para los
valores positivos.
Tamao
2 bytes
1 byte (0-255)
2 bytes (0-65535)
8 bytes
12 bytes
Cadena de caracteres
0 a 2 millones de
caracteres.
8 bytes
4 Bytes
8 Bytes
2 Bytes
4 bytes
26
27
Control
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
TextBox1TextBox10
Button1
Button2
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblboolean
Boolean:
lblbyte
Byte:
lblchar
Char:
lblfechora
Fecha/Hora:
lbldecimal
Decimal:
lbldouble
Double:
lblinteger
Integer:
lbllong
Long:
lblshort
Short:
lblstring
String:
Txtcampo1txtcampo10
En blanco
boton
Tipos de Datos
botonsalir
Salir
formulario
Tipos de datos en Visual
Basic .NET
Escribir cdigo
Una vez se hayan establecido las propiedades inciales del formulario y sus objetos, se
puede agregar cdigo que se ejecutar en respuesta a eventos.
Para escribir cdigo que se ejecute en un evento determinado del control, realice
lo siguiente:
1. En el Explorador de soluciones, seleccione el control para el que desea escribir
cdigo.
2. Escriba el cdigo entre el punto inicial
procedimiento.
Para el ejemplo, d doble clic sobre el objeto boton para ver el editor de cdigo,
la figura 3.2, muestra el editor de cdigo del control.
Figura 3.2 Editor de cdigo del control boton de la aplicacin TiposdeDatos.
Public Class formulario
28
Guardar la aplicacin
de la barra de herramientas
29
Ejecutar el proyecto
30
CByte
Byte
CChar
Char
CDbl
Double
CDate
Fecha
CDec
Decimal
CInt
Entero
CLng
Long
CShort
Short
Str
String
Val
Numrico
Ejemplo
Dim x,y As Integer
Dim valor as Boolean
x=10
y=10
valor = CBool(x=y) Devuelve verdadero
(True).
Dim x As Double
Dim valor as Byte
x=10.5658
valor = CByte(x) Devuelve 11.
Dim x As String
Dim valor as Char
x=ABC
valor = CChar(x) Devuelve A. Solo convierte
el primer carcter a Char.
Dim x As Decimal
Dim valor as Double
x=158.2459
valor = CDbl(x) Devuelve 158,2459.
Dim x As String
Dim valor as Date
x=Agosto 30, de 2010
valor = CDate(x) Devuelve 30/8/2010.
Dim x As Double
Dim valor as Decimal
x=16547.2358
valor= CDec(x) Devuelve 16547,2358.
Dim x As Double
Dim valor as Integer
x=16.23
valor= CInt(x) Devuelve 16.
Dim x As Double
Dim valor as Long
x=1658.55
valor= CLng(x) Devuelve 1659. En la parte
decimal se aproxima al entero superior si es
>=.5 y al entero inferior si es <.5.
Dim x As Double
Dim valor as Long
x=1658.49
valor= CShort(x) Devuelve 1658. Se
aproxima al entero superior si es >=.5 y al
entero inferior si es <.5.
Dim x As Integer
Dim valor as String
x=15
valor= Str(x) Devuelve el String 15.
Dim x As String
Dim valor as Integer
x=15
valor= Val(x) Devuelve el nmero 15.
31
Operador
Expresin
+
*
/
\
mod
^
numero1 +numero2
numero1 numero2
numero1 * numero2
numero1 / numero2
numero1 \ numero2
numero1 mod numero2
numero1 ^ numero2
Operador
Expresin
>
>=
<
<=
variable1>variable2
variable1>=variable2
variable1<variable2
variable1<=variable2
Operador
Expresin
<>
=
variable1<>variable2
variable1=valor
variable1=variable2
32
Operador
Expresin
And
Tambin Y
AndAlso
Or
Tambin O
OrElse
Negacin
Not
Xor
33
Control
Label2
Label3
Label4
Label5
Label6
Label7
TextBox1TextBox7
Button1
Button2
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblsuma
Suma
lblresta
Resta:
lblmultiplicacion
Multiplicacin
lbldivision
Divisin
lbldiventera
Divisin Entera
lblresiduo
Residuo
lblexponeniacion
Exponenciacin
txtcampo1txtcampo7
En blanco
boton
Operadores Aritmticos
botonsalir
Salir
formulario
Operadores Aritmticos
en Visual Basic .NET
34
Escribir cdigo
Ejecutar el proyecto
35
AddressOf
As
Byte
CBool
CDbl
CObj
CType
Delegate
Each
Erase
Finally
GetType
Imports
Is
Me
MyBase
Not
On
Private
ReadOnly
Return
String
Short
Throw
Unicote
WithEvents
Palabras Clave
ndAlso
Alias
Assembly
Auto
Byval
Call
CByte
CChar
Char
CInt
Const
CShort
Date
Decimal
Dim
DirectCast
Else
ElseIf
Error
Event
For
Friend
GoTo
Handles
In
Inherits
Lib
Like
Mod
Module
MyClass
Namespace
Nothing
NotInhertable
Option
Optional
Property
Protected
ReDim
Rem
Select
Set
Structure
Static
Single
Sub
To
True
Until
When
WriteOnly
Xor
And
Boolean
Case
Cdate
Class
CSng
Declare
Do
End
Exit
Function
If
Integer
Long
MustInherit
New
NotOverridable
Or
Public
RemoveHandler
Shadows
Step
SyncLock
Try
While
3.7 Comentarios
Para establecer o definir un comentario se utiliza la comilla simple () al inicio del
comentario. Cada comentario debe ir en una sola lnea.
Ejemplo:
Este es un comentario
36
4. ESTRUCTURAS DE CONTROL
Cuando se escriben programas a veces es necesario determinar un control del flujo de
ejecucin de acuerdo a los cambios que sufran los diferentes tipos de datos. Entonces
cuando se requiere realizar programas ms complejos se debe utilizar estructuras de
control que evalen algunos resultados para determinar qu proceso u operacin se debe
ejecutar. En Visual Basic .NET existen palabras clave que permiten tener un control del
flujo de ejecucin como lo son las sentencias de toma de decisiones (If, If-Else, Select)
y las estructuras repetitivas (For-Next, While, Do-Loop While, For-Each).
4.1 Estructura de control If - Else
4.1.1 Sentencia If
Representa una toma de decisin sencilla, es decir, si la condicin que se evala es
verdadera se realizan las instrucciones que pertenezcan al bloque If y continuar con el
resto del programa. Si la condicin es falsa no entrar al bloque If y por consiguiente
todas las instrucciones que estn en el If no se ejecutarn. Cada vez que se utilice un If
se debe finalizar con EndIf. Su formato es:
1) If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
::::::::
Endif
Resto del programa
3) If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
:::::::
If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
::::::::
Endif
Endif
Resto del programa
Se pueden anidar varios If, es decir, uno entre otro, para ingresar cada vez al If
ms interno es necesario que la condicin sea verdadera. Se debe tener en cuenta que
por cada bloque If que se realice debe existir una finalizacin EndIf. Tambin se
pueden utilizar los operadores lgicos (And, Andalso, Or, OrAlso, Xor, Not) para
concatenar varias condiciones. Si se utiliza el operador lgico And, cada una de las
condiciones debe ser verdadera para que ingrese al If y se ejecuten las instrucciones. En
el caso del operador Or, si una de las condiciones es verdadera ingresara al If y
ejecutar las instrucciones.
37
4.1.3 If (operador)
Se utiliza para una toma de decisin mltiple donde se devolver uno de dos valores al
evaluar una expresin. Su formato es:
If (condicin, primer_argumento_por_verdad, segundo_argumento_por_falso)
Ejemplo:
Ejemplo:
17
13
18
23
15
44
59
59
25
59
59
59
+1
segundo
un
17
13
19
0
15
45
0
0
26
0
0
0
NOTA: a partir de este captulo se omitirn pasos que se supone que el lector ya maneja
como son: iniciar un nuevo proyecto, escoger los controles y los pasos para ejecutar el
39
proyecto.
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.1 Propiedades de los controles del proyecto TomadeDecisiones.
Control
Label1
Label2
Label3
Label4
Label5
Label6
TextBox1
TextBox2
TextBox3
TextBox4
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
lblhoras
Digite la hora:
lblminutos
Digite los minutos:
lblsegundos
Digite los segundos:
Lblhora
Horas:
Lblminuto
Minutos
lblsegundo
Segundos:
hora
En blanco
minuto
En blanco
segundo
En blanco
horas
En blanco
Valor
40
TextBox5
TextBox6
Button1
Form1
Name
Text
Name
Text
Name
Text
Name
Text
minutos
En blanco
segundos
En blanco
boton
Ms un segundo
formulario
Toma de decisiones (If-Else) en Visual Basic .NET
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim H, M, S As Integer
H = horas.Text
M = minutos.Text
S = segundos.Text
If(H = 23 And M = 59 And S = 59) Then
H=0
M=0
S=0
Else
If (M = 59 And S = 59) Then
H=H+1
M=0
S=0
Else
If (S = 59) Then
M=M+1
S=0
Else
S=S+1
End If
End If
41
End If
hora.Text = H
minuto.Text = M
segundo.Text = S
Ejecutar el proyecto
42
...
...
[Case Else]
instruccionesN
End Select
43
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.2 Propiedades de los controles del proyecto EstructuraSelect.
Label1
Control
Label2
TextBox1
TextBox2
Button1
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblnumero
Digite un nmero:
lbldia
El da de la semana es:
numero
En blanco
dia
En blanco
boton
Visualizar da
formulario
Estructura Select
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim valor As Integer
valor = numero.Text
Select Case valor
Case Is = 1
dia.Text = "Lunes"
Case Is = 2
dia.Text = "Martes"
44
Case Is = 3
dia.Text = "Miercoles"
Case Is = 4
dia.Text = "Jueves"
Case Is = 5
dia.Text = "Viernes"
Case Is = 6
dia.Text = "Sbado"
Case Is = 7
dia.Text = "Domingo"
Case Else
dia.Text = "No es un dia de la semana"
End Select
Ejecutar el proyecto
45
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.3 Propiedades de los controles del proyecto EstructuraForNext.
Label1
Control
TextBox1
Button1
Propiedad
Name
Text
Name
Text
MultiLine
ScrollBar
Name
Text
Valor
lblnumeros
Nmeros capturados
numero
En blanco
True
vertical
boton
Capturar 10 nmeros
46
Form1
Name
Text
formulario
Estructura For-Next
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim inicio, valor, suma As Integer
For inicio = 1 To 10
valor = InputBox("Digite numero", "Captura de nmeros")
numero.Text = numero.Text & valor & vbCrLf
suma = suma + valor
Next
numero.Text = numero.Text & vbCrLf & "La sumatoria es: " & suma
Se definen las variables de tipo entero inicio, valor, suma. Se inicializa un ciclo
For que se repetir 10 veces. En l se le asigna a la variable valor los diferentes
nmeros capturados con la funcin InputBox (Esta funcin permite capturar un valor
por teclado; en este caso, solamente se utilizan dos parmetros: el primero para
establecer un mensaje y el segundo para un titulo). Por otro lado, al control numero en
su propiedad Text se le asigna el contenido que tenga en ese momento concatenado con
el valor capturado y un salto de carro (vbcrlf); la variable suma guardar la sumatoria
de los valores capturados. Al salir del ciclo For se imprimir en el objeto numero el
texto La sumatoria es: unido con el valor de la variable suma.
Ejecutar el proyecto
47
figura:
48
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.4 Propiedades de los controles del proyecto EstructuraWhile.
Label1
Control
Label2
TextBox1
TextBox2
Button1
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lbmayor
El mayor es:
lblmenor
El menor es:
mayor
En blanco
menor
En blanco
boton
Capturar 10 nmeros
formulario
Estructura While
49
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim contador, valor, nmayor, nmenor As Integer
contador = 1
While (inicio <= 10)
valor = InputBox("Digite numero", "Captura de nmeros")
If (contador = 1) Then
nmayor = valor
nmenor = valor
End If
If (nmayor < valor) Then
nmayor = valor
End If
If (nmenor > valor) Then
nmenor = valor
End If
mayor.Text = nmayor
menor.Text = nmenor
contador = contador + 1
End While
50
contador en 1 para que al digitar los 10 valores se pueda salir del ciclo While.
Ejecutar el proyecto
figura:
51
Do
Instruccin(es)
::::::::
incremento decremento
Loop While (condicin)
Control
Label2
TextBox1
Propiedad
Name
Text
Name
Text
Name
Text
Valor
lblnumeros
Nmeros capturados
lblsuma
La suma de los nmeros fue:
camponumeros
En blanco
52
TextBox2
Button1
Form1
MultiLine
ScrollBar
Name
Text
Name
Text
Name
Text
True
vertical
camposuma
En blanco
boton
Capturar 10 nmeros
formulario
Estructura Do Loop While
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim valor, suma As Integer
Dim respuesta As String
Do
valor = InputBox("Digite nmero:", "Capturar nmeros")
camponumeros= camponumeros & valor & vbcrlf
suma = suma + valor
respuesta = MsgBox("Desea Continuar (Si/No):", MsgBoxStyle.YesNo)
Loop While (respuesta = "6")
camposuma.Text = suma
Se crean tres variables: dos de tipo entero valor, suma y una de tipo String
llamada respuesta. Dentro de un ciclo Do Loop While se le asigna a la variable valor
los diferentes nmeros capturados con la funcin InputBox, adems al objeto
camponumeros en su propiedad Text se le asigna el contenido que tenga en ese
momento concatenado con el valor capturado y un salto de carro (vbcrlf); Por otro
lado, la variable suma guardar la sumatoria de los valores capturados y a la variable
53
respuesta se le asigna el valor retornado por la funcin MsgBox (El primer parmetro
es un mensaje para el cuadro de dilogo; el segundo parmetro es una expresin
numrica que especifican el nmero y los botones que se van a mostrar). Si desea
continuar (Si) capturando nmeros el valor que se almacenar en la variable respuesta
es 6, en caso contrario, se almacenar el valor 7. Al salir del ciclo Do Loop
While se imprimir en el objeto camposuma en su propiedad Text el valor de la
variable suma.
Ejecutar el proyecto
54
55
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.6 Propiedades de los controles del proyecto EstructuraForNext.
Label1
Control
Label2
TextBox1
TextBox2
Button1
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblcadena
Digite una oracin:
lblvocal
La cantidad de vocales a es:
campooracion
En blanco
campovocal
En blanco
boton
Contar vocal
formulario
Estructura For-Each
56
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim cuentavocal As Integer
Dim cadena As String
cadena = campocadena.Text
For Each letra As String In cadena
If letra = "a" Then
cuentavocal = cuentavocal + 1
End If
Next
campovocal.Text = cuentavocal
Ejecutar el proyecto
57
58
5. MDULOS Y PROCEDIMIENTOS
A medida que se escriban programas de mayor robustez o complejidad (varios
formularios), es casi seguro, que existan muchos procesos comunes. Para esto se
disean subprogramas que realizan una tarea especfica denominados procedimientos o
funciones, Por otro lado, a veces es necesario tener variables, constantes o expresiones
que se puedan utilizar en el entorno de desarrollo sin tener que volverlas a definir
(variables globales). Visual Basic .NET permite compartir variables, procedimientos en
varios formularios, para esto, es necesario crear un mdulo que permita contener las
variables globales y los procedimientos.
5.1 Mdulos
Un mdulo es un contenedor que se visualiza de forma independiente en el explorador
de soluciones y solamente se le puede incluir cdigo y no tendr interfaz de usuario.
Dicho mdulo puede contener variables globales pblicas, procedimientos sub y
function y estos pueden ser compartidos por varios formularios. Cada mdulo tiene una
instancia y no necesita ser creado ni asignado a una variable. Dentro de una aplicacin
pueden existir varios mdulos, sin embargo, al hacer referencia a alguno de sus
miembros (variables, procedimientos, funciones) se debe referenciar con el nombre del
mdulo adecuado.
Ejemplo:
Module uno
Public a As integer=6
End Module
Module dos
Public a As integer=5
End Module
as:
Mdulo.
La figura que se visualizar al seleccionar cualquiera de los pasos anteriores es
la siguiente:
Figura 5.1 Agregar un mdulo al proyecto.
, el mdulo
60
Para declarar una variable pblica (aquellas que estn disponibles para todos los
procedimientos de la aplicacin) en un mdulo solo se necesita que al inicio del mdulo
se escriba la palabra clave public seguido por el nombre de la variable y el tipo de dato.
Una vez declarada esta variable podr ser utilizada para leerla, modificarla o
visualizarlA por cualquier procedimiento del programa.
5.2 Procedimientos o funciones
En Visual Basic .NET existen dos tipos de procedimientos: Function y Sub. Los
procedimientos Function pueden ser invocados por su nombre desde otros
procedimientos, pueden recibir argumentos (son datos necesarios para que un
procedimiento trabaje correctamente y deben ir dentro de parntesis y separados por
comas), y siempre devuelven un valor con el nombre de la funcin. Los procedimientos
Sub tambin pueden ser son invocados por su nombre desde otros procedimientos,
pueden recibir argumentos y no devuelven valores. Los procedimientos Function y
Sub se pueden definir en el cdigo de un formulario, pero lo ms aconsejable es
definirlos dentro de un mdulo para que todos los elementos de un proyecto puedan
utilizarlos.
Un procedimiento Function es un grupo de cdigo localizado entre una
instruccin Function y EndFunction. Se podr llamar a un procedimiento Function
desde un programa utilizando el nombre asociado al procedimiento junto con los
argumentos necesarios. Su formato es:
[Modificar de acceso] Function nombre_funcin (argumentos) As tipo de dato
Instrucciones
nombre_function = valor a retornar
End Function
61
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.1 Propiedades de los controles de la aplicacin MdulosProcedimientos.
Control
TextBox1
TextBox2
Label1
Label2
Button1
Button2
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
txtnumero
En blanco
txtresultado
En blanco
lblnumero
Digite un nmero:
lblresultado
El nmero es:
botonfunction
Verificar Numero Primo con Function
botonsub
Verificar Numero Primo con Sub
formulario
Mdulos y procedimientos.
62
Agregar mdulo
63
En el mdulo d doble clic sobre el nombre de este y entre las instrucciones Module y
End Module escriba el siguiente cdigo:
Module mimdulo
Public incremento As Integer
Public auxiliar As Integer
Public texto As String
iniciamos el procedimiento Function
Function primo_Function(ByVal numero As Integer) As String
auxiliar = 0
incremento = 2
If (numero <= 0) Then
primo_Function = "No hay solucin"
Else
If (numero >= 1 And numero < 3) Then
texto = "PRIMO"
Else
While (auxiliar = 0)
If ((numero Mod incremento) = 0) Then
texto = "No PRIMO"
auxiliar = 1
Else
incremento += 1
End If
If (numero = incremento) Then
texto = "PRIMO"
auxiliar = 1
End If
End While
End If
primo_Function = texto
End If
End Function
Finaliza el procedimiento funcin
Inicia el procedimiento Sub
Sub primo_Sub(ByVal numero As Integer)
auxiliar = 0
incremento = 2
If (numero <= 0) Then
texto = "No hay solucin"
Else
If (numero >= 1 And numero < 3) Then
texto = "PRIMO"
Else
While (auxiliar = 0)
If ((numero Mod incremento) = 0) Then
texto = "No PRIMO"
auxiliar = 1
Else
incremento += 1
End If
If (numero = incremento) Then
texto = "PRIMO"
auxiliar = 1
End If
End While
64
End If
End If
End Sub
Finaliza el procedimiento Sub
End Module
Ejecutar el proyecto
65
Separador de fecha.
Descripcin
Muestra una fecha con el formato de fecha larga. Por ejemplo: martes, 31 de
agosto de 2010.
Muestra una fecha con el formato de fecha corta. Por ejemplo: 31/10/2010.
dd
ddd
dddd
MM
Muestra el mes como un nmero con cero a la izquierda (por ejemplo, 09).
MMM
MMMM
yy
yyy
F,f
66
Separador de hora.
Descripcin
HH
mm
ss
Propiedad
Name
Name
Name
Name
Name
Name
Name
Name
Name
Name
Text
Name
Text
Name
Text
Name
Text
Valor
Funcin Now
Funcin TODAY
Formato d/MM/y:
Formato D:
Formato d-MMMM-yyy
Formato F:
Formato h:m:s:
Formato hh:mm:ss
Formato HH
Formato HH:mm
texto1texto10
formato1formato10
En blanco
boton
Ver formatos de fecha/hora
formulario
Formato de fecha/hora
67
Escribir cdigo
Se utiliza la funcin Format (fecha actual del sistema, tipo de formato) para dar
un formato especfico de fecha u hora a las diferentes cajas de texto en la propiedad
Text. Cuando el usuario pulse el botn Ver formatos fecha/hora en tiempo de
ejecucin mostrar en cada caja de texto el formato respectivo.
Ejecutar el proyecto
68
Math.Floor(double)
Math.sqrt(n)
Math.pow(n,p)
Math.Abs(n)
Math.sin(n)
Math.cos(n)
Math.tan(n)
Math.Max(n1,n2)
Math.min(n1,n2)
Math.BigMul(n1,n2)
Math.round(double)
Descripcin
Devuelve el nmero entero ms pequeo mayor o
igual que el nmero especificado.
Math.ceiling(1.6)=2
Math.ceiling(0.8)=1
Devuelve el nmero entero ms grande menor o
igual que el nmero especificado.
Math.Floor(1.6)=1
Math.Floor(0.8)=0
Devuelve la raz cuadrada de un nmero.
Devuelve un nmero especificado elevado a la
potencia especificada.
Sobrecargado. Devuelve el valor absoluto de un
nmero especificado.
Devuelve el seno del ngulo especificado.
Devuelve el coseno del ngulo especificado.
Devuelve la tangente del ngulo especificado.
Devuelve el mayor de dos nmeros.
Devuelve el menor de dos nmeros.
Calcula el producto de dos nmeros.
Devuelve el nmero ms prximo al valor
especificado.
Math.round(10.5)=10
Math.round(10.51)=11
69
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.6 Propiedades de los controles del proyecto FuncionesMatematicas.
Label1
Control
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
Label11
TextBox1TextBox11
Button1
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
Funcin Math.Ceiling(8.5)
texto1
Funcin Math.Floor(8.5)
texto2
Funcin Math.Round(10.5)
texto3
Funcin Math.Round(10.51)
texto4
Funcin Math.Max(7,5)
texto5
Funcin Math.Min(7,5)
texto6
Funcin Math.Pow(5,2)
texto7
Funcin Math.Sqrt(3)
texto8
Funcin Math.Sin(1.0)
texto9
Funcin Math.cos(1.0)
texto10
Funcin Math.tan(1.0)
texto11
campo1campo10
En blanco
boton
Ver funciones matemticas.
formulario
Funciones matemticas.
70
Escribir cdigo
Ejecutar el proyecto
71
Ejemplo
Dim micadena As String = "ABCDE"
Dim micaracter As Char
micaracter = micadena.Chars(3)
micaracter = "D"
Dim micadena As String = "ABCDE"
Dim Entero As Integer
entero=cadena.length
entero=5
Dim micadena As String = "hola"
Dim unircadena As String
unircadena= String.Concat(micadena, " ",
"pueblo")
unircadena= hola pueblo
Dim micadena As String = "hola"
micadena= micadena.ToUpper()
micadena= HOLA
Dim micadena As String = "HOLA"
micadena= micadena.ToLower()
micadena= hola
72
73
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.8 Propiedades de los controles del proyecto FuncionesCadenas.
Control
Label1
Label2
Button1
Button2
Button3
Button4
Button5
Button6
Button7
Button8
Button9
Button10
Button11
Button12
TextBox1
Textbox2
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblcadena
Cadena origonal
lblresultado
Cadena resultante
boton1
Chars(n)
boton2
Length
boton3
ToUpper
boton4
ToLower
boton5
Remove
boton6
Insert
boton7
Substring
boton8
Mid
boton9
StrReverse
boton10
Replace
boton11
Asc
boton12
Concat
txtcadena
Esternomscleoide
txtresultante
En blanco
formulario
Funciones de cadenas de caracteres.
Escribir cdigo
75
Ejecutar el proyecto
Al ejecutarse la aplicacin se visualizar la figura 5.11, Se puede pulsar cada uno de los
botones para ver los resultados de la funcin especificada. Por ejemplo si se pulsa el
botn Concat, se obtendr la siguiente figura:
Figura 5.12 Ejecucin aplicacin cadenas_caracteres.
76
77
6. MATRICES Y COLECCIONES
Las matrices y las colecciones son conjuntos de elementos afines. Una matriz es un
grupo de posiciones de memoria contiguas, que almacenan el mismo nombre y tipo de
dato, estas pueden ser de una o ms dimensiones. Para referirse a un elemento de la
matriz se debe especificar el nombre de la matriz seguido de uno o ms subndices
encerrados entre parntesis. Una coleccin se define por medio del objeto Collection
donde se hace referencia a un grupo de elementos relacionados como un objeto nico.
6.1 Matrices de una Dimensin o Unidimensionales
Una matriz de una dimensin se declara de la siguiente forma:
Dim <nombre matriz> (<numero de elementos>) As Tipo de dato;
Dim mercanca
(12)
As Integer
Para acceder a los valores de una matriz, se debe utilizar un valor de ndice
para especificar la posicin a la que se desea acceder. Tambin se pueden utilizar ciclos
para recorrer toda la matriz y acceder a todos los valores.
z = ventas (2)
78
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Name
Text
Valor
txtoriginal
En blanco
txtordenada
En blanco
txtpares
En blanco
txtimpares
En blanco
lbloriginal
Matriz Original
True
lblordenado
Matriz Original
True
lblpares
Nmeros Pares:
True
lblimpares
Nmeros Impares:
True
boton
Capturar valores
formulario
Matrices Unidimensionales
79
Escribir cdigo
Ejecutar el proyecto
80
Para acceder a los valores de una matriz bidimensionales, se debe utilizar los
dos subndices, como tambin dos ciclos para recorrer toda la matriz y acceder a cada
uno de los valores.
Dim ventas (2, 3), i, j, z As Integer
For i= 0 To 1
For j=0 To 2
z=ventas (i, j) A z se le asignar el valor de la posicin (i, j).
Next
Next
81
Propiedad
Name
Text
Name
Text
Name
Text
Multiline
Name
Text
Multiline
Name
Text
Name
Text
Valor
lblpalabras
Palabras Digitadas
lblca
Palas que empiezan con CA.
txtpalabras
En Blanco
True
txtca
En Blanco
True
boton
Capturar palabras
formulario
Matrices Bidimensionales
82
Escribir cdigo
Ejecutar el proyecto
83
Si se digitan las palabras: ana, dedos, cali, azules, cadena, apoyo, alcanza,
capota, en el objeto txtpalabras se visualizarn las palabras digitadas y en el objeto
txtca todas las palabras que empiezan con CA. Se mostrar la siguiente figura:
Figura 6.5 Matriz bidimensional al capturar las palabras.
6.3 Colecciones
Las colecciones es un objeto nico donde se relacionan un grupo de elementos. Los
elementos de una coleccin no tienen que compartir el mismo tipo de datos. El ndice de
los elementos puede ser 0 1. Su formato es:
Dim nombrecoleccion As New Collection
Donde New es el operador para asignar espacio de memoria de tipo Collection.
Cuando se crea una coleccin, esta se puede manipular con las siguientes funciones:
Add: permite agregar un nuevo elemento a la coleccin.
Remove: permite eliminar un elemento que exista en la coleccin.
Clear: quita todos los elementos de una coleccin.
Count: cuenta cuantos elementos tiene una coleccin.
6.3.1 Ejemplo prctico colecciones
Disear una aplicacin llamada Colecciones que permita adicionar, eliminar, buscar
elementos en una coleccin. Al realizar la operacin de adicin o eliminacin se debe
visualizar como queda la coleccin y por la operacin de bsqueda se debe mostrar la
posicin donde se encuentra el elemento.
Propiedad
Name
Text
Name
Text
Multiline
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblelementos
Elementos de la Coleccin
txtelementos
En Blanco
True
txtbuscar
En Blanco
botonadicionar
Adicionar elementos
botoneliminar
Eliminar elementos
botonbuscar
Elemento a Buscar:
formulario
Objeto Collection
85
Escribir cdigo
a) Antes de la apertura de la clase declare la coleccin para que esta sea publica a
cada uno de los procedimientos de la aplicacin. D doble clic sobre el
formulario y busque Public class formulario y antes de este cdigo escriba:
Dim coleccion As New Collection
86
txtbuscar.Text = "el elemento:" & dato & " existe en la posicin:" & posicion
auxiliar = 1
End If
posicion = posicion + 1
Next
If (auxiliar = 0) Then
txtbuscar.Text = "No existe el elemento:" & dato
End If
Ejecutar el proyecto
87
88
89
90
Control
Label2
LinkLabel1
LinkLabel2
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lblgoogle
Abrir Google:
lblexcel
Abrir Excel:
vinculogoogle
Ir a Google
vinculoexcel
Abrir Excel
formulario
Control LinkLabel
91
Escribir cdigo
a) Seleccione el objeto vinculogoogle, d doble clic para abrir el editor del
procedimiento vinculogoogle_LinkClicked y escriba el siguiente cdigo:
vinculogoogle.LinkVisited = True
System.Diagnostics.Process.Start("http://www.google.com.co")
Una caracterstica del mtodo Start de la clase Process es que se puede utilizar
para ejecutar diferentes aplicaciones, el mtodo Start puede recibir dos argumentos: el
primer argumento se utiliza para ejecutar una aplicacin especfica sin necesidad de
configurar la ubicacin de la aplicacin. En el segundo argumento se puede definir la
ruta y el nombre del documento que se quiere abrir. En este caso se busca ejecutar
solamente el programa Excel de Microsoft sin abrir ningn archivo especfico.
Ejecutar el proyecto
92
Propiedad
Name
Text
Font-Bold
Name
Valor
texto
Texto para cambiar de color y tamao
True
lblcolor
93
Label2
ComboBox1
ListBox1
Form1
Text
Name
Text
Name
Name
Name
Text
2. Seleccionar el control, dar clic sobre la flecha que aparece en la parte superior
derecha del control y all escoger la opcin Editar elementos para ver la
ventana Editor de la coleccin Cadena.
3. Dar doble sobre el formulario para ver la ventana de cdigo del procedimiento
Sub formulario_Load. all se debe escribir la siguiente lnea por cada elemento
que se desee agregar:
nombre_del_control_ListisBox_o_ComboBox.Items.Add("nombre_del_elemento")
94
Pulse la opcin Editar elementos para ver la ventana del Editor de la coleccin
Cadena.
Figura 7.5 Ventana Editor de la coleccin Cadena.
Digite por cada lnea el nombre de un color, para el ejemplo escriba: Negro,
Amarrillo, Verde, Azul, Rojo, Caf, Rosado y Gris. La ventana del Editor quedara de la
siguiente forma:
Figura 7.6 Ventana del Editor con los elementos agregados al control ListBox.
95
Pulse la opcin Editar elementos para ver la ventana del Editor de la coleccin
Cadena. Adicione los tamaos de letra de acuerdo a la siguiente figura:
96
Figura 7.9 Ventana del Editor con los elementos agregados al control ComboBox.
Escribir cdigo
a) Seleccione el objeto listaletra, d doble clic para abrir el editor de cdigo
listaletra_SelectedIndexChanged y escriba el siguiente cdigo:
Select listaletra.SelectedIndex
Case Is = 0
texto.Font = New Font("Microsoft Sans Serif", 8, FontStyle.Bold)
Case Is = 1
texto.Font = New Font("Microsoft Sans Serif", 12, FontStyle.Bold)
Case Is = 2
texto.Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold)
Case Is = 3
texto.Font = New Font("Microsoft Sans Serif", 20, FontStyle.Bold)
Case Is = 4
texto.Font = New Font("Microsoft Sans Serif", 22, FontStyle.Bold)
Case Is = 5
texto.Font = New Font("Microsoft Sans Serif", 24, FontStyle.Bold)
Case Is = 6
texto.Font = New Font("Microsoft Sans Serif", 26, FontStyle.Bold)
Case Is = 7
texto.Font = New Font("Microsoft Sans Serif", 28, FontStyle.Bold)
End Select
97
Ejecutar el proyecto
98
Propiedad
Name
Text
BorderStyle
Name
Text
BorderStyle
Name
Text
Font -Bold
Name
Text
Font -Bold
Name
Text
Name
Text
Name
Text
Name
Text
Checked
Name
Valor
txtcheckbox
Uso del control Checkbox
Fixed3D
txtradiobutton
Uso del control RadioButton
Fixed3D
lblcheckbox
Control CheckBox
True
lblradiobutton
Control RadioButton
True
chequeo1
Cambiar tipo de letra
chequeo2
Cambiar color del texto
chequeo3
Cambiar color de fondo
radio1
Cambiar color del texto
True
radio2
99
RadioButton3
Panel1
Panel2
Form1
Text
Name
Text
Name
Naame
Name
Text
Escribir cdigo
a) Seleccione el objeto Chequeo1, d doble clic para abrir el editor de cdigo
Chequeo1_CheckedChanged y escriba el siguiente cdigo:
If (Chequeo1.Checked) Then
txtcheckbox.Font=New Font ("Microsoft Sans Serif", 8.25!, FontStyle.Bold)
Else
txtcheckbox.Font=New Font ("Microsoft Sans Serif", 8.25!, FontStyle.Italic)
End If
100
e) Seleccione el objeto radio2, d doble clic para abrir el editor del procedimiento
radio2_CheckedChanged y escriba el siguiente cdigo:
If (opcion2.Checked) Then
txtradiobutton.ForeColor = System.Drawing.Color.Red
Else
txtradiobutton.ForeColor = System.Drawing.Color.Black
End If
f) Seleccione el objeto radio3, d doble clic para abrir el editor del procedimiento
radio3_CheckedChanged y escriba el siguiente cdigo:
If (opcion3.Checked) Then
txtradiobutton.BackColor = System.Drawing.Color.Aquamarine
Else
txtradiobutton.BackColor = System.Drawing.Color.White
End If
Ejecutar el proyecto
102
Propiedad
Name
Maximum
Minimum
Name
Maximum
Minimum
Name
Text
Name
Text
Name
Text
Name
Text
Enabled
Name
Text
Enabled
Name
Text
Enabled
Name
Name
Name
Name
Text
Valor
barra1, barra2, barra3
255
0
desplazamiento1,
desplazamiento2,
desplazamiento3
255
0
lblrojo
Rojo:
lblverde
Verde:
lblazul
Azul:
txtrojo
En blanco
False
txtverde
En blanco
False
txtazul
En blanco
False
panelsrcollbar
paneltrackbar
panelcolores
formulario
Controles VScrollBar - TrackBar
Escribir cdigo
a) Seleccione el objeto barra1, d doble clic para abrir el editor del procedimiento
barra1_Scroll y escriba el siguiente cdigo:
103
b) Seleccione el objeto barra2, d doble clic para abrir el editor del procedimiento
barra2_Scroll y escriba el siguiente cdigo:
panelcolores.BackColor = Color.FromArgb (barra1.Value, barra2.Value, barra3.Value)
txtverde.Text = barra2.Value
c) Seleccione el objeto barra3, d doble clic para abrir el editor del procedimiento
barra3_Scroll y escriba el siguiente cdigo:
panelcolores.BackColor = Color.FromArgb (barra1.Value, barra2.Value, barra3.Value)
txtazul.Text = barra3.Value
Ejecutar el proyecto
104
7.5 DataGridView
permite mostrar datos en una malla o tabla, estos datos
Un control DataGridView
pueden ser con o sin orgen de datos externos (archivos de texto, bases de datos). Sin
especificar un orgen de datos, se pueden crear las columnas y filas que contendrn los
datos y agregarlas directamente al DataGridView. Con orgen de datos se pueden
establecer las propiedades DataSource y DataMember para enlazar el control
DataGridView a un orgen de datos y llenarlo de datos automticamente.
7.5.1 Ejemplo prctico DataGridView
Crear una aplicacin llamada DataGridView que permita a un usuario digitar un
nmero y al pulsar un botn se muestre en una cuadricula la tabla de multiplicacin de
dicho nmero.
Propiedad
Name
Text
Name
Text
Name
Text
Name
Name
Text
Name
Text
Valor
lblnumero
Digite un nmero:
lbltabla
Tabla de Multiplicar del nmero N.
txtnumero
En blanco
tabla
boton
Ver Tabla
formulario
Control DataGridView.
105
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor del procedimiento
botn_click y escriba el siguiente cdigo:
With tabla
.Columns.Add("Multiplicando", " Multiplicando ")
.Columns.Add("Multiplicador", " Multiplicador ")
.Columns.Add("Producto", "Producto")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = txtnumero.Text
.Item(1, i).Value = i + 1
.Item(2, i).Value = (txtnumero.Text * (i + 1))
Next
End With
Este cdigo sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el mtodo Add de la propiedad Columns se le adicionan los nombres
Multiplicando, Multiplicador, Producto en la primera fila del objeto tabla y por
medio de la propiedad RowCount se le asigna un valor de 10 filas. Con un ciclo For
que se ejecutar desde una posicin i igual a cero (0) hasta el numero de filas -1 del
objeto tabla y por cada fila se visualizarn tres tems. En la primera columna se
imprimir el valor digitado en el objeto txtnumero, en la segunda columna se
imprimir el valor de i+1 y en la tercera columna el producto de multiplicar el valor del
objeto txtnumero por i+1.
Ejecutar el proyecto
106
7.6 ListView
Un control ListView
permite visualizar una lista de elementos con texto y
opcionalmente con un icono que identifique al elemento. Los elementos se pueden
mostrar cmo: iconos grandes, iconos pequeos, lista de iconos o detalles. La vista de
detalles (Details) permite mostrar el elemento y sus subelementos en una cuadrcula con
encabezados de columna que identifican la informacin que se presenta en un
subelemento.
7.6.1 Ejemplo prctico ListView
Crear una aplicacin llamada ListView que permita a un usuario seleccionar un tipo de
comida rpida, como tambin seleccionar un tipo de bebida. El usuario deber visualizar
en un control ListView un cdigo, el elemento seleccionado, el valor del elemento, as
como la sumatoria de los elementos seleccionados. Por otro lado, el usuario podr
seleccionar un elemento y eliminarlo del control ListView.
107
Propiedad
Name
Text
Font-Bold
Name
Text
Name
Text
Name
Text
Font-Bold
Name
Text
Name
Name
Name
Name
Text
Name
Text
Name
Text
Name
Text
Valor
lbltexto
Solicitar pedido
True
lblcomida
Comida rpida :
lblbebida
Bebida:
lbltotal
Total Pedido
True
txttotal
En blanco
elementospedido
combocomida
combobebida
botoncomida
Adicionar Comida
botonbebida
Adicionar Bebida
botoneliminar
Eliminar comida o bebida
formulario
Control ListView.
108
109
110
Escribir cdigo
a) Despes de la apertura de la clase Public class formulario y antes del primer
procedimiento Sub, declare como publicas las variables llamadas valor, cdigo,
sumar, i de tipo Integer. D doble clic sobre el formulario y busque clase
formulario y escriba este cdigo escriba:
Public Class formulario
Public valor, cdigo, sumar, i As Integer
Se declaran como publicas las variables valor, cdigo, sumar e i. Estas podrn
ser utilizadas por cualquier procedimiento de la clase.
b) Seleccione el objeto formulario, d doble clic para abrir el editor del
procedimiento Formulario_Load y escriba el siguiente cdigo:
cdigo = 1
111
Ejecutar el proyecto
114
7.7 RichTextBox
Un control RichTextBox
permite tener un texto en varias lneas. Todo el texto que
se muestra se establece con la propiedad Text. El control RichTextBox sirve para
manipular archivos; los mtodos LoadFile y SaveFile pueden mostrar y escribir en
varios formatos de archivo, entre ellos, texto sin formato, texto sin formato Unicode y
formato de texto enriquecido (RTF). Puede utilizar el mtodo Find para buscar cadenas
de texto o caracteres especficos.
7.7.1 Ejemplo prctico RichTextBox
Elaborar una aplicacin llamada RichTextBox que permita a un usuario buscar
palabras o frases en un texto. Si se encuentra la palabra o la frase esta se debe resaltar.
Cuando se desee realizar una segunda bsqueda la palabra o frase anterior debe quedar
resaltada con otro color.
Propiedad
Name
Text
Valor
lblpalabra
Palabra o frase a buscar:
115
TextBox1
RichTextbox1
Button1
Form1
Name
Text
Name
Text
Name
Text
Name
Text
txtpalabra
En blanco
texto
Copiar cualquier texto
botonbuscar
Buscar coincidencias
formulario
Control RichTextBox
Escribir cdigo
a) Seleccione el objeto botonbuscar, d doble clic para abrir el editor del
procedimiento botonbuscar_click y escriba el siguiente cdigo:
buscar_patron(txtpalabra.Text, texto, Color.Red, Color.Yellow)
116
With objetotexto
.SelectAll()
.SelectionColor = Color.Black
End With
For Each palabra In coincidencias
With objetotexto
.SelectionStart = palabra.Index
.SelectionLength = palabra.Length
.SelectionColor = colortexto
.SelectionBackColor = colorfondo
End With
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Ejecutar el proyecto
117
7.8 TreeView
Un control TreeView
permite mostrar una jerarqua de nodos a usuarios, del
mismo modo como se muestran las carpetas y los archivos en el explorador de
Windows. Cada nodo (nodos primarios) puede contener otros nodos, llamados nodos
secundarios. Los nodos primarios o los nodos secundarios se pueden visualizar como
expandidos o contrados. Tambin se puede mostrar una vista de los nodos con casillas
de verificacin junto a los nodos estableciendo la propiedad CheckBoxes con el valor
True. Por otro lado, es posible activar o desactivar los nodos mediante programacin
estableciendo la propiedad Checked del nodo en True o False.
118
Propiedad
Name
Text
Name
Name
Text
Valor
lbltexto
Explorador de unidades lgicas
explorador
formulario
Control RichTextBox
119
Escribir cdigo
a) Antes de la apertura de la clase se debe importar el espacio de nombres
System.IO. D doble clic sobre el formulario, busque Public class formulario
y antes de este cdigo escriba lo siguiente:
imports System.IO
Public Class formulario
End Class
Se declara una matriz de tipo String llamada unidades a la cual se le asignan las
unidades logicas del equipo donde se este trabajando por medio de la funcin
GetLogicalDrives de la clase Environment del espacio de nombres System. Se utiliza
la estructura For-Each para recorrer cada una de las unidades lgicas que contiene la
matriz unidades. Cada unidad es adicionada como un nodo al control TreeView
explorador.
c) Seleccione el objeto explorador, d doble clic para abrir el editor del
procedimiento explorador_AfterSelect y escriba el siguiente cdigo:
Dim directorio As DirectoryInfo
directorio = New DirectoryInfo(e.Node.FullPath)
Dim carpetas() As DirectoryInfo
carpetas = directorio.GetDirectories()
Dim subcarpetas As DirectoryInfo
Dim nodo As TreeNode
For Each subcarpetas In carpetas
nodo = New TreeNode(subcarpetas.Name, 0, 1)
e.Node.Nodes.Add(nodo.Text)
Next
120
Ejecutar el proyecto
121
7.9 FolderBrowserDialog
permite mostrar un cuadro de dilogo donde se
Un control FolderBrowserDialog
pide al usuario que seleccione una carpeta. Tiene la misma apariencia del explorador de
Windows. La carpeta raz donde se va a empezar a examinar se obtiene con la propiedad
RootFolder, mientras la propiedad SelectedPath permite establecer la ruta
seleccionada por el usuario. Con la propiedad ShowNewFolderButton se establece un
valor (True, False) que indica si el botn Nueva carpeta aparece en el cuadro de
dilogo de examinar carpetas.
7.9.1 Ejemplo prctico FolderBrowserDialog
Elaborar una aplicacin llamada FolderBrowserDialog que permita a un usuario
visualizar las unidades lgicas de un computador, adems poder desplazarse por las
carpetas de cada unidad lgica.
Propiedad
Name
Text
Name
Name
Text
Valor
boton
Ver cuadro de dilogo de las unidades actuales.
unidades
formulario
Control FolderBrowserDialog.
122
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor del procedimiento
boton_Click y escriba el siguiente cdigo:
Try
With unidades
.Reset()
.Description = " Seleccionar una unidad y/o carpeta "
.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
.ShowNewFolderButton = False
.RootFolder = Environment.SpecialFolder.Desktop
Dim vercuadro As DialogResult = .ShowDialog
If vercuadro = DialogResult.OK Then
Dim nroarchivos As ObjectModel.ReadOnlyCollection(Of String)
nroarchivos = My.Computer.FileSystem.GetFiles(.SelectedPath)
MsgBox("Total de archivos en la unidad y/o carpeta seleccionada :" &
nroarchivos.Count, MsgBoxStyle.Information)
End If
.Dispose()
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
En el bloque Try se establece una clusula With donde se realizan las siguientes
operaciones con el control FolderBrowserDialog unidades: .Reset() reinicia el control
unidades; .Description muestra una descripcin del control unidades; .SelectPath
selecciona una unidad o carpeta especifica, es este caso la carpeta Personal (My
Documents), .ShowNewFolderButton permite habilitar (True) o deshabilitar (False) la
opcion de creacin de nuevas carpetas; .RootFolder determina la unidad o carpeta
inicial a mostrar. Por otro lado, se crea una variable de tipo DialogResult llamada
vercuadro a la cual se le asigna la propiedad ShowDialog del control unidades. Se
valida si en el cuadro de dilogo se pulsa el botn Aceptar. Si se cumple la condicin
se crea un objeto nroarchivos de tipo ReadOnlyCollection (crea una coleccin de solo
lectura) del espacio de nombres ObjectModel, a este, se le asigna una coleccin de solo
lectura de todos los archivos de la unidad o carpeta seleccionada
(My.Computer.FileSystem.GetFiles(.SelectedPath)) y se muestran el total de
archivos (Count) en un cuadro de dilogo MsgBox. Por ltimo se libera (.dispose()) los
recursos utlizados. En el bloque Catch se captura en el objeto ex de tipo Exception el
error que se pueda generar y se mostrar un cuadro de dilogo con el mensaje de error.
Ejecutar el proyecto
123
124
Figura 7.37 Cuadro de dilogo con el total de archivos de una unidad seleccionada.
7.10 WebBrowser
permite visualizar pginas Web en las aplicaciones
Un control WebBrowser
cliente de los formularios Windows Forms y/o otros documentos tipo HTML. El control
WebBrowser contiene eventos relacionados con la navegacin exploracin: Url
(direccin electrnica de una pgina web), Navigate (navegar), GoBack (ir atrs),
GoForWard (ir adelante), GoHome (Ir al inicio), GoSearch (Buscar), Stop (Parar),
Refresh (refrescar), etc.
7.10.1 Ejemplo prctico WebBrowser
Elaborar una aplicacin llamada WebBrowser que permita a un usuario visualizar
pginas Web especficas desde un control WebBrowser. El usuario debe poder ir al
inicio, ir a la pgina anterior, ir a la pgina siguiente, detener la ejecucin de una pgina,
refrescar una ejecucin de una pgina, como tambin visualizar la pgina visitada en un
momento dado.
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
botonanterior
Anterior
botonsiguiente
Siguiente
botoninicio
Inicio
botondetener
Detener
Valor
125
Button5
Button6
ComboBox1
WebBrowser1
Label1
Form1
Name
Text
Name
Text
Name
Name
Name
Text
Name
Text
botonrefrescar
Actualizar
botonnavegar
Navegar
combopaginas
navegador
textopagina
Texto pgina
formulario
Control WebBrowse.
126
Escribir cdigo
a) Seleccione el objeto botonanterior, d doble clic para abrir el editor del
procedimiento botonanterior_Click y escriba el siguiente cdigo:
navegador.GoBack()
pgina.
inicio.
127
Se utiliza el mtodo Stop() del objeto navegador para ir detener una pgina en
ejecucin.
e) Seleccione el objeto botonrefrescar, d doble clic para abrir el editor del
procedimiento botonrefrescar_Click y escriba el siguiente cdigo:
navegador.Refresh()
Se utiliza el mtodo Navigate() del objeto navegador para ejecutar una pgina.
Recibe como parmetros la pgina seleccionada en la propiedad SelectedItem del
control combopaginas. Con la funcin Trim se quitan todos los espacios que existan.
Por otro lado, se le asigna a la propiedad Text del objeto textopagina la pgina
seleccionada.
Ejecutar el proyecto
128
129
8. MENS EN FORMULARIOS
Los mens en una aplicacin son el medio que tiene el usuario para interactuar con
dicha aplicacin. Se pueden crear aplicaciones donde se utilice un men que interactu
sobre un nico formulario, este tipo de aplicaciones son llamadas SDI (Interfaz de
documento sencillo). Algunos programas que manejan est estilo de interfaz son:
Wordpad, Bloc de notas, Calculadora de Microsoft Windows, etc. Tambin se pueden
crear aplicaciones con mens que interacten con varios formularios en una ventana,
estas aplicaciones son llamadas MDI (Interfaz de documentos mltiple), los ejemplos
clsicos son el procesador de texto Word la hoja de clculo Excel de Microsoft. Las
aplicaciones MDI se reconocen por incluir mens con submens para cambiar entre las
distintas ventanas o documentos. La interfaz de mens se trabaja con el control
que representa el contenedor de una estructura de mens de un
MenuStrip
formulario conocidos como mens desplegables, adems, se le pueden adicionar los
elementos: ToolStripMenuItem, ToolStripTextBox y ToolStripComboBox. El
objeto ToolStripMenuItem representan los comandos de men individuales de la
estructura del men. Cada objeto ToolStripMenuItem puede ser un comando de la
aplicacin o un men primario para otros elementos de submen.
8.1 Creacin de Mens con Interfaz de documento sencillo
Los mens y barras de herramientas proporcionan una forma estructurada y accesible
para que los usuarios aprovechen los comandos y las herramientas contenidas en sus
aplicaciones. La preparacin y el diseo apropiados de mens y barras de herramientas
garantizarn la funcionalidad en la aplicacin.
A menudo los usuarios examinan los mens antes de buscar informacin sobre
la aplicacin en cualquier otro lugar. Si los mens estn bien diseados, los usuarios
podrn comprender la aplicacin y desarrollar un modelo mental basado nicamente en
la organizacin de los mens y su contenido.
La creacin de un sistema de mens implica varios pasos independientemente
del tamao de la aplicacin y la complejidad de los mens que pretenda usar, estos
deben ser:
Preparar y disear el sistema: Decida los mens que necesita, dnde deben
aparecer en la interfaz, cules requieren submens, etc.
Crear los mens y submens: Defina los ttulos, elementos de men y
submens mediante el Diseador de mens.
Asignar las tareas que desee al sistema: Especifique las tareas que los mens
deben realizar, como mostrar formularios y cuadros de dilogo.
Generar el programa de men: Ejecutar el programa para probar el sistema
de mens.
131
Propiedad
Name
Name
Name
Name
Name
Name
Name
Text
Valor
ventana
cuadrodecolores
cuadrodefuentes
cuadroabrirrchivo
cuadroguardarrchivo
menuprincipal
formulario
Interfaz de documento sencillo
Pulse sobre el control menuprincipal para que aparezca sobre este el texto
Escriba aqu.
Figura 8.4 Objeto menuprincial seleccionado.
132
All escriba el nombre del men &Archivo (Se utiliza el & para subrayar la
letra A y asociarlo a un mtodo de acceso abreviado, ms adelante se explicar cmo se
puede definir este tipo de acceso). Cuando empieza a escribir aparecen dos textos
Escriba aqu; uno a la derecha y el otro en la parte inferior.
Figura 8.5 Creacin del men Archivo.
Para el Men Archivo adicione los submens necesarios para obtener la siguiente
figura:
Para colocar la lnea separadora, sitese donde la desea crear y d clic derecho,
seleccione la opcin Insertar y all escoja Separator, como se muestra en la siguiente
figura:
133
Para el Men Edicin adicione los submens necesarios para obtener la siguiente
figura:
Para el Men Formato adicione los submens necesarios para obtener la siguiente
figura:
134
Seleccione la flecha
modificadores de teclas.
135
NOTA: Puede crear todas las teclas de acceso abreviado que desee de la misma forma.
Debe tener en cuenta que no pueden definir dos o ms teclas de acceso rpido iguales.
Escribir cdigo
Despus de completar el diseo del men se debe seleccionar cada uno de los mens
para agregarle el respectivo cdigo de acuerdo a la operacin que va a realizar.
a) Seleccione el men Nuevo, d doble clic para abrir el editor del procedimiento
NuevoToolStripMenuItem_Click y escriba el siguiente cdigo:
136
IO.StreamReader (clase que se utiliza para leer lneas de informacin desde un archivo
de texto estndar) que guardar el nombre del archivo de texto asignado a la propiedad
FileName del control cuadroabrirrchivo. A la propiedad Text del objeto ventana se
le asignar el contenido del archivo utilizando el mtodo ReadtoEnd que lee el archivo
desde el principio hasta el final. Si por el contrario no contiene informacin se mostrar
un mensaje informando que el archivo seleccionado esta vaci.
c) Seleccione el men Guardar, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
If cuadroguardarrchivo.FileName.Length > 0 Then
ventana.SaveFile(cuadroguardarrchivo.FileName,RichTextBoxStreamType.PlainText)
Else
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(ventana.Text)
guardarrchivo.Close()
End If
Esta opcin permitir guardar un archivo que previamente se haba guardado con
un nuevo nombre. Se realiza el mismo proceso utilizado por la estructura Else del men
Guardar.
138
e) Seleccione el men Salir, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
End
Se utiliza la funcin Undo del control RichTextBox ventana para deshacer una
operacin realizada anteriormente.
g) Seleccione el men Rehacer, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
If ventana.CanRedo = True Then
If ventana.RedoActionName <> "Delete" Then
ventana.Redo()
End If
End If
Se utiliza la funcin Redo del control RichTextBox ventana, para rehacer una
operacin previamente se habia eliminado. En este caso se valida si anteriormente se
habia eliminado un texto (CanRedo) y si esa operacin tenia el nombre de eliminar
(Delete) utilizando la funcin RedoActionName.
h) Seleccione el men Cortar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Cut()
139
k) Seleccione el men Borrar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Clear()
Se utiliza la funcin Clear del control RichTextBox ventana para borrar todo el
contenido de la propieda Text del control ventana.
m) Seleccione el men Seleccionar todo, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
ventana.SelectAll()
140
ventana.SelectionBullet = True
Ejecutar el formulario
cascada, minimizar.
Para crear la interfaz de usuario se utilizarn cinco formularios. Uno de ellos ser el
formulario principal o contenedor de los otros cuatro formularios los cuales realizarn
una labor especfica cada uno.
Valor
Propiedad
Name
menuprincipal
Name
formularioprincipal
IsMdiContainer True (cambia el color del formulario a un gris
oscuro. Permite convertir este formulario es un
contendor de formularios MDI).
WindowState
Maximized
Text
Interfaz de documentos Mltiple.
Para el Men Archivo adicione los submens para obtener la siguiente figura:
Para el Men Edicion adicione los submens para obtener la siguiente figura:
Para el Men Mis Formularios adicione los submens para obtener la siguiente
figura:
143
Para el Men Ventana adicione los submens para obtener la siguiente figura:
Propiedad
Name
Label1
Text
Font - Bold
Name
Label2
Text
Font - Bold
DateTimePicket1 Name
TextBox1
Name
Form1
Name
Text
Valor
lblfecha
Seleccione una nueva fecha
True
lblformato
La fecha en formato nmerico
True
controlfecha
txtformato
formulariofecha
Control DateTimePicker
Escribir cdigo
Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
controlfecha_ValueChanged y escriba el siguiente cdigo:
txtformato.Text = controlfecha.Value
145
Propiedad
Name
Text
Font - Bold
Name
Name
Name
Text
Valor
lblfecha
Fecha seleccionada numrica:
True
controlcalendario
txtformato
formulariomeses
Control MonthCalendar
Escribir cdigo
Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
controlcalendario_DateChanged y escriba el siguiente cdigo:
txtfecha.Text = controlcalendario.SelectionEnd.Date
146
Propiedad
Name
Text
Font - Bold
Label2
Name
Text
Font - Bold
Label3
Name
Text
Font - Bold
TextBox1
Name
TextBox2
Name
TextBox3
Name
TextBox4
Name
TextBox5
Name
TextBox6
Name
CheckedListBox1 Name
CheckOnClick
Font -Bold
Form1
Name
Text
Valor
lbltexto
Traductor Animales Espaol - Ingles
True
lblespaol
Espaol
True
lblingles
Ingles
True
txtvaca
txtabeja
txtoso
txtpajaro
txtperro
txtgato
listaespaol
True
True
formulariolenguaje
Traductor Animales Espaol - Ingles
Escribir cdigo
Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
listaespaol_SelectedIndexChanged y escriba el siguiente cdigo:
147
If listaespaol.GetItemChecked(0) Then
txtvaca.Text = "COW"
Else
txtvaca.Text = ""
End If
If listaespaol.GetItemChecked(1) Then
txtabeja.Text = "BEE"
Else
txtabeja.Text = ""
End If
If listaespaol.GetItemChecked(2) Then
txtoso.Text = "BEAR"
Else
txtoso.Text = ""
End If
If listaespaol.GetItemChecked(3) Then
txtpajaro.Text = "BIRD"
Else
txtpajaro.Text = ""
End If
If listaespaol.GetItemChecked(4) Then
txtperro.Text = "CAN"
Else
txtperro.Text = ""
End If
If listaespaol.GetItemChecked(5) Then
txtgato.Text = "CAT"
Else
txtgato.Text = ""
End If
Propiedad
Name
Name
Text
Valor
ventana
formularioventana
Editor de texto bsico
148
Antes de escribir el cdigo para cada una de las opciones del men, arrastre los objetos
OpenFileDialog y SaveFileDialog y cambie la propiedad Name de dichos objetos por
cuadroabrirrchivo y cuadroguardarrchivo respectivamente. Estos dos controles
servirn para realizar los procesos de apertura y guardado de un archivo de texto.
a) Seleccione el men Nuevo, d doble clic para abrir el editor del procedimiento
NuevoToolStripMenuItem_Click y escriba el siguiente cdigo:
Dim nuevoformulario As New formularioventana
nuevoformulario.MdiParent = Me
nuevoformulario.Show()
149
Dado que una aplicacin MDI puede tener muchas instancias del mismo
formulario secundario, se necesita especificar el formulario activo. Con la propiedad
ActiveMdiChild, se puede obtener el formulario secundario que tiene el foco o que
est activo. Adems cuando se tienen varios controles en un formulario se debe
especificar el control que est activo, esto se puede realizar con la propiedad
ActiveControl que establece el control que est activo en el formulario secundario
Se crea un objeto llamado nuevoformulario de tipo Form al cual se le asigna el
formulario activo, por otro lado, se crea una variable llamada nuevaventana de tipo
RichTextBox a la cual se le asignar el control activo del formulario secundario. Se
utilizo la funcin CType para devolver el resultado de convertir explcitamente una
expresin a un tipo de dato, objeto, estructura o clase. A la propiedad Text del objeto
nuevaventana se le asignar el contenido del archivo utilizando el mtodo ReadtoEnd
que lee el archivo desde el principio hasta el final.
c) Seleccione el men Guardar, d doble clic para abrir el editor del
procedimiento GuardarToolStripMenuItem_Click y escriba el siguiente
cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(nuevaventana.Text)
guardarrchivo.Close()
150
g) Seleccione el men Rehacer, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
nuevaventana.Redo()
h) Seleccione el men Cortar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Cut()
i) Seleccione el men Pegar, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
151
nuevaventana.Paste()
j) Seleccione el men Copiar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Copy()
m) Seleccione el men Formulario Meses, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Dim formularios As New formulariomeses
formularios.MdiParent = Me
formularios.Show()
n) Seleccione el men Formulario Lenguaje, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Dim formularios As New formulariolenguaje
formularios.MdiParent = Me
formularios.Show()
152
Si se pulsa la opcin Nuevo del men Archivo dos veces y se escogen las
opciones Formulario Fecha, Formulario Meses y Formulario Lenguaje, se obtendra
una figura similar a la siguiente:
Figura 8.28 Men principal con tres formularios abiertos.
153
b) Seleccione el men Mosaico Vertical, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Me.LayoutMdi(MdiLayout.TileVertical)
c) Seleccione el men Cascada, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Me.LayoutMdi(MdiLayout.Cascade)
Se crea un ciclo For donde se inicializa una variable de tipo Integer llamada i
en cero (0) que se ejecutar hasta el total (Length-1) de formularios secundarios abiertos
(MdiChildren) y a la propiedad WindowState de cada formulario abierto se le
asignar la funcin de minimizar (Minimized).
Continuando con el ejemplo anterior, al seleccionar la opcin Mosaico
Horizontal se visualizara la siguiente figura:
Figura 8.30 Opcin Mosaico Horizontal seleccionada.
154
155
156
157
Valor
botonnuevo
Nuevo
Imagen de nueva ventana
botoncortar
Cortar
Imagen de opcin cortar
botonpegar
Pegar
Imagen de opcin pegar
botoncopiar
Copiar
Imagen de opcin copiar
159
En el texto Escriba aqu adicione las opciones que desea tenga el men
contextual. Para el ejemplo, escriba las siguientes opciones: Nuevo, Cortar, Pegar,
Copiar.
Figura 8.40 Men contextual con las opciones agregadas.
160
D doble clic sobre cada opcin del men contextual para programar cada
operacin. El cdigo es el mismo que se utilizo en el men principal o en la barra de
herramientas para dichas opciones.
161
9. GRFICOS Y ANIMACIN
En Microsoft Visual Basic .NET se pueden dibujar diferentes tipos de grficos como
lneas, rectngulos, valos, cuadros, elipses con relleno o sin l. Adems se pueden
crear efectos especiales con una secuencia de imgenes o grficas para dar la sensacin
de movimiento. En este captulo conocer los tipos de grficos de Visual Basic .NET,
como tambin aprender a mover los controles o imgenes en forma horizontal, vertical
o diagonal utilizando las propiedades Left y Top, expandir o contraer los controles o las
imgenes manipulando las propiedades Height y Width. Por otro lado, tambin
conocer como crear efectos de animacin sencillos utilizando los controles
PictureBox, Timer o ImageList.
9.1 El espacio de nombres System.Drawing
Un formulario es como un mantel el cual tiene unas dimensiones las cuales se miden en
pequeos puntos llamados pixeles. Con un sistema de coordenadas se define donde se
coloca cada pixel. Con la coordenada X se mide de izquierda a derecha y con la
coordenada Y se mide de arriba a abajo. Las coordenadas se inician en la esquina
superior izquierda del formulario (x=0, y=0). Los pxeles tambin se utilizan para
expresar el ancho y el alto de los grficos. Para definir un cuadrado que tiene 100
pxeles de ancho y 100 pxeles de alto, cuya esquina superior izquierda se encuentra 10
pxeles a la izquierda y 10 pxeles hacia abajo, se expresar en coordenadas como 10,
10, 100, 100.
El espacio de nombres System.Drawing contiene numerosas clases con las que
se pueden crear dibujos en un programa. Las grficas se pueden crear vacas (prefijo
draw) o con relleno de color (prefijo fill). Para dibujar o utilizar una funcin grfica es
necesario crear un objeto Graphics y un objeto Pen (argumento cuando no se rellena
con ningn color) o Brush (cuando se quiere tener un color de relleno). El objeto
Graphics representa una superficie de dibujo y es el objeto que se usa para crear
imgenes grficas. El objeto Graphics se puede crear en el evento Paint de un
formulario o control, tambin, llamando al mtodo CreateGraphics, adems se pueden
crear objetos Font y Color.
Los objetos Graphics se declaran antes de dibujar.
Dim graficador As Graphics
Aqu va el cdigo de la figura a dibujarse
Crear los objetos Pen para dibujar segmentos de lnea, curvas y los contornos de
formas.
Dim lapiz As System.Drawing.Pen
lapiz = New System.Drawing.Pen (System.Drawing.Color.Red)
Mtodo
Point
Rectangulo (estructura)
Rectangle
Recta
DrawLine
Rectangulo
DrawRectangle,
FillRectangle
Circulo / Elipse
DrawEllipse,
FillEllipse
Curva
DrawCurve
Arco
DrawArc
Poligono
DrawPolygon,
FillPolygon
DrawPie, FillPie
Pie
Descripcin
Representa un par ordenado de coordenadas
x e y de enteros que define un punto en un
plano bidimensional.
Almacena un conjunto de cuatro enteros que
representan la posicin y tamao de un
rectngulo.
Dibuja una lnea que conecta los dos puntos
especificados por los pares de coordenadas
Dibuja un rectngulo especificado por un par
de coordenadas, un valor de ancho y un valor
de alto.
Dibuja una elipse definida por un rectngulo
delimitador especificado por un par de
coordenadas, un valor de alto y un valor de
ancho.
Dibuja una curva a travs de una matriz
especificada por la estructura Point.
Dibuja un arco especificado por un par de
coordenadas, un valor de ancho y un valor de
alto.
Dibuja un polgono definido por una matriz
especificada por la estructura Point.
Dibuja una forma circular definida por una
elipse determinada por un par de coordenadas,
unos valores de ancho y alto y dos lneas
radiales.
163
Propiedad
Name
Text
Name
Text
Name
Text
Name
BorderStyle
Name
Text
Valor
lbltexto
Evento Paint
botonlinea
Lnea con un Botn
botonpicturebox
Lnea con un PictureBox
pintura
Fixed3D
formulario
Crear una Lnea
Escribir cdigo
a) D doble clic sobre el formulario y en la ventana superior derecha seleccione el
evento formulario_Paint y escriba el siguiente cdigo:
Dim lapiz As Pen
lapiz = Pens.Blue
Dim graficador As Graphics
graficador = Me.CreateGraphics
graficador.DrawLine(lapiz, 30, 30, 70, 120)
Se define una variable lapiz de tipo Pen, a dicha variable se le asigna el color
azul (Pens.Blue). Por otro lado, se crea un objeto Graphics llamado graficador al cual
se le asigna el mtodo CreateGraphics. La funcin DrawLine permite dibujar una
lnea, dicho mtodo contiene cinco parmetros: el primero es el color de la lnea, el
segundo es la coordenada X inicial, el tercero es la coordenada Y inicial, el cuarto es la
coordenada X final y el quinto es la coordenada Y final.
b) Seleccione el objeto botonlinea, d doble clic para abrir el editor del
procedimiento botonlinea_Click y escriba el siguiente cdigo:
164
Ejecutar el proyecto
165
Propiedad
Name
Name
BorderStyle
Name
Text
Valor
menugraficas
grafica
FixedSingle
formulario
Funciones Grficas Visual Basic .NET
Para el men Lneas adicione los submens para obtener la siguiente figura:
166
Para el men Curvas adicione los submens para obtener la siguiente figura:
167
Escribir cdigo
a) Seleccione el men Lnea Normal, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawLine(Pens.Red, 10, 10, 220, 80)
Se crea una matriz llamada recortar con los valores 3, 4, 10, 2 que representa
los cortes y los espacios al dibujar una lnea. En el ejemplo se dibuja una lnea
discontinua basada en la matriz {3, 4, 10, 2}. Si se multiplican los elementos de la
matriz por el ancho del lpiz (3), se obtiene {9, 4, 30, 6}. Las lneas que se muestran
alternan sus longitudes entre 9 y 30 y los espacios alternan sus longitudes entre 4 y 6. A
la propiedad DashPattern (patrn de corte) del objeto lapiz se le asigna los valores de
dicha matriz.
d) Seleccione el men Unin de Lneas, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim conectar As New Drawing2D.GraphicsPath()
Dim lapiz As New Pen(Color.Blue, 8)
168
conectar.StartFigure()
conectar.AddLine(New Point(100, 30), New Point(200, 30))
conectar.AddLine(New Point(100, 200), New Point(200, 30))
conectar.AddLine(New Point(100, 200), New Point(200, 200))
lapiz.LineJoin = Drawing2D.LineJoin.Round
grafica.CreateGraphics.DrawPath(lapiz, conectar)
lapiz.Dispose()
169
La funcin DrawEllipse permite dibujar una elipse sin relleno. Dicho objeto
contiene cinco parmetros: el primero es el color de la elipse, el segundo es la
coordenada X, el tercero es la coordenada Y, el cuarto es el ancho y el quinto es el alto.
l) Seleccione el men Elipse con relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillEllipse(Brushes.Blue, 100, 100, 60, 80)
170
La funcin DrawPie permite dibujar un grafico circular definida por una elipse
sin relleno. Dicho objeto contiene siete parmetros: el primero es el color de la curva, el
171
La funcin FillPie permite dibujar un grafico circular definida por una elipse
con relleno.
Ejecutar el proyecto
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Image
Sizemode
Name
Interval
Enabled
Name
Text
Valor
botonderecha
Mover a la derecha
botonabajo
Mover hacia abajo
botondiagonal
Mover de forma diagonal
botonderechatimer
Mover a la derecha con Timer
botonabajotimer
Mover hacia abajo con Timer
botondiagonaltimer
Mover de forma diagonal con Timer
botondetener
Detener Reloj
imagen
La imagen de un avin
StretchImage
reloj
1000
False
formulario
Funciones Grficas Visual Basic .NET
173
Escribir cdigo
a) Seleccione el objeto botonderecha, d doble clic para abrir el editor del
procedimiento botonderecha_Click y escriba el siguiente cdigo:
imagen.left = imagen.left + 10
En este cdigo se modifica los valores de las propiedades Left y Top del
control imagen, esto permitir que la imagen se desplace 10 pixeles a la derecha y 10
hacia abajo.
d) Seleccione el objeto botonderechatimer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled=True
If (botonderechatimer.Focused) Then
imagen.Left = imagen.Left + 10
End If
If (botonabajotimer.Focused) Then
imagen.Top = imagen.Top + 10
End If
If (botondiagonaltimer.Focused) Then
imagen.Top = imagen.Top + 10
imagen.Left = imagen.Left + 10
End If
Ejecutar el proyecto
175
Propiedad
Name
SizeMode
Image
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Interval
Valor
imagen
StretchImage
La imagen del planeta tierra.
botonexpandir
Expandir Imagen.
botoncontraer
Contraer Imagen.
botonexpandirtimer
Expandir Imagen con Timer.
botoncontraertimer
Contraer Imagen con Timer.
botondetener
Detener reloj
Formulario
Expandir y contraer una imagen
reloj
1000
176
Escribir cdigo
a) Seleccione el objeto botonexpandir, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
imagen.Height = imagen.Height + 10
imagen.Width = imagen.Width + 10
177
Ejecutar el proyecto
9.4 Animacin
Incluir animacin en un programa lo hace ms atractivo a la vista y en Visual Basic
.NET es sumamente fcil hacerlo y all el control Timer es parte esencial para generar
la animacin de los objetos porque estn en funcin del tiempo. Se dice que animar es
dar la sensacin de movimiento a una imagen mediante diversas tcnicas. Una de tantas
es cambiar varios cuadros por segundo de modo que se aparente un cambio de posicin,
de all que la animacin est ligada al tiempo.
9.4.1 Ejemplos prcticos de animacin
1) Escribir una aplicacin llamada MovimientoLineas que cuando se pulse un botn se
dibujen lneas con coordenadas X, Y igual a 150 y un radio de 100 en un cuadro cada
segundo en el sentido de las manecillas de un reloj.
178
Propiedad
Name
BorderStyle
Image
Name
Text
Name
Text
Name
Text
Name
Interval
Valor
pintura
FixedStyle
La imagen del planeta tierra.
botoniniciar
Iniciar
botondetener
Detener
Formulario
Movimiento de una Lnea
reloj
1000
Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim decima_segundo As Double = 0
Dim xpos, ypos As Integer
Private sub ..
Integer.
b) Seleccione el objeto botoniniciar, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = True
d) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
xpos = Int(100 * Math.Cos(decima_segundo))
ypos = Int(100 * Math.Sin(decima_segundo))
pintura.CreateGraphics.DrawLine(Pens.Salmon, 100, 100, 100 + xpos, 100 + ypos)
decima_segundo += 0.1
Ejecutar el proyecto
180
Propiedad
Name
BorderStyle
Sizemode
Name
Text
Name
Images
Name
Text
Name
Interval
Valor
imagen
FixedStyle
StretchImage
boton
Girar
listadeimagenes
Secuencias de imgenes de la luna.
Formulario
Movimiento con secuencia de imgenes.
reloj
500
Enabled
True
181
182
Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim y As Integer
Dim interruptor As Integer
Private sub ..
183
If y = 7 Then y = 1
imagen.Image = listadeimagenes.Images.Item(y)
End Sub
Ejecutar el proyecto
184
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Interval
Valor
botontexto
Texto aleatorio.
botonlimpiar
Limpiar formulario.
botondetener
Detener impresin
Formulario
Texto aleatorio.
reloj
1000
185
Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim grafica As Graphics
Dim valorx, valory As Integer
Dim fuente As New System.Drawing.Font("Arial", 14, FontStyle.Bold)
Private sub ..
f) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
Randomize()
valorx = Int(Rnd() * 200)
valory = Int(Rnd() * 200)
grafica.DrawString("Texto en movimiento aleatorio", fuente, Brushes.Blue, valorx,
valory)
Ejecutar el proyecto
187
188
Propiedad
Name
Text
Name
Text
Font - Bold
Name
Text
Valor
boton
Control.
lbltexto
Texto
True
formulario
Eventos mouse mover control.
Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim mover As Boolean = False
Dim primeravez As Boolean = False
Dim valorx = 0
Dim valory = 0
Private sub ..
189
Ejecutar el proyecto
190
Propiedad
Name
Text
Valor
formulario
Dibujar con el Mouse.
Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim x,y as Integer
Dim moverraton As Boolean = False
Dim grafica As Graphics=Me.createGraphics
Private sub ..
191
moverraton = True
True.
False.
Ejecutar el proyecto
192
Propiedad
Name
BorderStyle
Name
Text
Font - Bold
Name
Text
Valor
pintura
Fixed3D
lbltexto
Texto
True
formulario
Color al pulsar una tecla.
193
Escribir cdigo
a) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior
derecha el procedimiento formulario_KeyDown y escriba el siguiente cdigo:
If e.KeyCode = Keys.A Then
pintura.BackColor = Color.Blue
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If
If e.KeyCode = Keys.R Then
pintura.BackColor = Color.Red
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If
If e.KeyCode = Keys.N Then
pintura.BackColor = Color.Black
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If
Ejecutar el proyecto
194
2) Crear una aplicacin llamada DetectarTecla que permita a un usuario escribir en una
primera caja de texto solo nmeros y en una segunda caja de texto solo letras. Adems
se debe permitir eliminar lo tecleado en la respectiva caja de texto, como tambin al
pulsar la tecla Enter en la primera caja de texto, se deber enviar el foco a la segunda
caja de texto.
Propiedad
Name
Name
Name
Text
Name
Text
Name
Text
Valor
txtnumero
txtletra
lblnumero
Dgite solo nmeros:
lblletra
Dgite solo letras:
formulario
Detectar tecla pulsada.
Escribir cdigo
a) Seleccione el objeto txtnumero, d doble clic y escoja de la ventana superior
derecha el procedimiento txtnumero_KeyPress y escriba el siguiente cdigo:
If (Asc(e.KeyChar)) >= 48 And (Asc(e.KeyChar)) <= 57
Or (Asc(e.KeyChar)) =Keys.Back Or (Asc(e.KeyChar)) =Keys.Enter Then
e.Handled = False
Else
MsgBox("Solo se pueden digitar nmeros", MsgBoxStyle.Information)
e.Handled = True
195
End If
If (e.KeyChar = Convert.ToChar(Keys.Enter)) Then
txtletra.Focus()
End If
Se utiliza la funcin Asc para determinar el valor Ascci del carcter pulsado
obtenido de la propiedad KeyChar. Los nmeros de 0 a 9 se encuentran en el rango
Ascci entre 48 y 57. Tambin se determina el valor cuando de pulsa la tecla Back
(retroceso) y Enter. Si la condicin es verdadera se establece que se controlo el evento
y por consiguiente se debe procesar (e.Handled = False). En caso contrario no se
procesa el evento y se mostrar en un cuadro de dilogo MsgBox el mensaje Solo se
pueden dgitar nmeros. Por otro lado, al pulsarse la tecla Enter se enviar el cursor
al objeto txtletra el cual es realizado con la funcin Focus().
b) Seleccione el objeto txtletra, d doble clic y escoja de la ventana superior
derecha el procedimiento txtletra_KeyPress y escriba el siguiente cdigo:
If (Asc(e.KeyChar)) >= 65 And (Asc(e.KeyChar)) <= 90 Or
(Asc(e.KeyChar)) >= 97 And (Asc(e.KeyChar)) <= 122 Or
(Asc(e.KeyChar)) = Keys.Back Then
e.Handled = False
Else
MsgBox("Solo se pueden digitar letras", MsgBoxStyle.Information)
e.Handled = True
End If
Se utiliza la funcin Asc para determinar el valor Ascci del carcter pulsado
obtenido de la propiedad KeyChar. Las letras minsculas se encuentran en el rango
Ascci entre 97-122 y las letras maysculas en el rango 65 - 90. Tambin se determina el
valor cuando de pulsa la tecla Back. Si la condicin es verdadera se establece que se
controlo el evento y por consiguiente se debe procesar (e.Handled = False). En caso
contrario no se procesa el evento y se mostrar en un cuadro de dilogo MsgBox el
mensaje Solo se pueden dgitar letras.
Ejecutar el proyecto
196
197
una clase, se crea una instancia de esa clase. En general, los trminos objetos e
instancias de una clase se pueden utilizar indiferentemente. Una clase es una coleccin
de objetos similares y un objeto es una instancia de una definicin de una clase.
Para declarar una clase se utiliza la palabra reservada Class seguida del nombre
de la clase y el cuerpo de la misma, terminndose con End Class. El cuerpo de la clase
incluye los atributos y los mtodos.
Class Alumno
Cuerpo de clase (Atributos y mtodos)
End Class
Toda clase debe contener una definicin de variables o mtodos precedida por
un modificador de acceso a los miembros; los modificadores de acceso a miembros
pueden aparecer varias veces y en cualquier orden en una definicin de una clase. Los
modificadores de acceso de Visual Basic.NET son: public (pblico), private (privado)
y protected (protegido). Cuando un miembro de una clase tiene el especificador public,
ese miembro puede ser accedido por cualquier parte del programa. Cuando un miembro
es protected, ese miembro puede ser utilizado para realizar la herencia. Cuando un
miembro es private, ese miembro slo puede ser accedido por otros miembros de la
misma clase. Cuando no se utiliza ningn especificador de acceso, por defecto los
miembros de una clase son pblicos.
Los datos o variables definidos en una clase se llaman variables de instancias.
El cdigo est contenido en los mtodos. Los mtodos y las variables de instancias
definidas en una clase son los miembros de la clase.
Class Alumno
variables de instancias
Private nombre_alumno As String
Private asignatura As String
Private curso As integer
mtodos o procedimientos
Public Sub obtenerNombre(nombre As String)
Tareas del metodo
End Sub
Public Function obtenerCurso(curso As Integer) As Integer
Tareas del metodo
End Function
..
End Class
11.1 Constructores
Se llama Constructor a un procedimiento con nombre New el cual se inicializa
automticamente cuando se crea un objeto de la clase. Los constructores pueden recibir
argumentos pero no pueden devolver valores.
11.1.1 Constructores sin parmetros
En algunos casos es necesario crear varios objetos que se inicialicen siempre con
valores predeterminados, es decir cada vez que se cree un nuevo objeto este se
199
200
Class Alumno
Private nombre_alumno As String
Private asignatura As String
Private curso As Integer
Public Sub New(nombre As String, asig As String, numero As Integer)
nombre_alumno=alumno
asignatura=asig
curso=numero
End Sub
Public Sub New(nombre As String, asig As String)
nombre_alumno=alumno
asignatura=asig
curso=0
End Sub
Public Function obtenerNombre(nombre As String) As String
return nombre
End Function
Public Function obtenerCurso(curso As Integer) As Integer
return curso
End Function
..
End Class
//clase base
Estlicenciado //clases derivadas
201
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Text
Valor
botoncsp
Constructor sin parmetros
botonccp
Constructor con parmetros
lblalto
Alto de la caja:
lblancho
Ancho de la caja:
lblprofundidad
Profundidad de la caja:
lblvolumen
Vlumen de la caja:
txtalto
txtancho
txtprofundidad
txtvolumen
formulario
Vlumen de una caja con clases.
202
Para crear una nueva clase puede realizar alguno de los siguientes pasos:
1. Del men Proyecto seleccione Agregar clase
(Agregar Nuevo Elemento) seleccionar Agregar clase
2. Del icono
3. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar y escoger clase
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 11.2 Ventana para agregar una nueva clase.
203
Se declaran tres variables (alto, ancho, profundidad) para guardar los valores
digitados por el usuario respectivamente. Adems se declaran como privadas para que
puedan ser modificadas nicamente por la clase.
Public Sub New(ByVal altoc As Double, ByVal anchoc As Double, ByVal profc As
Double)
alto = altoc
ancho = anchoc
profundidad = profc
End Sub
Se crea un constructor con parmetros que recibe los tres valores digitados por el
usuario en los objetos txtalto, txtancho y txtprofundidad y se asignan a las tres
variables privadas de la clase respectivamente.
Public Sub New()
alto = 0
ancho = 0
profundidad = 0
End Sub
Se crea un constructor sin parmetros, este inicializa las tres variables privadas
de la clase en cero (0).
Public Sub iniciarvariables(ByVal altoc As Double, ByVal anchoc As Double, ByVal
profc As Double)
alto = altoc
ancho = anchoc
profundidad = profc
End Sub
Se crea un procedimiento Sub con parmetros que recibe los tres valores
digitados por el usuario en los objetos txtalto, txtancho y txtprofundidad y se asignan
a las tres variables privadas de la clase respectivamente. Este procedimiento es utilizado
por el constructor sin parmetros.
Public Function volumencaja() As Double
Return alto * ancho * profundidad
End Function
Ejecutar el proyecto
205
206
D clic sobre
coleccin TabPage.
207
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Valor
botonpuntos
Clase Puntos
lblx
Dgite la coordenada X:
lbly
Dgite la coordenada Y:
lblpuntos
Los valores del Punto son (X,Y):
txtx
txty
txtpuntos
208
TabControl1
Form1
Name
Name
Text
fichas
formulario
Figuras utilizando Herencia
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Valor
botoncirculo
Clase Crculo
lblcirculox
Nuevo valor de la coordenada X:
lblcirculoy
Nuevo valor de la coordenada Y:
lblradio
Dgite el valor del radio:
lblradio
Las nuevas coordenadas X,Y, y el
radio es:
lblarea
El rea es:
txtcirculox
txtcirculoy
txtradio
txtxyradio
txtarea
209
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Name
Name
Valor
botoncilindro
Clase Cilindro
lblcilindrox
Nuevo valor coordenada X:
lblcilindroy
Nuevo valor coordenada Y:
lblradiocilindro
Dgite valor radio:
lblaltura
Dgite valor altura:
lblxyradioaltura
Las coordenadas X,Y; el radio y la
altura:
lblareacilindro
Area Cilindro:
lblvolumen
Volumen Cilindro:
txtcilindrox
txtcilindroy
txtradiocilindro
txtaltura
txtxyradioaltura
txtareacilindro
txtvolumen
210
Agregar Clases
a) Agregue una nueva clase, en el cuadro de texto Nombre, cambie el nombre a la
clase por Puntos, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.
Entre las instrucciones Public Class Puntos y End Class, escriba el siguiente cdigo:
Public Class Puntos
Private x, y As Double
Public Sub New(ByVal a As Double, ByVal b As Double)
fijapuntos(a, b)
End Sub
Public Sub fijapuntos(ByVal a As Double, ByVal b As Double)
x=a
y=b
End Sub
Public Function mostrarx() As Double
Return x
End Function
Public Function mostrary() As Double
Return y
End Function
Public Function cadena() As String
Return "[" & x & " : " & y & "]"
End Function
End Class
211
Se declaran dos variables (x, y) de tipo Double para guardar los valores
digitados por el usuario respectivamente. Adems, se declaran como privadas para que
puedan ser modificadas nicamente por la clase.
Por otro lado, se definen los siguientes procedimientos:
Constructor New: que recibe dos parmetros de tipo Double y llama al
procedimiento fijapuntos.
fijapuntos: recibe dos parmetros de tipo Double y le asigna a las variables
privadas x, y los valores recibidos respectivamente.
mostrarx: retorna el valor de la coordenada x.
mostrary: retorna el valor de la coordenada y.
cadena: retorna un valor String con los valores x, y.
b) Agregue otra nueva clase, en el cuadro de texto Nombre, cambie el nombre a la
clase por Circulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.
Entre las instrucciones Public Class Circulo y End Class, escriba el siguiente cdigo:
Public Class Circulo
Inherits Puntos
Protected radio As Double
Public Sub New()
MyBase.new(0, 0)
fijaradio(0)
End Sub
Public Sub New(ByVal r, ByVal a, ByVal b)
MyBase.new(a, b)
fijaradio(r)
End Sub
Public Sub fijaradio(ByVal r As Double)
If r > 0.0 Then
radio = r
Else
r = 0.0
End If
End Sub
Public Function obtradio() As Double
Return radio
End Function
Public Function area() As Double
Return 3.14159 * radio * radio
End Function
Overloads Function cadena() As String
Return "Centro=" + MyBase.cadena() & "; Radio= " & radio
End Function
End Class
Entre las instrucciones Public Class Cilindro y End Class, escriba el siguiente cdigo:
Public Class Cilindro
Inherits Circulo
Protected altura As Double
Public Sub New(ByVal h As Double, ByVal r As Double, ByVal a As Double,
ByVal b As Double)
MyBase.new(r, a, b)
fijaaltura(h)
End Sub
Public Sub fijaaltura(ByVal h As Double)
If (h >= 0.0) Then
altura = h
Else
altura = 0
End If
End Sub
Public Function obtaltura() As Double
Return altura
End Function
Overloads Function area() As Double
Return 2 * MyBase.area() + 2 * 3.14159 * radio * altura
End Function
Public Function volumen() As Double
Return MyBase.area() * altura
213
End Function
Overloads Function cadena() As String
Return MyBase.cadena() & ";Altura = " & altura
End Function
End Class
Primero se crea una instancia de tipo Puntos llamada puntos. Se declaran las
variables valorx, valory de tipo Double y se le asigna los valores de los objetos txtx y
txty en su propiedad Text respectivamente. Se asigna espacio de memoria (New) al
objeto puntos y se le enva al constructor de la clase Puntos los valores de valorx y
valory. Por otro lado, se le asigna a la propiedad Text de los objetos txtpuntos,
214
Se crea una instancia de tipo Circulo llamada circulo. Se declaran las variables
valorx, valory y valorradio de tipo Double y se le asigna los valores de los objetos
txtcirculox, txtcirculoy y txtrradio en su propiedad Text respectivamente. Se asigna
espacio de memoria (New) al objeto circulo y se le enva al constructor de la clase
Circulo los valores de valorradio, valorx y valory. Adems se le enva al
procedimiento fijapuntos los valores de valorx y valory; a fijaradio el valor de
valorradio. Por otro lado, se le asigna a la propiedad Text de los objetos txtxyradio,
txtarea, txtcilindrox, txtcilindroy y txtradiocilindro respectivamente lo que retorna
los procedimientos cadena, area, mostrarx, mostrary y obtradio de la instancia
circulo.
c) Seleccione el objeto botoncilindro, d doble clic para abrir el editor del
procedimiento botoncilindro_Click y escriba el siguiente cdigo:
Dim cilindro As Cilindro
Dim valoraltura, valorradio, valorx, valory As Double
valoraltura = Val(txtaltura.Text)
valorradio = Val(txtradiocilindro.Text)
valorx = Val(txtcilindrox.Text)
valory = Val(txtcilindroy.Text)
cilindro = New Cilindro(valoraltura, valorradio, valorx, valory)
txtxyradiocilindro.Text = cilindro.cadena()
txtareacilindro.Text = cilindro.area()
txtvolumen.Text = cilindro.volumen()
215
Ejecutar el proyecto
216
11.4 Interfaces
Las Interfaces definen las propiedades, mtodos y eventos que pueden implementar las
clases. Se pueden agregar nuevas caractersticas en cualquier momento mediante el
desarrollo de implementaciones e interfaces adicionales. Las definiciones de interfaz se
217
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Valor
botonarea
Calcular Area
lblbase
Dgite Base:
lblaltura
Dgite Atura:
lblareatriangulo
Area del Tringulo (b*a):
218
Label4
TextBox1
Textbox2
TextBox3
TextBox4
Form1
Name
Text
Name
Name
Name
Name
Name
Text
lblarearectangulo
Area del Rectngulo ((b*a)/2):
txtbase
txtaltura
txtareatriangulo
txtarearectangulo
formulario
Interface Area Tringulo/Rectngulo
Agregar Interface
Para crear una interface puede realizar alguno de los siguientes pasos:
4. Del men Proyecto seleccione Agregar nuevo elemento- Interfaz.
5. Del icono
seleccionar Agregar nuevo elemento Interfaz.
6. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar nuevo elemento - Interfaz.
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 11.20 Ventana para agregar una Interface.
219
Entre las instrucciones Public Interface y End Interface, escriba el siguiente cdigo:
Public Interface interfacefigura
Function area()
End Interface
Agregar Clases
a) Agregue una nueva clase, en el cuadro de texto Nombre cambie el nombre a la
clase por Rectangulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.
Entre las instrucciones Public Class Rectangulo y End Class, escriba el siguiente
cdigo:
Public Class Rectangulo
Implements interfacefigura
Dim base, altura As Double
Public Sub New(ByVal b As Double, ByVal a As Double)
base = b
altura = a
End Sub
Public Function area() Implements interfacefigura.area
Return base * altura
End Function
End Class
220
Constructor New: que recibe dos parmetros de tipo Double y asigna dichos valores
a las variables base, altura respectivamente.
area: se implementa el procedimiento area definido en la interfaz interfacefigura
el cual retorna el resultado de multiplicar la base por la altura.
b) Agregue otra nueva clase, en el cuadro de texto Nombre cambie el nombre a la
clase por Triangulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de interfaz en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la interfaz.
Seleccione el objeto botonarea, d doble clic para abrir el editor del procedimiento
botonarea_Click y escriba el siguiente cdigo:
Dim triangulo As Triangulo
Dim rectangulo As Rectangulo
Dim base, altura As Double
base = txtbase.Text
altura = txtaltura.Text
triangulo = New Triangulo(base, altura)
rectangulo = New Rectangulo(base, altura)
txtareatriangulo.Text = triangulo.area
txtarearectangulo.Text = rectangulo.area
Ejecutar el proyecto
Al ejecutar el proyecto y digitar los valores 8,14 en la respectiva caja de texto y pulsar
el botn Calcular Area, se visualizar la siguiente figura:
Figura 11.22 Ejecucin aplicacin Interfaces.
DDL: permiten crear y definir nuevas bases de datos, tablas, campos e ndices.
DML: permiten generar consultas para ordenar, filtrar y extraer datos de la base de
datos.
223
Descripcin
CREATE
DROP
ALTER
SELECT
Permite consultar registros de una base de datos que cumplan una condicin
determinada.
INSERT
UPDATE
DELETE
Descripcin
FROM
WHERE
GROUP BY
HAVING
ORDER BY
224
Uso
AND
OR
NOT
BETWEEN
LIKE
IN
ALL
Uso
<
Menor que
>
Mayor que
<>
Distinto de
<=
>=
Igual que
Descripcin
AVG
COUNT
SUM
225
MAX
MIN
Tipo de Dato
varchar
varchar
varchar
varchar
varchar
varchar
date
Longitud
15
20
20
25
20
20
Nombres
Carlos
Mara
Jos
Cristian
Rosa
Andrs
Anglica
Johana
Mario
Apellidos
Romero
Castro
Pelez
Vanegas
Cetina
Vanegas
Morales
Duarte
Vargas
Direccin
Cra 7 # 20-10
Calle 25 # 25-10
Av. 35 # 32-45
Cra 7 # 29-58
Calle 17 # 21-14
Tranvs 48 # 22-10
Cra 68 # 21-11
Cra 2 # 45-38
Calle 1 # 99-18
Telfono
4152584
3692581
1234567
9874561
3571596
8527419
6549518
9637534
6598743
Ciudad_nac
Bogota
Cali
Medelln
Manizales
Buga
Bogot
Medelln
Bogot
Medelln
Fecha_nac
01/02/1980
15/03/1984
20/05/1960
31/08/1974
15/12/1985
10/04/1978
20/06/1981
12/06/1988
28/08/1980
12.3.5 INSERT
INSERT permite insertar datos en una tabla. Su formato es:
INSERT INTO nombre_tabla (campo1, campo2,.) VALUES (valor1, valor2,.)
12.3.6 ALTER
SQL ALTER permite insertar un nuevo campo en una tabla. Su formato es:
ALTER TABLE nombre_tabla ADD nombre_campo tipo_de_dato ()
12.3.7 SELECT
La instruccin de seleccin SELECT permite seleccionar datos de una tabla. Su
formato es:
SELECT campos_tabla FROM nombre_tabla
227
c. Si se desea obtener los registros cuya identificacin sea mayores o iguales a 150,
se debe utilizar la clusula WHERE que especifica las condiciones que deben
reunir los registros que se van a seleccionar.
SELECT * FROM usuarios WHERE identificacin>=150
d. Si se desea obtener los registros cuyos apellidos sean Vanegas o Cetina, se debe
utilizar el operador IN que especifica los registros que se quieren visualizar de
una tabla.
SELECT apellidos FROM usuarios WHERE apellidos IN (Vanegas,Cetina)
h. Si se desea obtener los registros donde la cuarta letra del nombre sea una a.
i.
SELECT * FROM usuarios WHERE nombres LIKE ___a%
j. Si se desea obtener los registros cuya identificacin este entre el intervalo 110 y
150, se debe utilizar la clusula BETWEEN, que sirve para especificar un
intervalo de valores.
SELECT * FROM usuarios WHERE identificacin BETWEEN 110 AND 150
12.3.8 DELETE
La sentencia SQL de eliminacin de datos DELETE permite borrar todos o un grupo
especifico de registros de una tabla. Su formato es:
DELETE FROM nombre_tabla
228
b. Para eliminar solamente los registros cuya identificacin sea mayor de 180.
DELETE FROM usuarios WHERE identificacin >180
12.3.9 UPDATE
La sentencia SQL de actualizacin UPDATE permite actualizar un campo de una tabla.
Su formato es:
UPDATE nombre_tabla SET nombre_campo=valor
b. Para actualizar el campo credito en -50000 para los registros cuya ciudad sea
igual a Buga.
UPDATE usuarios SET credito=credito-50000 WHERE ciudad=Buga
Tipo de Dato
varchar
varchar
date
date
varchar
Longitud
15
15
20
25
30
229
Identificacin
100
101
100
112
101
118
101
100
101
fechacompra
01/02/2006
15/03/2006
20/05/2006
31/08/2006
15/12/2006
10/04/2006
20/06/2006
12/06/2006
28/08/2006
fechavence
01/02/2006
15/03/2006
20/06/2006
31/10/2006
30/12/2006
10/06/2006
20/07/2006
12/09/2006
28/09/2006
observacion
Pago de contado
Descuento del 5%
Descuento del 2%
Pago a sesenta das
Pago de contado
Sin descuento
Descuento del 5%
Pago a noventa das
Pago de contado
usuarios.apellidos,
pedidos.fechavence,
230
231
Label2
Form1
Propiedad
Name
Name
Text
Name
Text
Font
Name
Text
Font
Name
Text
Valor
datos
botoncargar
Cargar registros tabla.
lblbd
Conexin a la base de datos bdlibrovbnet.mdf de SQL
SERVER.
True
lbltabla
Tabla : Clientes
True
formulario
Conexin a una base de datos SQL SERVER.
Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el espacio de
nombres System.Data.SqlClient:
Imports System.Data.SqlClient
Public Class Formulario
.
End Class
232
Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try
Se crea una variable llamada conexion de tipo String que contendr la cadena
de conexin a la base de datos bdlibrovbnet.mdf de SQL Server. La cadena de
conexin debe contener como mnimo los siguientes parmetros:
Ejecutar el proyecto
233
Form1
Propiedad
Name
Name
Text
Font
Name
Text
Valor
datos
lblbd
Conexin a SQL Server utilizando el
Explorador de servidores.
True
formulario
Conexin a SQL Server - Explorador de
servidores.
234
Explorador de servidores
236
237
238
239
Cambie el nombre de la conexin que all aparece por cadenaconexion y pulse el botn
Siguiente>, se visualizar la siguiente figura:
Figura 12.14 Ventana de eleccin de objetos de la base de datos.
Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por datosclientes y pulse el botn Finalizar para visualizar la siguiente figura:
Figura 12.15 DataGridView con los campos de la tabla clientes.
240
Ejecutar el proyecto
Propiedad
Name
Text
Valor
formulario
Conexin a una base de datos SQL
Server.
241
, se visualizar la ventana de
242
Del men Datos seleccione la opcin Agregar nuevo orgen de datos, para
visualizar la siguiente figura:
Figura 12.20 Asistente para la configuracin de orgenes de datos.
243
244
Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por conjuntodedatos y pulse el botn Finalizar para visualizar la siguiente
figura:
Figura 12.25. Proyecto con la base de datos y el orgen de datos agregados.
245
246
Ejecutar el proyecto
Con los iconos del objeto BindingSource se podr desplazar por cada uno de los
registros de la tabla.
Estando en modo edicin se pudo apreciar en la ventana Orgenes de datos que
al pulsar el signo (+) al lado de la tabla clientes se despliegan los campos de est.
Tambin es posible arrastrar cada uno de los campos de la tabla hacia el formulario.
Realice esta operacin hasta obtener la siguiente figura:
Figura 12.29 Formulario con los campos de la tabla clientes.
247
Form1
Propiedad
Name
Text
Name
Text
Name
Text
Name
Name
Text
Font- Bold
Name
Text
Valor
botonver
Ver registros tabla
botonnuevo
Nuevo registro
botonguardar
Guardar nuevo registro
registros
lbltexto
Insertar un nuevo registro en la tabla clientes base
de datos bdlibrovbnet.mdf
True
formulario
Insertar registro en una tabla de una base de datos.
248
Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio
de nombres:
Imports System.Data.SqlClient
Public Class Form1
.
:::::::
End Class
Se utiliza el mtodo AddNew del objeto transaccion para crear un nueva fila en
el objeto registros.
f) Seleccione el objeto botonguardar, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
If Not transaccion.DataSource Is Nothing Then
Adaptador.Update(CType(transaccion.DataSource, DataTable))
cargar_datos("Select * From clientes", tabla)
250
Else
MsgBox("No se pudo guardar el registro", MsgBoxStyle.Critical)
End If
Si la fila del objeto registros no es vaca por medio del mtodo Update del
objeto adaptador se guarda la nueva fila en la tabla clientes envindole el contenido
del DataSource del objeto transaccion y un objeto DataTable. Por otro lado, se llama
al procedimiento ver_datos para mostrar nuevamente los registros de la tabla clientes.
Si la fila es vaca se muestra el mensaje No se pudo guardar el registro.
Ejecutar el proyecto
251
Label2
Propiedad
Valor
Text
Filtrar los registros de una tabla por cualquier
campo.
Name
lblfiltrar
Font /Bold True
Text
Seleccione campo
Name
lblcampo
252
Label3
Text
Name
Label4
Text
Name
Label5
Text
Name
Label6
Text
Name
Font/ Bold
TextBox1
Name
Button1
Name
Text
ComboBox1
Name
ComboBox2
Name
DataGridView1 Name
Form1
Name
Text
Seleccione operador
lbloperador
Criterio de filtrado
lblcriterio
Su seleccin:
lblseleccion
resultado
lblresultado
True
valorcampo
botonfiltrar
Filtrar registros
listacampos
listaoperadores
registrosfiltrados
formulario
Filtrar registros de una tabla.
Escribir cdigo
a) Seleccione el control listacampos, busque la propiedad Items, d clic en los tres
puntos al lado de Coleccin y en ventana Editor de la coleccin Cadena
escriba por cada lnea un campo de la tabla clientes y pulse el botn Aceptar.
Otra forma es dar clic sobre la flecha del control en la parte superior derecha y
seleccionar la opcin Editar elementos. La ventana de edicin deber quedar
como se muestra en la figura:
253
End Class
254
255
Se crean las variables: clave que almacenar el valor que este escrito en el objeto
txtcriterio; nombre_campo de tipo String que almacenar el nombre del campo
seleccionado por medio de la propiedad SelectedItem del objeto listacampos;
valoroperador de tipo String que almacenar el operador seleccionado por medio de la
propiedad SelectedItem del objeto listaoperadores; tambin se crea una variable
seleccion de tipo String que almacenar la instruccin SQL Select. En dicha
instruccin se selecciona todos los campos de la tabla clientes (Select * from clientes)
y se
utiliza la clusula Where para mostrar solo aquellos registros cuya
nombre_campo corresponda al criterio de valoroperador concatenado con clave. En
un bloque Try se le asigna espacio de memoria de tipo SqlDataAdapter al objeto
adaptador al cual se le enva como parmetros los objetos seleccion (sentencia SQL) y
conexion (cadena de conexin), luego se rellena (fill) el adaptador de datos con la tabla
de datos (tabladedatos) y se le asigna al objeto tabla por intermedio de la propiedad
DataSource el objeto tabladedatos.
Ejecutar el proyecto
256
257
Valor
reporte
formulario
Reporte de una tabla.
Disear el informe
Para disear el informe, pulse la flecha del lado superior derecha del objeto reporte
para ver la ventana Tareas de ReportViewer y escoja la opcin Disear nuevo
informe.
258
259
260
261
Cambie el nombre de la conexin que all aparece por conexion y pulse el botn
Siguiente>, se visualizar la siguiente figura:
Figura 12.55 Ventana de eleccin de objetos de la base de datos.
Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
262
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por conjuntodedatos y pulse el botn Finalizar para visualizar la siguiente
figura:
Figura 12.56 Asistente para informes seleccionar el orgen de datos.
Pulse los signos (+) para desplegar la tabla. D clic en Siguiente> para
visualizar la ventana de seleccin de tipo de informe.
Figura 12.57 Asistente para informes seleccionar el tipo de informe.
263
figura:
264
tabla.
265
Donde aparece el nombre del informe cmbielo por Informe Clientes y d clic
en Finalizar> para visualizar el diseo final del informe.
Figura 12.63 Diseo final del informe.
266
En este momento se podrn modificar los textos de las etiquetas de los campos,
como tambin la longitud de los campos. Adems, en el explorador de soluciones se
visualizar el informe agregado al proyecto.
Elija la ficha de diseo del formulario y d clic sobre la flecha del objeto
reporte y seleccione la opcin Elegir informe.
Figura 12.64 Seleccionar opcin Elegir informe.
267
Ejecutar el proyecto
Control
Propiedad
Text
name
Text
Valor
Seleccione empresa:
etiquetaclientes
Ver Pedidos
268
DataGridView1
ComboBox1
Form1
name
Name
Name
Name
Text
boton
tablapedidos
lista
formulario
Relacin de tablas con un
ComboBox.
Establecer la conexin
Desde la ficha Datos del cuadro de herramienta arrastre hacia el formulario el adaptador
de datos SqlDataAdapter (Si no aparece el control, d clic derecho sobre la ficha
Datos y ejecute la orden Elegir elementos, busque el control, seleccinelo en el cuadro
de verificacin y pulse el botn Aceptar.). Se visualizar la siguiente figura:
Figura 12.68 Ventana Elegir la conexin de datos.
269
270
Aqu puede realizar la seleccin de los datos que debera cargar el adaptador de
datos. Una forma es escribiendo en la ventana instrucciones SQL y la otra es pulsar el
botn Generador de consultas. Para el ejemplo, se pulsar el botn para visualizar la
siguiente figura:
Figura 12.73 Ventana Generador de consultas.
271
En esta nueva ventana seleccione la opcin * (todas las columnas) o los campos
que desea visualizar (Si desea visualizar la consulta seleccionada pulse el botn
Ejecutar consulta). Se obtendr la siguiente figura:
Figura 12.75 Generador de consultas con los campos seleccionados (tabla clientes).
273
Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio
de nombres:
Imports System.Data.SqlClient
Public Class formulario
:::::::
End Class
:::::::::
End class
Ejecutar el proyecto
lista por True). Si selecciona un nombre de empresa y se pulsa el botn Ver Pedidos,
se visualizar en la cuadricula todos los registros que estn relacionados con la tabla
pedidos.
Figura 12.80 Relacin de las tablas clientes pedidos con DataGridView.
276
Select: Especifica la forma y el contenido de los datos que sern devueltos. Por
ejemplo si se desea visualizar solamente el nit y el nombre de la empresa de la
tabla clientes, se debe realizar el siguiente cdigo:
277
Order By: Ordena una consulta de un orgen de datos por uno o varios campos
especificados. Para ordenarlo de A Z se utiliza Ascending, de Z A
Descendig, cuando no se especifica se usa Ascending predeterminadamente. Si
se desea ordenar la consulta por el nombre de la empresa de la tabla clientes de
A- Z, el cdigo sera el siguiente:
Dim consulta = From misclientes In Clientes
Where misclientes.ciudad=Bogot
Select misclientes Order By misclientes.empresa
Group By: Agrupa los resultados de una consulta por uno o ms campos.
Combina dos colecciones con un campo comn de un orgen de datos. Para
visualizar agrupadas y ordenadas las fecha de entrega de los pedidos de la tabla
Pedidos, el cdigo sera:
Ejemplos:
Si se tiene el siguiente arreglo:
Orgen de datos
279
Creacin de la consulta
Ejecutar la consulta
Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
MultiLine
Name
MultiLine
Name
Text
Valor
botonconsulta
Ejecutar consulta LINQ
lbltexto
Texto original
lblresultado
Resultado de la consulta
lbltexto
Adicione un texto cualquiera.
True
lblresultado
True
formulario
Consulta LINQ con texto
280
Escribir cdigo
Se utiliza la funcin de agregado Count para contar cada una de los caracteres
que contiene el texto del objeto txttexto se incluyen los espacios. La consulta se crea
con la clusula Aggregate. Al objeto txtresultado se le asigna el valor de contarletras.
Dim palabras() As String
palabras = Split(cadena, " ")
Dim contarpalabras As Integer = Aggregate mispalabras In palabras Into Count()
txtresultado.Text = txtresultado.Text & "Tiene :" & contarpalabras & " Palabras" &
vbCrLf
Se crea una matriz llamada palabras de tipo String. A dicha varible se le asigna
cada una de las palabras que contiene el objeto cadena utilizando la funcin Split. Con
la funcin de agregado Count se cuentan cada una de las palabras de la matriz palabras
y se asigna dicha cantidad a la variable contarpalabras. Al objeto txtresultado se le
adiciona el valor de contarpalabras.
Dim palabras_con_F = From letra In palabras Where letra.Contains("F")
txtresultado.Text = txtresultado.Text & "Las palabras que contienen la letra F son:" &
vbCrLf
For Each letraf In palabras_con_F
txtresultado.Text = txtresultado.Text & letraf & vbCrLf
Next
281
Ejecutar el proyecto
282
Propiedad
Name
Text
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Name
Name
Name
Name
Text
Valor
botonconsulta
Ejecutar consulta LINQ
lblnumeros
Valores de la Matriz:
True
lblsuma
Suma de los nmeros
lblpromedio
Promedio de los nmeros:
lblmayor
Nmero mayor:
lblmenor
Nmero menor:
lblordenados
Nmeros ordenados:
lblmayores40
Mayores de 40:
lblmayoresmenores
Mayores de 60 o menores de 10:
txtnumeros
txtsuma
txtpromedio
txtmayor
txtmenor
txtordenados
txtmayores40
txtmayoresmenores
formulario
Consulta LINQ con Matrices
283
Escribir cdigo
Se crea una consulta utilizando la funcin de agregado Sum para sumar los
valores del arreglo numeros y es asignado a la variable suma. Al objeto txtsuma se le
asigna el valor de suma.
Dim promedio As Integer = Aggregate promedionumeros In numeros Into Average()
txtpromedio.Text = promedio
284
txtmenor.Text = menor
Se crea una variable llamada ordenados, a la cual se le asigna una consulta que
ordena (Order By) todos los valores de menor a mayor (Ascending) del arreglo
numeros. Con un ciclo For Each se imprime los nmeros ordenados en la propiedad
Text del objeto txtordenado.
Dim mayores = From numerosmayores In numeros Where numerosmayores > 40
For Each numero In mayores
txtmayores40.Text = txtmayores40.Text & numero & ", "
Next
Se crea una variable llamada mayores, a la cual se le asigna una consulta que
obtiene todos los valores mayores de 40 del arreglo numeros. Con un ciclo For Each
se imprime los nmeros que cumplen la condicin en la propiedad Text del objeto
txtmayores.
Dim mayoresmenores = From numerosmayoresmenores In numeros
Where numerosmayoresmenores > 60 Or numerosmayoresmenores < 10
For Each numero In mayoresmenores
txtmayoresmenores.Text = txtmayoresmenores.Text & numero & ", "
Next
Ejecutar el proyecto
285
13.4.3 Consultar una base de datos SQL Server con LINQ To SQL
Disear una aplicacin llamada ConsultaLinqToSQL, que permita visualizar todos los
registros de una tabla perteneciente a una base de datos SQL Server. Dichos datos se
deben mostrar en una cuadricula. Se debe utilizar el componente LINQ to SQL.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
Propie
dad
Name
Text
Name
Name
Text
Valor
boton
Ejecutar consulta LINQ to SQL
cuadricula
formulario
Consulta LINQ to SQL.
286
Para agregar un objeto Clases LINQ to SQL puede realizar alguno de los siguientes
pasos:
1. Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla
Clases LINQ to SQL.
seleccionar Agregar nuevo elemento y busque la plantilla
2. Del icono
Clases LINQ to SQL.
3. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar nuevo elemento y busque la
plantilla Clases LINQ to SQL.
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 13.6 Ventana para agregar una plantilla LINQ to SQL.
287
, se visualizar
288
Escribir cdigo
Seleccione el objeto boton, d doble clic para abrir el editor de cdigo y escriba el
siguiente cdigo:
Dim vista As New MiLinqToSQLDataContext
Dim consulta = From misclientes In vista.clientes Select misclientes
cuadricula.DataSource = consulta
290
Ejecutar el proyecto
13.4.4 Operaciones con una tabla de una base de datos SQL Server
Realizar una aplicacin llamada OperacionesLinqToSQL, que permita a un usuario
seleccionar el nombre de una empresa y visualizar todo el registro en campos de texto.
Adems, el usuario podr realizar las siguientes operaciones: modificar el registro,
eliminar el registro, crear y guardar un nuevo registro.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
Propiedad
Name
Text
Name
Text
botonbuscar
Mostrar registro
botonmodificar
Modificar registro
Valor
291
Button3
Button4
Button5
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
ComboBox1
DataGridView1
Panel1
Form1
Name
Text
Name
Text
Name
Text
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Font - Bold
Name
Enabled
Name
Name
Name
Name
Name
Name
Name
Name
Borderstyle
Name
Text
botoneliminar
Eliminar registro
botonnuevo
Nuevo registro
botonguardar
Guardar nuevo registro
lblcliente
Seleccione cliente:
True
lblnit
Nit:
lblempresa
Empresa:
lblrepresentante
Representante:
lblciudad
Ciudad:
lbldireccion
Direccin:
lbltelefono
Telfono:
lblregistros
Registros actuales de la tabla
True
txtnit
False
txtempresa
txtrepresentante
txtciudad
txtdireccion
txttelefono
listaclientes
cuadricula
panel
FixedSingle
formulario
Operacin con una base de datos LINQ to SQL
292
Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL, se visualizar la siguiente figura:
Figura 13.16 Agregar plantilla Clases de LINQ to SQL.
293
294
Al pulsar en el signo (+) al lado del texto Tablas se visualizarn las diferentes
tablas de la base de datos, d clic sobre la tabla clientes, adems cambie el Nombre de
DataSet por conjuntodedatos y pulse el botn Finalizar para volver a modo diseo:
Figura 13.23 Ventana para elegir los objetos de base de datos.
Figura 13.24 Control listaclientes con los campos empresa y nit seleccionados.
Escribir cdigo
a) Despes de la apertura de la clase Public class formulario y antes del primer
procedimiento Sub, d doble clic sobre el formulario y busque clase formulario
y escriba este cdigo escriba:
Public Class formulario
Dim vista As New MisDatosDataContext
Se crea un procedimiento llamado datos que contiene una consulta de los datos
actuales de la tabla clientes, estos son asignados a la propiedad DataSource del objeto
DataGridView cuadricula.
c) Seleccione el objeto botonbuscar, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
297
298
299
.telefono = txttelefono.Text}
vista.clientes.InsertOnSubmit(nuevoregistro)
vista.SubmitChanges()
txtnit.Enabled = False
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no guardado", MsgBoxStyle.Information)
End If
datos()
Ejecutar el proyecto
300
13.4.5 Relacin entre dos tablas de una base de datos SQL Server
Disear una aplicacin llamada RelacionTablasLINQ, que permita a un usuario
seleccionar el nombre de una empresa y visualizar todos los pedidos que dicha empresa
ha realizado.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
Propiedad
Name
Text
Text
Name
Text
Font - Bold
Name
Text
Font - Bold
Name
Name
Name
Text
Valor
boton
Obtener Pedidos
Guardar nuevo registro
lblclientes
Seleccione Cliente:
True
lblpedidos
Pedidos del cliente seleccionado
True
listaclientes
cuadricula
formulario
Relacin tablas LINQ to SQL
301
Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL. En el cuadro de texto Nombre cambie el nombre por
DatosRelacionados.dbml, luego pulse el botn Agregar para visualizar un nuevo
objeto de datos relacionales LINQ to SQL.
En la lista del explorador de soluciones aparece un nuevo archivo con el nombre
asignado. Se obtendr la siguiente figura:
Figura 13.27 Vista del diseador relacional de objetos DatosRelacionados.dbml.
302
Escribir cdigo
Seleccione el objeto botonbuscar, d doble clic para abrir el editor de cdigo y escriba
el siguiente cdigo:
304
Se
crea
una
instancia
llamada
vista
de
la
clase
DatosRelacionadosDataContext. El nombre de DataContext corresponde al nombre
del archivo .dbml. El archivo LINQ to SQL es DatosRelacionados. Tambin se crea
una variable de tipo String llamada empresaseleccionada a la cual se le asigna el valor
del campo nit seleccionado del objeto listaclientes (este valor se toma de la opcion
miembro de valor que es el item cero (0)). Por otro lado, se crea una consulta
combinada con la clausula Join que realiza la relacion de las tablas clientes, pedidos
por el campo comn nit (Equals), con la condicion (Where) de que el nit sea igual al
registro seleccionado, adems se seleccionan (Select) los campos de las dos tablas que
se quieren mostrar. Por ltimo se asigna a la propiedad DataSource del objeto
cuadricula el resultado de la consulta (consultajoin).
Ejecutar el proyecto
305
Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL. En el cuadro de texto Nombre cambie el nombre por
DatosDataGridView.dbml.
Figura 13.34 Plantilla Clases de LINQ to SQL.
306
307
4. Seleccione el icono Objeto y pulse el botn Siguiente para ver la ventana de eleccin
del objeto a enlazar.
308
Escribir cdigo
a) D doble clic sobre el formulario y despus de la creacin de la clase Form1
escriba el siguiente cdigo:
Public Class Form1
Dim vistadatos As New DatosDataGridViewDataContext
::::::::
::::::::
End Class
Se
crea
una
instancia
llamada
vistadatos
de
la
clase
DatosDaTaGridViewDataContext. El nombre de DataContext corresponde al
nombre del archivo .dbml. El archivo LINQ to SQL es DatosDataGridView.
b) En el procedimiento Form1_Load del formulario escriba el siguiente cdigo:
ClientesBindingSource.DataSource = vistadatos.clientes
Ejecutar el proyecto
310
Propie
dad
Name
Name
Name
Name
Text
Valor
datosclientes
datospedidos
tablasrelacionadas
formulario
Consulta LINQ to DataSet.
311
Escribir cdigo
Seleccione el objeto formulario, d doble clic para abrir el editor del procedimiento
Formulario_Load y escriba el siguiente cdigo:
Dim conexion As String = "Data Source=(local)\SQLEXPRESS; Database=bdlibrovbnet;
Integrated Security=True"
Se crea una variable llamada conexion de tipo String que contendr la cadena
de conexin a la base de datos de SQL Server. La cadena de conexin contiene el orgen
de datos (Data Source), el nombre de la base de datos SQL Server (DataBase) y la
seguridad integrada (True
Dim cargarclientes As New SqlClient.SqlDataAdapter("SELECT * FROM clientes",
conexion)
Dim comandoclientes As New SqlClient.SqlCommandBuilder(cargarclientes)
Dim conjuntodedatos As New DataSet()
cargarclientes.Fill(conjuntodedatos, "clientes")
Dim cargarpedidos As New SqlClient.SqlDataAdapter("SELECT * FROM
pedidos",conexion)
Dim comandopedidos As New SqlClient.SqlCommandBuilder(cargarpedidos)
cargarpedidos.Fill(conjuntodedatos, "pedidos")
312
}
tablasrelacionadas.DataSource = consultalinqdataset.ToList
Se crea una consulta combinada con la clausula Join que realiza la relacion de las
tablas clientes, pedidos por el campo comn nit (Equals), con la condicion (where) de
que el nit sea igual a 100, adems, se seleccionan (Select New With) los campos de las
dos tablas que se quieren mostrar. Por ltimo se asigna a la propiedad DataSource del
objeto tablasrelacionadas el resultado de la consulta (consultalinqdataset). Se utiliza
la funcin AsEnumerable para obtener una coleccin de todas las filas de los datos,
como tambin la funcin Field para el especificar el tipo de dato de las columnas de
cada fila.
Ejecutar el proyecto
313
314
Al escoger una de las dos opciones se visualizar la ventana Nuevo sitio Web,
donde se deber seleccionar la plantilla SitioWeb ASP.NET.
316
317
318
Propiedad
ID
Text
Font - Bold
ID
Text
ID
Text
ID
Text
Font - Bold
ID
Text
ID
Text
ID
Text
ID
ID
ID
ID
Valor
lbltitulo
Pedidos Restaurante la FRIKY.
True
lblcomida
Seleccione Comida:
lblbebida
Seleccione Bebida:
lblpedido
Pedido
True
lblsubtotal
SubTotal:
lbliva
I.V.A.:
lbltotal
Neto a Pagar:
txtsubtotal
txtiva
txtsubtotal
listacomida
319
DropDownList1
Button1
Button2
GridView1
Form1
Document
Default.aspx
AutoPostBack
ID
AutoPostBack
ID
Text
ID
Text
ID
ID
Title
Nombre del archivo
True
listabebida
True
botoncomida
Adicionar Comida
botonbebida
Adicionar Bebida
tablapedido
formulario
Restaurante la FRIKY
pagina.aspx
320
seleccinelo y d clic en la flecha de la parte superior derecha del control para ver las
Tareas de GridView y escoja la opcin formato automtico para ver la ventana
Autoformato y elija el formato que desee. Para el ejemplo, se escogi el formato
Multicolor.
14.1.4 Escribir cdigo
Una vez se hayan establecido las propiedades del formulario Web y sus objetos, se
puede agregar el cdigo que se ejecutar en respuesta a un evento especifico de cada
control.
1. Despes de la apertura de Partial class _Default y antes del primer
procedimiento Sub, declare como publicas las variables llamadas valor, i,
sumar de tipo Integer. D doble clic sobre el formulario y escriba este cdigo
escriba:
Partial Class _Default
Inherits System.Web.UI.Page
Dim datos As New Data.DataTable
Public Shared valor, sumas As Integer
322
If listacomida.SelectedIndex = 3 Then
valor = 12000
End If
323
324
325
Al seleccionar como comida Arroz con Pollo y Ajiaco y como bebida Vino y
Cerveza, se visualiza la siguiente figura:
Figura 14.11 Sitio Web con comida y bebida seleccionados.
En cada caso se deben guardar los nuevos cambios que se hayan realizado.
Para volver a abrir la aplicacin PedidoWeb o cualquier otra aplicacin
existente se debern realizar los siguientes pasos:
1. Abrir Visual Studio .NET.
2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del sitio Web que
se desea abrir haga doble clic para abrir la aplicacin. Si por el contrario no se visualiza
la aplicacin en el men Archivo, seleccione Abrir sitio Web..., busque la carpeta
PedidoWeb y pulse el botn Abrir para abrir la aplicacin Web en el entorno de
desarrollo de Visual Basic .NET.
326
Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Valor
lblfrutas
Seleccin de Frutas
True
lblfrutaseleccionadas
Frutas Seleccionadas
True
listafrutas
AutoPostBack
True
ID
listafrutasseleccionadas
AutoPostBack
True
Form1
ID
formulario
Document
Title
Default.aspx
Nombre
archivo
Label2
CheckBoxList1
ListBox1
Control CheckBoxList
del
pagina.aspx
Escribir cdigo
D doble clic en el objeto CheckBoxList llamado listafrutas, para abrir el editor del
328
Ejecutar la aplicacin
329
elementos: El primero es una imagen como un archivo .gif, .jpg, .png, .bmp, etc.; El
segundo es una coleccin de zonas activas, donde cada zona puede ser definida como un
crculo, un rectngulo o un polgono y unas coordenadas que especifican la ubicacin y
el tamao de la zona activa. Cada zona activa puede ser un hipervnculo o un evento que
devuelve informacin.
14.2.2.1 Ejemplo prctico control ImageMap
Crear un sitio Web llamado ControlImageMap que permita a un usuario seleccionar
una zona de una imagen entre cuatro zonas activas e imprimir el nombre del objeto
seleccionado. Se debe tener una imagen donde se puedan diferenciar las zonas activas.
Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Valor
lbltexto
Imagen con cuatro dibujos
True
lblseleccion
Seleccin:
True
mapa_imagen
Height
200
Width
200
Form1
ID
formulario
Document
Title
Control ImageMap
Label2
ImageMap1
330
Realice la misma operacin para agregar tres nuevas zonas activas a la imagen,
con los siguientes valores en la respectiva propiedad.
331
Bottom
100
200
200
Left
100
0
100
Right
200
100
200
Propiedades
Top
HotSpotMode
0
PostBack
100
PostBack
100
PostBack
PostBackValue
imagen_robot
imagen_celular
imagen_bicicleta
332
Escribir cdigo
D doble clic en el objeto ImageMap llamado mapa_imagen, para abrir el editor del
procedimiento mapa_imagen_Click y escriba el siguiente cdigo:
Dim region As String = ""
Select Case e.PostBackValue
Case "imagen_portatil"
region = "El PORTATIL"
Case "imagen_robot"
region = "El ROBOT"
Case "imagen_celular"
region = "El CELULAR"
Case "imagen_bicicleta"
region = "La BICICLETA"
End Select
lblseleccion.Text = "selecciono:" & region
Ejecutar la aplicacin
las propiedades: Text y Value. Text detalla lo que el control va a mostrar en la pgina.
Value devuelve un valor deseado al seleccionar un elemento. Este control responde al
evento clic para devolver datos del servidor.
14.2.3.1 Ejemplo prctico control BulletedList
Disear un sitio Web llamado ControlBulletedList que permita a un usuario
seleccionar de una lista una pgina de Internet y abrirla utilizando el control
BulletedList.
Form1
Propiedad
ID
Text
Font - Bold
ID
DisplayMode
BulletStyle
ID
Valor
lbltexto
Control Bulletedlist lista de pginas de Internet
True
listapaginas
HyperLink
UpperAlpha
formulario
Document
Title
Control BulletedList
BulletedList1
334
Propiedades
Value
http://www.microsoft.com
http://www.google.com
http://www.java.sun
Por ltimo pulse el botn Aceptar. La interfaz de usuario con las modificaciones
respectivas en las propiedades de cada control queda como se muestra en la siguiente
figura:
Figura 14.22 Interfaz de usuario final aplicacin ControlBullettedList.
335
Ejecutar la aplicacin
336
RadioButton
HyperLink1
Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
AutoPostBack
ID
Valor
lbltexto
Control RadioButtonList lista de pginas de Internet
True
lblhipertexto
Ir a la pgina :
True
listapaginas
True
hipertexto
Form1
ID
formulario
Document
Title
Control RadioButtonList
Label2
337
Propiedades
Value
http://www.microsoft.com
http://www.google.com
http://www.java.sun
Por ltimo pulse el botn Aceptar. La interfaz de usuario con las modificaciones
respectivas en las propiedades de cada control queda como se muestra en la siguiente
figura:
338
Escribir cdigo
Con un ciclo For se leen cada uno de los elementos del objeto listapaginas y al
encontrar el elemento que est seleccionado se asigna a la propiedad Text del objeto
hipertexto el texto de la propiedad Value del objeto listapaginas, como tambin se le
adiciona dicho valor a la propiedad NavigateUrl.
Ejecutar la aplicacin
339
340
Form1
Propiedad
ID
Text
Font - Bold
ID
ActiveViewIndex
ID
Valor
lbltexto
Controles MultiView y View.
True
multiplesvistas
0
formulario
Document
Title
MultiView1
b) Agregue cuatro (4) controles View y establezca las siguientes propiedades a los
controles:
341
Propiedad
ID
ID
ID
ID
primeravista
segundavista
terceravista
cuartavista
Valor
Propiedad
ID
Text
Font - Bold
ID
ID
Text
Valor
lbldeportes
Seleccionen los deportes que te gustan:
True
listadeportes
botonsiguiente
Siguiente
342
Propiedad
ID
Text
Font - Bold
ID
ID
Text
Valor
lblpractica
Los prcticas por:
True
listapractica
botonsiguiente2
Siguiente
ID
botonanterior
Text
Anterior
343
Propiedad
ID
Text
Font - Bold
ID
ID
Text
Valor
lblsemana
Cuantas veces por semana:
True
listasemana
botonterminar
Terminar
ID
botonanterior2
Text
Anterior
Propiedad
ID
Text
Font - Bold
ID
Text
Valor
lblrespuesta
El resultado de la encuesta fue:
True
listasemana
Respuesta
344
Escribir cdigo
a) D doble clic en el objeto Button llamado botonsiguiente del objeto
primeravista, para abrir el editor del procedimiento botonsiguiente_Click y
escriba el siguiente cdigo:
Dim i As Integer
lblresultado.Text = "Los deportes que prcticas son:<br>"
For i = 0 To listadeportes.Items.Count - 1
If listadeportes.Items.Item(i).Selected Then
lblresultado.Text = lblresultado.Text & "<br>" & listadeportes.Items.Item(i).Value
End If
Next
multiplesvistas.ActiveViewIndex = 1
Con un ciclo For se leen cada uno de los elementos del objeto listadeportes y
aquel elemento que este seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la segunda vista.
b) D doble clic en el objeto Button llamado botonsiguiente2 del objeto
segundavista, para abrir el editor del procedimiento botonsiguiente2_Click y
escriba el siguiente cdigo:
Dim i As Integer
lblresultado.Text = lblresultado.Text & "<br><br>Lo prcticas por:<br>"
For i = 0 To listapractica.Items.Count - 1
If listapractica.Items.Item(i).Selected Then
lblresultado.Text = lblresultado.Text & "<br>" & listapractica.Items.Item(i).Value
End If
Next
multiplesvistas.ActiveViewIndex = 2
Con un ciclo For se leen cada uno de los elementos del objeto listapractica y
aquel elemento que est seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la tercera vista.
c) D doble clic en el objeto Button llamado botonanterior del objeto
segundavista, para abrir el editor del procedimiento botonanterior_Click y
escriba el siguiente cdigo:
If (multiplesvistas.ActiveViewIndex > 0) And (multiplesvistas.ActiveViewIndex <= 2) Then
multiplesvistas.ActiveViewIndex -= 1
ElseIf multiplesvistas.ActiveViewIndex = 3 Then
multiplesvistas.ActiveViewIndex = 0
Else
Throw New Exception("A ocurrido un error.")
End If
345
Con un ciclo For se leen cada uno de los elementos del objeto listasemana y
aquel elemento que est seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la cuartavista.
e) D doble clic en el objeto Button llamado botonanterior2 del objeto
terceravista, para abrir el editor del procedimiento botonanterior2_Click y
escriba el siguiente cdigo:
If (multiplesvistas.ActiveViewIndex > 0) And multiplesvistas.ActiveViewIndex <= 3 Then
multiplesvistas.ActiveViewIndex -= 1
ElseIf multiplesvistas.ActiveViewIndex = 3 Then
multiplesvistas.ActiveViewIndex = 1
Else
Throw New Exception("A ocurrido un error.")
End If
Ejecutar la aplicacin
346
347
348
Control
Label2
Label3
Label4
Label5
Label6
Label7
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
RequiredFieldValidator1
RangeValidator1
CustomValidator1
RegularExpressionValidator1
CompareValidator1
ValidationSummary
Form1
Document
Button1
Propiedad
ID
Text
Font
ID
Text
ID
Text
ID
Text
ID
Text
ID
Text
ID
Text
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
Title
ID
Text
Valor
txttexto
Encuesta Personal
Bold
lbldatos
Digite Nombres y Apellidos:
lblingles
Lee ingles (1 10);
lblestado
Estado
civil
(S=soltero;
C=casado; U=unin libre; V=
viudo)
lbcontrasea
Digite la contrasea 123456
lblcorreo
Correo electrnico :
lblerrores
Resumen de errores:
txtdatos
txtingles
txtestado
txtcontrasea
txtcorreo
validarcampo
validarrango
validarestado
validarexpresion
validarcontrasea
validarerrores
formulario
Controles de validacin
botonenviar
Enviar
349
Escribir cdigo
a) D doble clic sobre la pgina Web, para abrir el editor del procedimiento
Page_load y escriba el siguiente cdigo:
If Not Page.IsPostBack Then
validarcampo.ControlToValidate = "txtdatos"
validarcampo.ErrorMessage = "Campo obligatorio, no puede ser vacio"
validarrango.ControlToValidate = "txtingles"
validarrango.Type = ValidationDataType.Integer
validarrango.MinimumValue = 1
validarrango.MaximumValue = 10
validarrango.ErrorMessage = "Debe digitar un valor entre 1 y 10"
validarestado.ControlToValidate = "txtestado"
validarestado.ErrorMessage = "Digite S,C,u o V"
validarexpresion.ControlToValidate = "txtcorreo"
validarexpresion.ValidationExpression = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
validarexpresion.ErrorMessage = "El formato del correo es:nombre@sitioweb.dominio"
validarcontrasea.ControlToValidate = "txtcontrasea"
validarcontrasea.ValueToCompare = "123456"
validarcontrasea.ErrorMessage = "La contrasea es:123456"
End If
350
Ejecutar la aplicacin
Como se puede apreciar, se muestran los mensajes de error en cada campo validado por
el respectivo control de validacin. Si por el contrario se escriben los siguientes valores:
Cristian Vanegas, 8, S, 123456, cavm10@hot.com y se puls el botn Enviar, se
obtendra la pgina sin mensajes de error.
351
352
descripcin
Adaptador de datos para una base de datos Access.
SqlDbDataAdapter
OracleDbDataAdapter
DataSet
DataView
SqlDataSource
AccesDataSource
XmlDataSource
353
NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y crear una base de datos llamada bdlibrovbnet y dentro de
ella una tabla llamada clientes (Ver anexo A, SQL Server).
Label2
Label3
Button1
Form1
Document
Propiedad
ID
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
ID
Title
Valor
cuadriculadatos
lbltexto
Conexin por cdigo a una base de datos SQL
SERVER.
True
lblregistros
Registros tabla: Clientes
True
lblnumeroregistros
Nmero de Registros:
True
boton
Ejecutar Conexin
formulario
Conexin a SQL Server.
354
Escribir cdigo
a) Antes de la apertura de la clase Default se debe importar los siguientes espacios
de nombres:
Imports System.Data
Imports System.Data.SqlClient
Partial Class Default
Inherits System.Web.UI.Page
.
End Class
tabladedatos se le asigna espacio de memoria de tipo DataTable para guardar los datos
en memoria y poder realizar operaciones con dichos datos. En un bloque Try se le
asigna espacio de memoria de tipo SqlDataAdapter al objeto adaptadordedatos, al
cual se le enva como parmetros los objetos seleccion (datos a mostrar) y conexion
(cadena de conexin), luego se rellena (fill) el adaptador de datos con la tabla de datos
(tabladedatos); al objeto cuadriculadatos en su propiedad DataSource se le establece
el conjunto de datos que se van a mostrar al asignrsele la tabla de datos, por otro lado,
se enlaza al objeto cuadriculadatos el orgen de datos (DataBind()) y por ltimo se
establece a la propiedad Text del objeto lblnumeroregistros el texto actual del objeto
unido al nmero total de registros que contenga la tabla (tabladedatos.Rows.Count).
Por el bloque Catch se establece un mensaje en caso de que ocurra un error de
conexin.
Ejecutar la aplicacin
356
Form1
Document
Propiedad
ID
ID
Text
Font - Bold
ID
Title
Valor
datos
lbltexto
Consulta de los registros de una tabla con un
control GridView.
True
formulario
Consulta de registro de una tabla.
357
Escoja el objeto Base de datos y especifique como nombre del identificador del
orgen de datos orgendedatos y pulse el botn Aceptar, para visualizar la ventana de
eleccin de la conexin de datos.
Figura 15.6 Ventana Elegir la conexin de datos.
Pulse el botn Nueva conexin para ver la ventana de Agregar conexin, all
d clic sobre el botn Examinar y busque la base de datos bdlibrovbnet.mdf. Se
obtendr la siguiente figura:
358
359
360
361
Ejecutar la aplicacin
Al ejecutarse el sitio Web, se visualizar la siguiente figura:
362
NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y tener creada la base de datos llamada bdlibrovbnet con
sus respectivas tablas. (Ver anexo A, SQL Server).
Form1
Document
Propiedad
ID
ID
Text
Font - Bold
ID
Title
Valor
formulariodatos
lbltexto
Consulta una tabla utilizando el Explorador de
servidores.
True
formulario
Consulta tabla con FormView.
Explorador de servidores
363
364
|Escoja el objeto Base de datos y especifique como nombre del identificador del
orgen de datos conexiondedatos y pulse el botn Aceptar para visualizar la ventana de
Elegir la conexin de datos. De la lista que all aparece escoja la base de datos
bdlibrovbnet.mdf. La ventana quedara de la siguiente forma:
365
366
367
Ejecutar la aplicacin
368
DetailsView1
Form1
Document
Propiedad
ID
Text
Font - Bold
ID
ID
Title
Valor
lbltexto
Insertar registro en una tabla desde un
formulario Web.
True
vistadatos
formulario
Insertar un registro en una tabla.
Establecer la conexin
370
Por otro lado, pulse el botn Avanzadas para ver la ventana de opciones de
generacin de consultas SQL avanzadas. Active las opciones Generar instrucciones
Insert, Update y Delete y Usar concurrencia optimista. Se obtendr la siguiente
figura:
371
372
Ejecutar la aplicacin
Al pulsarse el link Nuevo los campos de texto del objeto vistadatos quedaran en
blanco y se observaran dos nuevos link Insertar y Cancelar, como se aprecia en la
figura.
373
Registro insertado
374
DetailsView1
Form1
Document
Propiedad
ID
Text
Font - Bold
ID
ID
Title
Valor
lbltexto
Modificar registros de una tabla en un
formulario Web.
True
vistadatos
formulario
Modificar registros en una tabla.
Establecer la conexin
375
376
Ejecutar la aplicacin
Con los link numricos busque el registro que se inserto en el ejemplo anterior y
pulse el botn Editar. Se observaran dos nuevos botones Actualizar y Cancelar.
Modifique el contenido del campo empresa por el texto Las acacias.
Figura 15.44 Formulario Web listo para modificar un registro en la tabla.
DetailsView1
Form1
Document
Propiedad
ID
Text
Font - Bold
ID
ID
Title
Valor
lbltexto
Eliminar registros de una tabla desde un
formulario Web.
True
vistadatos
formulario
Eliminar registros en una tabla.
Establecer la conexin
378
Ejecutar la aplicacin
380
381
ListView1
Form1
Document
Propiedad
ID
Text
Font - Bold
ID
ID
Title
Valor
lbltexto
Filtrar los registros de una tabla con
formularios Web.
True
vista
formulario
Filtrar registros de una tabla.
Establecer la conexin
382
383
Por otro lado, pulse el botn WHERE para ver la ventana Agregar clusula
WHERE. Realice lo siguiente: de la lista Columna escoja el campo nit; de la lista
Operador seleccione el operador >=; de la lista Orgen el texto None; y en las
propiedades del parmetro el valor 500. Se obtendr la siguiente figura:
384
385
386
Ejecutar la aplicacin
387
Propiedad
ID
ID
Title
Valor
informeregistros
formulario
Informe de los registros de una
tabla.
Para seleccionar la tabla y disear el informe, pulse la flecha del lado superior derecha
del objeto informeregistros para ver la ventana Tareas de ReportViewer y escoga la
opcin Disear nuevo informe.
388
389
390
391
392
393
394
Al ejecutarse el sitio Web, se visualizar la pgina con el informe de los registros que
contiene la tabla clientes. Puede ajustar el tamao del reporte en la pgina en modo de
diseo.
Figura 15.80 Pgina Web con el informe de los registros de la tabla clientes.
395
Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
AutoPostBack
ID
ID
Title
Valor
lbltexto
Relacin de dos tablas desde un Sitio Web
True
lblempresas
Seleccione el nombre de la empresa:
True
txtpedidos
Registros relacionados.
True
listaempresas
True
datospedidos
formulario
Relacin de dos tablas.
396
Establecer la conexin
397
398
399
Pulse el botn Aceptar para volver a modo diseo. Ahora seleccione el objeto
datospedidos y pulse en la flecha de la parte superior derecha para ver las Tareas de
GridView. Escoja la opcin Elegir origen de datos y seleccione <Nuevo origen de
datos>. Se visualizar la ventana Elija un tipo de origen de datos, all seleccione el
objeto Base de datos y cambie el identificador para el origen de datos por
conexionpedidos.
Figura 15.88 Ventana Elija un tipo de origen de datos (objeto datospedidos).
400
401
402
403
404
Desde la pgina de inicio de Microsoft Visual Studio cree un nuevo proyecto, puede
seguir los siguientes pasos:
1. En la ventana proyectos recientes seleccionar la opcin Crear: link Sitio Web.
405
2. Hacer clic en la opcin Archivo del men y seleccionar Nuevo sitio Web
406
D clic en el icono
(Crear nueva aplicacin Web) que se encuentra en la
parte superior derecha de la ventana. En el nuevo objeto que aparece reemplace en texto
WebSite por ServicioWebNumerosPrimos. Se obtendr una figura similar a la
siguiente:
Figura 16.4 Creacin de una nueva aplicacin Web.
Figura 16.5 Nuevo sitio web con la ubicacin del servicio Web.
408
El cdigo ser la interfaz del servicio Web a los que un usuario tendr acceso desde una
aplicacin Web. Entre Class y End Class se deben declarar cada uno de los
procedimientos que utilizar el servicio Web para realizar una tarea especfica. Los
procedimientos de un servicio Web se estructuran de la siguiente manera:
<WebMethod ()>: Entre los parntesis se puede hacer un comentario del servicio Web,
<WebMethod (Description:=Servicio Web para consultar una base de datos)>
409
figura:
410
411
Label2
Label3
TextBox1
TextBox2
Button1
Form1
Document
Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
ID
ID
AutoPostBack
ID
Title
Valor
lbltexto
Formulario Web para determinar si un
nmero es primo o no con un servicio
Web.
True
lblnumero
Digite un nmero:
True
lblresultado
Resultado:
True
txtnumero
txtresultado
boton
Evaluar nmero
formulario
Pgina Web que consume un servicio
Web.
Para agregar el servicio Web a la aplicacin Web seleccione el men Sitio Web y
escoja la opcin Agregar referencia Web, se obtendr la siguiente ventana:
412
D clic sobre el link Servicios web del equipo local, se visualizar una ventana
similar a la siguiente figura (depende de los servicios que tenga el equipo local):
Figura 16.13 Ventana para seleccionar un servicio Web del equipo local.
En este caso pulse el segundo link Service, el cual tiene una URL
http://localhost:8081/ServicioWebNumerosPrimos/Serv... Se obtendr la siguiente
figura:
413
En esta ventana se muestran todas las funciones que tiene el servicio Web
ServicioWebNumerosPrimos. En el campo Nombre de referencia Web aparece por
omisin el texto localhost (cmbielo si desea), pulse el botn Agregar referencia para
volver a la pgina Web. En el Explorador de soluciones se podr visualizar el servicio
Web integrado al proyecto
Figura 16.15 Servicio Web integrado al sitio Web.
Escribir cdigo
D doble clic sobre el objeto boton para abrir el editor de cdigo del procedimiento
boton_Click y escriba el siguiente cdigo:
414
415
NDICE
Abs, 69
Abstraccin, 198
Acceder a un Servicio Web, 413
AccesDataSource, 355
ActiveMdiChild, 150
AdapterManager, 246
ADO.NET, 230
Aggregate, 279
ALL, 225
ALTER, 224
And, 33
AND, 225
AndAlso, 33
Aplicacin para Windows Forms, 15
Aplicacin Web ASP.NET, 15
Arco, 163
Asc, 73
AsEnumerable, 314
ASP.NET, 316
ASP.NET AJAX, 13
Average, 279
AVG, 225
BETWEEN, 225
BigMul, 69
BindingSource, 246
BulletedList, 335
catch, 117
CBool, 31
CByte, 31
CChar, 31
CDate, 31
CDbl, 31
CDec, 31
Ceiling, 69
Chars, 72
CheckBox, 99
CheckedListBox, 146
Chr, 73
CInt, 31
Circulo, 163
Clase, 11
Clases, 198
Class, 199
Clear, 140
CLng, 31
Colecciones, 84
columnas, 223
ComboBox, 93
Command, 231
CompareValidator, 350
Concat, 72
Conectarse a SQL Server, 422
Connection, 231
Constantes, 26
Constructores, 199
ControlValidate, 352
Copy, 139
cos, 69
Count, 279
COUNT, 225
Creacin de Mens, 130
Creacin de una barra de herramientas,
156, 159
CREATE, 224
CREATE DATABASE, 226
CShort, 31
Cuadro de Herramientas, 16, 319
Curva, 163
CustomValidator, 350
Cut, 139
Data Source, 233, 357
DataAdapter, 231
Database, 233, 357
DataGridView, 105
DataMember, 241
DataSet, 230, 355
DataSource, 241, 276
DataTable, 231
DataView, 231, 355
Date, 66
DateTimePicker, 144
Default.aspx, 319
DefaultView, 276
DELETE, 224
Diseador formulario Windows, 16
Diseador formularios Web, 319
DLL, 223
DML, 223
DoLoop While, 51
DrawArc, 163
DrawCurve, 163
DrawEllipse, 163
DrawLine, 163
DrawPie, 163
DrawPolygon, 163
DrawRectangle, 163, 169
DROP, 224
Editor de cdigo, 21
El explorador de soluciones, 17, 319
Elegir base de datos, 235
Elegir proveedor base de datos, 235
Elipse, 163
Encapsulacin, 198
ErrorMessage, 352
Espacio de nombres, 11
Estructuras de Control, 37
filas, 223
fill, 233, 357
FillEllipse, 163
FillPie, 163
FillPolygon, 163
FillRectangle, 163
Floor, 69
FolderBrowseDialog, 122
Font - Bold, 355, 356
For, 45, 55
416
From, 278
FROM, 224
FromArgb, 104
Funciones de cadenas de caracteres, 72
Funciones Matemticas, 69
Function, 61
GetItemChecked, 148
GraphicsPath, 169
GROUP, 224
Group By, 279
HAVING, 224
Height, 175
Herencia, 198, 201
HotSpotMode, 332
If (operador)., 39
IIF., 39
ImageMap, 331
IN, 225
IndexOf, 73
InitialDirectory, 137
Insert, 73
INSERT, 224
Integrated, 10
Integrated Security, 233, 357
Join, 279
KeyCode, 194
KeyDown, 193
KeyPress, 193
KeyUp, 193
Left, 172
Len, 73
Length, 72
Lenguaje de Consulta Estructurado, 223,
225, 229
LIKE, 225
LinkLabel., 91
LINQ, 278
LINQ to DataSet, 278
LINQ to Objects, 278
LINQ to SQL, 278
LINQ to XML, 278
ListBox, 93
ListView, 107
Matrices, 78
Max, 69, 279
MAX, 226
MaximumValue, 352
MDI, 130
Mensaje, 198
Men principal, 15, 319
men Ventana, 153
Mens, 130
Mtodo, 198
Mid, 73
min, 69
Min, 280
MIN, 226
MinimumValue, 352
Modificar la cadena de conexin:, 235
Mdulos, 59
MonthCalendar, 145
MouseClick, 188
MouseDoubleClick, 188
MouseDown, 188
MouseEnter, 188
MouseHover, 188
MouseLeave, 188
MouseMove, 188
MouseUp, 188
MouseWheel, 188
movenext, 127, 128
MultiView, 342
NamesSpace, 410
Not, 33
NOT, 225
Objetos, 198
OleDataAdapter, 231
OleDbCommand, 231
OleDbConnection, 231
OleDbDataAdapter, 355
Operadores de comparacin, 225
Operadores Lgicos, 33
Operadores lgicos S.Q.L, 224
Operadores Relacionales, 32
Or, 33
OR, 225
OracleCommand, 231
OracleConnection, 231
OracleDataAdapter, 231
OracleDbDataAdapter, 355
ORDER, 224
Order By, 279
OrElse, 33
Orientada a objetos, 223
origen de datos, 354
Palabras clave, 36
Paste, 139
Pie, 163
Point, 163
Poligono, 163
Polimorfismo, 198
PostBack, 332
PostBackValue, 332
pow, 69
private, 199
Probar la conexin, 235
Procedimientos, 61
Programacin Orientada a Objetos, 198
Propiedad, 198
protected, 199
public, 199
Punto, 163
RadioButton, 99
RadioButtonList, 338
RangeValidator, 350
ReadtoEnd, 138
Recta, 163
Rectangle, 163
Rectangulo, 163
Redo, 139
417
RegularExpressionValidator, 350
Remove, 73
Replace, 73
RequiredFieldValidator, 350
RichTextBox, 115
round, 69
RowFilter, 276
SDI, 130
Select, 278
SELECT, 224, 227
Select case (Seleccionar caso), 42
SelectedItem, 255, 256
SelectedValue, 276
SelectionBullet, 141
Sentencia If (Si), 37
Sentencia If- Else (Si - Sino), 38
Sentencias bsicas S.Q.L, 226
servicio web, 407
sin, 69
SOAP, 407
Sobrecarga, 200
Split, 73
SqlCommand, 231
SqlConnection, 231
SqlDataAdapter, 231
SqlDataSource, 355
SqlDbDataAdapter, 355
sqrt, 69
Str, 31
StreamWriter, 137
String.Copy, 73
StrReverse, 73
Sub, 61
SubString, 73
Sum, 280
SUM, 225
System.Data.SqlClient, 232, 356
System.Drawing, 162
System.Linq, 278
TableAdapter, 246
tan, 69
Timer, 172
Tipos de datos, 26
TocharArray, 73
ToLower, 72
Toma de desiciones, 37
Top, 172
ToUpper, 72
TrackBar, 102
TreeView, 118
Trim, 73
Try-Catch, 117
tuplas, 223
Undo, 139
UPDATE, 224
Val, 31
ValidationExpression, 352
ValidationSummary, 350
ValidationType, 352
ValueMember, 276
ValueToCompare, 352
variable, 25
Ventana de depuracin de errores, 19, 320
Ventana de propiedades, 18, 320
View, 342
Visual Basic .NET, 10
Visual Studio .NET, 10
VScrollBar, 102
WebBrowse, 125
Where, 279
WHERE, 224
While, 48
Width, 175
Windows Authentication, 422
XmlDataSource, 355
Xor, 33
418
BIBLIOGRAFA
JAMSA, Kris. Superutilidades para Visual Basic .NET. Editorial Mc Graw Hill,
1ra. Edicin. Espaa. 2003.
INFOGRAFA
http://www.elquintero.net/Manuales.aspx?Cat=2&SubCat=6&jscript=true
http://www.willydev.net/descargas/Cursos/vbnet/index.html
http://www.dotnetspider.com/tutorials/AspNet-Tutorials.aspx
http://www.programacionfacil.com/visual_basic_net/start
http://www.programacion.com/asp/articulo/datosaspnet/
http://www.es-asp.net/tutoriales-asp-net/tutorial-61-81/efectuando-acceso-adatos.aspx
http://www.es-asp.net/tutoriales-asp-net/tutorial-61-96/enlazando-a-basesde-datos.aspx.
http://msdn.microsoft.com/es-es/library/y8c0cxey.aspx
http://msdn.microsoft.com/es-es/library/ya3sah92(VS.80).aspx
http://msdn.microsoft.com/es-es/library/ff855828(VS.80).aspx
http://msdn.microsoft.com/es-es/library/a127sbc5(VS.80).aspx
http://msdn.microsoft.com/es-es/library/h974h4y2(VS.80).aspx
http://social.msdn.microsoft.com/forums/es-ES/vbes/thread/087a5f2c-9eda44a5-9a58-6008b65c9a8e
http://www.recursosvisualbasic.com.ar/htm/tutoriales/datagrid-dbgrid.htm
http://www.recursosvisualbasic.com.ar/htm/tutoriales/controles_visual_basic
_menu.htm
419
ANEXO A
SQL Server
Este tutorial utiliza como base de datos SQL Server 2005 Express.
Dicha base de datos se puede instalar independientemente de la versin de Visual
Studio.
A.1 Conectarse a SQL Server.
Cuando se instala SQL Server, en los programas existe una opcin para conectarse a la
base de datos seleccione Microsoft SQL Server 2005. Realice los siguientes pasos:
1. Inicio - > Todos los Programas - > Microsoft SQL Server 2005.
2. SQL Server Management Studio Express.
Figura A.1 Opciones para conectarse a SQL Server.
420
421
422
Figura A.7 Base de datos bdlibrovbnet con sus elementos creados inicialmente.
423
Seleccione New Table para ver la ventana de diseo de la tabla, como se aprecia
en la siguiente figura:
Figura A.9 Ventana de diseo de una tabla.
Para agregar los campos a la tabla en Column Name escriba nit, en Data Type
seleccione nvarchar (50) (campo alfanumrico).
Figura A.10 Ventana con el campo nit creado.
Realice los mismos pasos para crear los campos: empresa, representante,
direccion, telefono, ciudad (todos con el mismo tipo de datos nvarchar (50)). Por
424
ltimo seleccione el campo nit y pulse el icono para crear la clave primaria (
figura quedara:
), la
Figura A.11 Ventana con los campos de la tabla y nit como llave primaria.
425
Name.
Pulse el botn Yes para obtener la ventana para escoger el nombre Choose
Escriba como nombre de la tabla clientes y pulse el botn OK. Para trabajar con
algunos de los ejercicios planteados en el libro, cree las tablas pedidos, productos y
ventas con las estructuras que se muestran a continuacin:
Figura A.14 Estructura tabla pedidos.
426
Al finalizar de crear las tablas, la estructura de la base de datos con las tablas
quedara como se aprecia en la siguiente figura:
Figura A.17 Estructura de la base de datos.
Cuando se selecciona una tabla y se d clic derecho se visualiza la ventana con las
diferentes opciones que se pueden realizar como son:
1. New Table: Para crear una nueva tabla.
2. Modify: Permite modificar la estructura de una tabla que previamente se haba
creado.
3. Open Table: Para abrir una ventana de edicin para insertar o visualizar los
datos de una tabla.
4. Script Table as: Para crear, borrar, alterar, seleccionar, insertar, actualizar,
ejecutar una consulta, un archivo o una imagen.
5. View Dependencies: Para visualizar las dependencias (relaciones) de una tabla.
6. Rename: Para renombrar una tabla.
7. Delete: Para eliminar una tabla.
8. Refresh: Para refrescar o actualizar una tabla.
9. Properties: Para visualizar las propiedades de una tabla.
427
428
429
(Execute SQL),
Ahora se debern llenar con datos las tablas pedidos, productos y ventas de
acuerdo a las siguientes figuras:
430
431
Seleccione una tabla y pulse el botn Add. Realice esta misma operacin con
cada una de las tablas restantes. Al terminar pulse el botn Close para observar la
siguiente figura:
Figura A.29 Ventana Database Diagram con las tablas adicionadas.
Para crear la relaciones entre las tablas seleccione el campo nit de la tabla
cliente, de clic en el mouse y mantngalo pulsado y arrstrelo hacia el campo nit de la
tabla pedidos, suelte el mouse para ver la ventana Tables and Columns.
432
433
Name.
Pulse el botn Yes para obtener la ventana para escoger el nombre Choose
434
Adicione las tablas clientes y pedidos. Al terminar pulse el botn Close para
visualizar la siguiente figura:
Figura A.38 Ventana de la vista con las tablas clientes pedidos.
436
para visualizar la
Name.
Pulse el botn Yes para obtener la ventana para escoger el nombre Choose
437
438