Es una mejora a Visual
Basic formando parte de Visual Studio
y compartiendo el entorno de desarrollo
con Microsoft Visual C++ .NET, Microsoft
Visual C# .NET, etc.
El Entorno de Desarrollo recibe el nombre
de Entorno de Desarrollo de Microsoft Visual
Studio .NET. Este entorno es personalizable
y contiene todas las herramientas. necesarias
para construir programas para Microsoft
Windows.
El Entorno de Desarrollo contiene múltiples
ventanas y múltiples funcionalidades y es
por consecuencia llamado un entorno de desarrollo
integrado (integrated development environment
IDE).
La ventana central es la ventana de diseño
(Designer Window), la cual contiene
el formulario a desarrollar.
La caja de herramientas (ToolBox)
se localiza de lado izquierdo. En el extremo
derecho tenemos la ventana de explorador
de soluciones (Solution Explorer).
La ventana de propiedades (Properties
window) contiene tres partes:
La parte superior contiene un combo
box que muestra el nombre y la clase del
objeto seleccionado.
La parte media contiene la lista de
propiedades del objeto seleccionado, de
lado derecho contiene un conjunto de cajas
para ver y editar el valor de la propiedad
seleccionada.
La parte inferior es un cuadro descriptivo
que proporciona una breve descripción
de la propiedad seleccionada.
Es necesario tener instalado el Visual
Studio .NET, al ejecutarlo se presenta una
página de inicio, en caso de no presentarse
entonces de clic en Help/Show Start Page.
En esta página será posible establecer su
perfil, por ejemplo identificarse como Desarrollador
Visual Studio o más especifico como Desarrollador
Visual Basic con lo cual Visual Studio configura
de inmediato el entorno de desarrollo para
programar en Visual Basic.
Para iniciar un nuevo proyecto, de clic
en la opción Projects y clic en el
botón [New Project], esta acción
abre una ventana donde se indicará el archivo
a abrir, los proyectos Visual Basic .NET
tiene la extensión .vbproj. Una vez
que abre el projecto si la página de inicio
estaba visible continuará así y en el Explorador
de Soluciones (Solution Explorer) se cargan
los archivos correspondientes al proyecto.
En Visual Basic .NET existen dos archivos:
Un archivo de projecto .vbproj,
el cual contiene información específica
para una determinada tarea de programación.
Un archivo de solución .sln,
el cual contiene información relacionada
con uno o más proyectos. Este tipo de
archivo puede administrar varios projectos
relacionados entre sí y son similares
a los archivos de grupos de proyecto (.vbg)
en Visual
Basic 6
Si la solución tiene un único proyecto,
abrir el archivo de proyecto .vbproj
o el archivo de solución .sln
tiene el mismo resultado, pero si la solución
es multiproyecto entonces deberá abrir el
archivo de solución.
Best
Practices: Procure siempre abrir el
archivo de solución .sln.
Los formularios en Visual Basic .NET tienen
la extensión .vb. Se mostraran
a manera de pestañas la página de inicio,
la vista de diseño y el código del formulario.
Para evitar el acoplamiento de ventanas,
mientras arrastre la ventana pulse la tecla
[Ctrl], si desea integrar la ventana
como pestaña entonces arrastre la ventana
sobre otras pestañas y libere.
El control Image desaparece en
Visual Studio.
Ya no tendrá que utilizar el tabulador
para identar su código.
Visual Studio .NET tiene una nueva herramienta
que comparte con Visual Basic, Visual C++,
Visual C#, etc.
llamada .NET Framework que
además es una interfaz subyacente que forma
parte del propio sistema operativo Windows.
La estrucutra de .NET Framework
es por Clases mismas que puede incorporar
a sus proyectos a través de la instrucción
Imports, por ejemplo una de
sus Clases es System.Math la
cual soporta los siguientes métodos
Método
Descripción
Abs(n)
Calcula el valor absoluto de n
Atan(n)
Calcula el arcotangente de n en radianes
Cos(n)
Calcula el coseno del ángulo n expresado
en radianes
Exp(n)
Calcula el constante de e elevada
a n
Sign(n)
Regresa -1 si n es menor
que cero, 0 si n es cero y +1
si n es mayor a cero
Sin(n)
Calcula el seno del ángulo n expresado
en radianes
Sqr(n)
Calcula la raíz cuadrada de n.
Tan(n)
Calcula la tangente del ángulo n expresado
en radianes
La declaración de Imports
debe ser a nivel de formulario:
Imports System.Math
Public Class Form1
.
.
.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)-
Handles MyBase.Load
txtOutput.Text += Sqrt(9) & vbNewLine
.
.
.
La biblioteca de clases .NET
es una biblioteca de clases incluida en
el Microsoft .NET Framework y está diseñada
para ser la base sobre las cuales las aplicaciones
.NET son construidas.
La biblioteca .NET contiene un
número considerable de clases con código
reutilizable, para ayudar a controlar esta
complejidad .NET utiliza namespaces,
colecciones de clases relacionadas.
De clic en el botón [New Project]
o File/New/Project, como tipo de proyecto
seleccione Visual Basic Project,
como plantilla seleccione Windows Application,
por último indique la ubicación donde desea
almacenar su proyecto. Al dar clic Visual
Studio configura el entorno de desarrollo
y crea un directorio con el mismo nombre
que especifico para la aplicación.
Las aplicaciones Windows creadas con Visual
Basic .NET tienen la extensión .exe
mismas que podrán ser ejecutadas en cualquier
equipo que tenga instalado Microsoft Windows.
Visual Basic .NET instala de de manera automática
los archivos de soporte, incluyendo las
bibliotecas de vínculos dinámicos y archivos
de .NET framework.
Visual Studio puede crear dos tipos de
archivos ejecutables:
Debug - Compilación de
depuración, se utiliza cuando se prueba
y depura un programa (Default).
Release - Versión de edición,
se utiliza cuando se termina el programa
siendo esta una versión optimizada de
menor tamaño
Para crear un archivo ejecutable, de clic
en Build/Configuration Manager para decidir
sobre el tipo de archivo ejecutable, además
de otras opciones como la plataforma para
la cual desea crear la aplicación.
De clic en Build/Build Solution.
Lo que Visual Basic hace es crear una
directorio binaria dentro del directorio
que contiene el proyecto y
compilará el código fuente, dando como resultado
un archivo .exe con el nombre de su aplicación.
Un Evento es una acción o acontecimiento
reconocido por algunos objetos para los
cuales es necesario
escribir el código para responder a dicho
evento. Los eventos pueden ocurrir como
resultado de una acción del usuario (onClick),
por invocación a través de código o disparados
por el sistema (Timer Tick Event).
Un Manejador de Eventos contiene
código que responde a eventos particulares.
Un desarrollador diseña cuidadosamente sus
aplicaciones determinando los controles
disponibles para el usuario y los eventos
apropiados asociados a estos controles,
entonces, el desarrollador escribe el código
para integrar los eventos consistentes con
el diseño de la aplicación.
Un procedimiento es un conjunto
de sentencias que realizan una acción lógica.
Existen tres tipos de procedimientos en
Visual Basic .NET:
Event procedures/Event handler,
procedimiento que contiene código que
es ejecutado en respuesta a un evento.
Cuando el evento es disparado el código
dentro del manejador de eventos es ejecutado.
Visual Basic .NET para los manejadores
de eventos utiliza una convención estándar
la cual combina el nombre del objeto
seguido de un guión bajo y el nombre
del evento.
Private|Public Sub objeto_Evento(parámetros) handles Objeto.Evento
sentencias
End Sub
Cada manejador de eventos provee dos
parámetros, el primer parámetro llamado
sender provee una referencia
al objeto que dispara el evento, el
segundo parámetro es un objeto cuyo
tipo de dato depende del evento que
es manejado. Ambos parámetros son pasados
por valor.
Si un parámetro es declarado por referencia
ByRef el parámetro apunta
al argumento actual. Por default los
argumentos se pasan por valor ByVal
el parámetro es una copia local del
argumento.
Sub procedures, contiene código
que el desarrollador crea para realizar
una acción lógica.
Function procedures, contiene
código que el desarrollador crea para
realizar una acción lógica y regresa un
valor, el valor que una función envia
de regreso al programa que lo invoco es
llamado valor de regreso. Para regresar
un valor se utiliza la sentencia Return.
Cuando es declarada una variable también
se define su ámbito, el ámbito de una variable
es la región de código en la cual la variable
se referencia directamente. Existen dos
tipos de ámbitos de las variables:
Local, es una variable declarada
dentro de un procedimiento y se destruye
cuando el procedimiento termina de ejecutarse.
Módular, es una variable declarada
a nivel módulo fuera de cualquier procedimiento
y son declaradas en la parte superior
del Editor de Código arriba del primer
procedimiento, este espacio es llamado
Sección de Declaraciones Generales (General
Declaration Section).
Es recomendable utilizar convenciones
para el nombre de los controles, es decir,
que al momento de dar lectura
al código sea fácil de entender y comprender,
por lo que el establecimiento de convenciones
ayuda a identificar que control se empleo,
por ejemplo, si emplea un control botón
emplee siempre como prefijo btn depués
completelo con un nombre descriptivo acorde
a la funcionalidad que este tendrá.
El control CommandButton en Visual
Basic .NET recibe el nombre de Button,
la propiedad Caption ahora recibe
el nombre de Text, ocurre lo
mismo para el caso del control Label.
El control Label ahora su
propiedad Caption recibe el nombre
de Text y por ejemplo la antes
propiedad Alignment ahora recibe
el nombre de TextAlign la cual
tiene más opciones de alineación.
Donde LinkLabel1.Text es
el valor que tiene asignado la propiedad
Text por ejemplo file:///C:/pagina.html
si quiere probar sin tener acceso a internet
o si quiere probar con acceso a internet
seria http://www.elSitioWeb.com.
Si requiere especificar el navegador con
el cual desea abrir el URL basta con señalarlo:
System.Diagnostics.Process.Start("firefox.exe", LinkLabel2.Text)
'La página se mostrara utilizando el navegador firefox
Es necesario señalar algo importante del
código y adentrarnos a la programación .NET,
ya que el método Start de la
clase Process inicia en memoria
un proceso de programa ejecutable para el
navegador.
La clase Process hace mucho
más que eso pero la parte a destacar es
que forma parte de la biblioteca de objetos
System.Diagnostics la cual
los programadores Visual Basic .NET llaman
espacio de nombres
System.Diagnostics.
En cuanto al método Process.Start
destaca que además de abrir una página web
puede ser utilizado para ejecutar otras
aplicaciones:
System.Diagnostics.Process.Start(LinkLabel3.Text)
'Donde el valor de LinkLabel3.Text es "winword"
El método Start utiliza 2
argumentos, el primero especifica la aplicación
a emplear y el segundo especifica el archivo
que abrira la aplicación, es decir, el siguiente
ejemplo abre el archivo indicado con Microsoft
Excel:
Es posible utilizar antiguos controles
ActiveX y utilizarlos con algunas limitaciones,
teniendo como restricción técnica que deberán
estar en un contenedor, por ejemplo de clic
con el botón derecho en el separador Windows
Forms seleccione la opción Add/Remove
items y aparecerá una ventana donde
dará clic en el folder COM Components
y eligira el componente que desea agregar.
El Control MainMenu agrega menús
a un programa, el manú se configura mediante
sus propiedades.
Para agregar un menú simplemente seleccione
el control MainMenu el cual de manera
automática se ajusta al tamaño del formulario,
este menú es de fácil manipulación pues
basta con escribir el nombre para las opciones
y a través del menú popup es posible modificarlo.
Una vez agregado el control MainMenu
también se agrega un panel debajo del formulario
la cual recibe el nombre de Bandeja
de Componentes a través del cual
será posible definir y modificar sus propiedades.
Ahora bien lo que se muestra en la parte
superior del formulario es un representación
visual del menú misma que recibre el nombre
de diseñador de menú, pero el objeto menú
principal se muestra en la parte inferior
dentro de la bandeja de componentes.
Para definir teclas de acceso para las
opciones del menú, continua con la forma
de hacerlo en Visual Basic 6 que es anteponiendo
al caracter al cual deseamos hacer referencia
el símbolo &
Si después de escribir las opciones de
su menú desea cambiar el orden basta con
seleccionar y mover la opción a la posición
deseada.
Si desea eliminar una opción del menú
basta con seleccionarla y pulsar la tecla
[Supr] o [Del].
Para agregar código a cada opción del
menú basta con dar doble clic sobre la opción
deseada:
Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MenuItem2.Click
MsgBox("opción 1_1")
End Sub
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MenuItem3.Click
MsgBox("opción 1_2")
End Sub
Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MenuItem5.Click
MsgBox("opción 2_1")
End Sub
Visual Basic .NET provee funciones financieras
como Pmt(Rate,Nper,PV) para
determinar pagos mensuales y FV(Rate,Nper,Pmt)
para determinar el valor futuro de una anualidad
basada en pagos fijos periodicos e intereses
de tasa fija.
En Visual Basic .NET existen funciones
a través de las cuales es posible manipular
el tiempo y la hora:
TimeString, regresa la
hora actual del sistema.
DateString, regresa la
fecha actual del sistema.
Now, regresa un valor codificado
que representa la hora y fecha actual
del sistema.
Hour(hora), regresa el
número de hora actual del sistema.
Minute(hora), regresa el
número de minuto actual del sistema.
Second(hora), regresa el
múmero del segundo actual del sistema.
Day(fecha), regresa el
número del día actual del sistema.
Month(fecha), regresa el
número de mes actual del sistema.
Year(fecha), regresa el
año actual del sistema.
Weekday(fecha), regresa
el número que representa el día de la
semana. (1 = Domingo, 2 = Lunes, ...).
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button1.Click
txtTimeString.Text = TimeString
End Sub
Private Sub DateString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button2.Click
txtDateString.Text = DateString
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button3.Click
txtNow.Text = Now
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button4.Click
txtHour.Text = Hour(Now)
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button5.Click
txtMinute.Text = Minute(Now)
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button6.Click
txtSecond.Text = Second(Now)
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button7.Click
txtDay.Text = Microsoft.VisualBasic.DateAndTime.Day(Now)
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button8.Click
txtMonth.Text = Month(Now)
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button9.Click
txtYear.Text = Year(Now)
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button10.Click
txtWeekday.Text = Weekday(Now)
End Sub
PageSetupDialog,
para que el usuario controle las opciones
de configuración de página.
Al momento de diseñar la interfaz de usuario
los controles de cuadro de dialogo no aparecen
en la pantalla pero si se muestran visibles
al pie de la misma, pudiendo acceder a sus
propiedades para configurar el control.
Si requiere hacer visible el cuadro de
dialogo en modo ejecución tendrá que emplear
el método ShowDialog().
El método ShowDialog() regresa
un valor denominado DialogResult,
indicando el botón del cuadro de diálogo
en el que el usuario dio clic.
El control OpenFileDialog representa
un dialogo preconfigurado para seleccionar
un archivo que será abierto. La propiedad
InitialDirectory especifica
el directorio inicial desplegado por la
caja de dialogo de archivo. La propiedad
Filter determina el formato
de archivos que podrán ser presentados en
la caja de dialogo, para desplegar la caja
de dialogo de archivo se utiliza su método
ShowDialog, la propiedad FileName
mantiene es un string que contiene el nombre
del archivo seleccionado.
Suponga un ejercicio donde tiene un control
OpenFileDialog y otro PictureBox,
a través del cuadro de dialogo es posible
seleccionar una imagen, misma que será cargada
y presentada por el control de imagen (*.bmp,
*.emf, *.wmf, *.ico, *.cur, *.jpg, *.jpeg,
*.png, *.gif), es posible utilizar el método
Filter para especificar solamente
los archivos que tengan el formato especificado
(entre formato y formato se utiliza como
separador el símbolo | pipe):
ofd.Filter = "formato 1|*.jpg|formato 2|*.bmp"
ofd.ShowDialog()
pb.Image = System.Drawing.Image.FromFile(ofd.FileName)
Dim dr
dr = ofd.ShowDialog()
MsgBox(dr)
El control ColorDialog representa
un dialogo preconfigurado que despliega
la caja de dialogo de color estándar, permitiendo
al usuario seleccionar el color o definir
un color personalizado, para desplegar la
caja de dialogo de color se utiliza su método
ShowDialog, la propiedad color
mantiene el color seleccionado por el usuario.
Es posible agregar el control ColorDialog
al formulario aunque esté no este visiblemente
contenido en el formulario pero si visible
en la bandeja de componentes o es posible
agregar el control ColorDialog a
través de código declarando un objeto de
este tipo.
REM Agregando un control ColorDialog al formulario
Private Sub BtnBgColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnBgColor.Click
CD.ShowDialog()
LblText.BackColor = CD.Color
End Sub
REM Declarando un objeto tipo ColorDialog via código
Private Sub BtnForeColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnForeColor.Click
Dim FC As New ColorDialog
FC.ShowDialog()
LblText.ForeColor = FC.Color
End Sub
El control FontDialog representa
un dialogo preconfigurado que despliega
la caja de dialogo de fuente estándar, por
default la caja de dialogo muestra cajas
de listas para la fuente, estilo-fuente,
y tamaño, cajas de chequeo para efectos
como subrayado o tachado, también muestra
un ejemplo de como la fuente podría aparecer,
para desplegar la caja de dialogo de fuente
se utiliza su método ShowDialog,
la propiedad font mantiene
el color seleccionado por el usuario.
Es posible agregar el control FontDialog
al formulario aunque este no esté visiblemente
contenido en el formulario pero si visible
en la bandeja de componentes o es posible
agregar el control FontDialog a través
de código declarando un objeto de este tipo.
Private Sub BtnFont_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnFont.Click
Dim FD As New FontDialog
FD.ShowDialog()
LblText.Font = FD.Font
End Sub
El control PrintDialog es una caja
de dialogo preconfigurada, utilizada para
seleccionar una impresora, escoger las páginas
a imprimir y determinar otras características
de impresión en aplicaciones Windows. Es
posible habilitar al usuario para imprimir
varias partes de sus documentos: imprimir
todo, imprimir un rango de páginas o imprimir
una selección. La propiedad Document
se establece con un objeto PrintDocument,
para desplegar la caja de dialogo de impresión
utilice el método ShowDialog,
la caja de dialogo de impresión almacena
la configuración del usuario en el objeto
PrintDocument y para imprimir
utilice el método Print.
El control PrintPreviewDialog es
una caja de dialogo preconfigurada, para
presentar como podría ser el documento cuando
se imprima. La propiedad Document
se establece con un objeto PrintDocument,
el cual tiene propiedades que describen
que será impreso y la habilidad para imprimir
dentro de una aplicación Windows, para desplegar
la caja de dialogo de impresión-previa utilice
el método ShowDialog,
El control PageSetupDialog es una
caja de dialogo preconfigurada que permite
al usuario manipular la configuración de
páginas, incluyendo margenes y orientación
del papel. La propiedad Document
se establece con un objeto PrintDocument,
para desplegar la caja de dialogo de PageSettings
utilice el método ShowDialog,
la selección del usuario se almacena en
la propiedad PageSettings y
debería entonces ser copiado al objeto PrintDocument.
Visual Basic .NET no permite el uso del
tipo de dato Variant y todas
las variables deberán ser declaradas por
las instrucciones Dim nombreVarible
as tipoDato.
Dim es la abreviatura de
Dimensión, que sirve para reservar
espacio para la variable. La sentencia Dim
especifica el nombre de la variable y su
tipo de dato asociado.
Las variables deben tener un nombre único
llamado Identificador, los identificadores
se forman siguiendo las siguientes reglas:
Comenzar con una letra o guión bajo
(underscore)
Deben contener letras, digitos y guiones
bajos.
No pueden ser palabras reservadas.
Recomendaciones:
El nombre de las variables deberían
comenzar con una letra
El nombre de las variables deberían
distinguir cada nueva palabra escribiendo
la primer letra en mayúscula
El nombre de las variables deberían
ser lo suficientemente largo para ser
significativo y lo suficientemente corto
para ser manejable.
Una novedad en Visual Basic .NET es la
declaración e inicialización de variables,
ya que es posible hacer esto al mismo tiempo:
Dim nombreVariable as tipoDato = valorInicial
Si no se define un tipo de dato para la
variable, entonces asume el tipo de dato
por default que es Object.
Es posible declarar variables como se
hacia en Visual Basic 6, si emplea la instrucción
Option Explicit Off.
Option Explicit Off
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
v = "xxx" & 5
MsgBox(v)
End Sub
End Class
Visual Basic .NET incorpora la instrucción
Option Strict si desea que
los tipos de datos en las operaciones sean
del mismo tipo y evitar la conversión y
perdida de datos.
A través de la función InputBox
es posible manipular la entrada de datos
por parte del usuario, pudiendo almacenar
en una variable los datos ingresados por
este.
Dim sRespuesta As String
sRespuesta = InputBox("Password : ", "Usuario", , 500, 500)
If sRespuesta <> vbNullString Then
MsgBox("Validación de usuario y password pendiente...")
Else
MsgBox("Es necesario proporcionar su password")
End If
El primer parámetro que recibe esta función
es un texto indicativo para el usuario,
un texto para el título de la ventana, un
valor inicial para el campo donde el usuario
ingresará datos, un número que representa
la coordenada X y otro número que representa
la coordenada los cuales indican la posición
en donde se presentará la ventana de ingreso
de datos.
Los tipos de datos numericos en Visual
Basic .NET se agrupan en dos categorias:
enteros y de punto flotante.
Los tipos de datos numericos a su vez
se agrupan en, Byte, Short, Integer y
Long.
Los tipos de datos de punto flotante son
Single y Double.
Los tipos de datos Char almacenan
un sólo caracter en formato Unicode.
Los tipos de datos String almacenan
una secuencia de caracteres Unicode.
Unicode es un sistema internacional de
codificación de 16-bit que cubre valores
para más de 45,000 caracteres. Un caracter
Unicode es almacenado como un valor numerico
sin signo de 16-bit, de 0 a 65535. Los primeros
128 (0-127) caracteres Unicode corresponden
al conjunto de caracteres ASCII. Del 32
al 127 corresponden a caracteres alfanumericos
y simbolos para un teclado US. Del 128 al
255 representan caracteres especiales.
El tipo de dato Boolean es un valor
sin signo el cual es interpretado como falso
o verdadero.
El tipo de dato Date almacena fechas
y tiempo, el rango de valores posible es
del 12:00:00 AM Enero 1 al 31 de Diciembre
del 9999 11:59:59 PM. Los valores para las
fechas deben ser encerrados entre el signo
# y con el formato m/d/aaaa,
por ejemplo #12/7/1971#.
El tipo de dato Object es el tipo
de dato universal en Visual Basic .NET y
es también el tipo de dato por default para
las variables que son declaradas sin especificar
su tipo de dato.
Visual Basic permite al desarrollador
crear sus propios tipos de datos, esto es
posible.NET a través del empleo de la instrucción
Structure, ejemplo:
Structure Persona
Dim sNombre As String
Dim nEdad As Integer
Dim dFechaNac As Date
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
Dim Empleado As Persona
Empleado.sNombre = "Gerardo Ángeles Nava"
Empleado.nEdad = 33
Empleado.dFechaNac = "21 / 9 / 1971"
txtOutput.Text = Empleado.sNombre & vbNewLine
txtOutput.Text += Empleado.nEdad & vbNewLine
txtOutput.Text += Empleado.dFechaNac
End Sub
Cada variable declarada dentro de la estructura
es llamado un member.
Una constante es aquella que almacena
un valor que no es posible cambiar durante
la ejecución del programa.
Se recomienda que el nombre de una constante
sea escrito en su totalidad en mayúsculas.
Const PI As Double = 3.14159265
Si desea que la constante esté disponible
para todos los formularios y módulos
de la aplicación deberá ser declarada en
un módulo y anteponer a su declaración la
palabra reservada Public.
REM Escribir en un Módulo
Public Const PI As Double = 3.14159265
Visual Basic .NET dispone de los siguientes
operadores matemáticos:
Operador
Descripción
+
Suma
-
Resta
*
Multiplicación
/
División
\
División entera (parte entera de la
división)
Mod
Residuo (resto de la división entera)
^
Exponenciación (elevar a una potencia)
&
Concatenación de Cadenas
Dim nInc As Integer
For nInc = 1 To 10
If nInc Mod 2 = 0 Then
txtOutput.Text += nInc & " es par " & vbNewLine
Else
txtOutput.Text += nInc & " no es par " & vbNewLine
End If
Next
txtOutput.Text += "10/0 = " & CStr(10 / 0)
La división entre 0 no está permitida
en los cálculos matemáticos ya que produce
un resultado infinito, en la versión Visual
Basic 6 hacer esto produce un error de ejecución
11 "División entre 0", pero en Visual Basic
.NET se maneja esta situación automáticamente
y muestra un valor de Infinito.
Ponga atención en el siguiente código
y tenga cuidado al comparar resultados ya
que el valor que regresa la excepción del
cálculo matemático entre 0 es Infinito
con la primer letra en mayúscula:
If CStr(10 / 0) = "infinito" Then
MsgBox("manejador de cálculo")
Else
MsgBox("No es lo mismo -infinito- e -Infinito-")
End If
If CStr(10 / 0) = "Infinito" Then MsgBox("manejador de cálculo")
A manera de resumen recordaremos que For
se utiliza cuando se conoce de antemano
el número de iteracciones a ejecutarse.
Do se utiliza cuando no se
conoce de antemano el número de iteraciones
a ejecutarse. Si al menos debe ejecutarse
1 iteración es necesario colocar la expresión
condicional al final del ciclo. Evite ciclos
infinitos, para ello asegurese de que estos
ciclos tengan una expresión condicional
de salida. Utilice Until a
diferencia de While cuando
requiera que la expresión condicional sea
la contraria, por ejemplo con While
la expresión condicional podría ser A
<> B y con Until podría
ser A = B.
La única sentencia de control que tiene
un cambio relevante sintacticamente es While
ya que antes se escribia While ...
Wend ahora es necesario escribir
While ... End While.
Visual Basic .NET incorpora 2 nuevos operadores
lógicos para utilizarlos en las sentencias
de control, a continuación se mostrará la
tabla de operadores lógicos anteriores y
nuevos:
Operadores
Lógicos
Descripción
tr>
And
Las 2 expresiones deben
ser verdaderas
Or
Alguna de las 2 expresiones
es verdadera
Not
Negación del resultado
de la expresión
Xor
Si 1 y sólo 1 de las
expresiones es verdadera
AndAlso
Si
la primer y segunda condición son verdaderas
OrElse
Si
la primer o segunda condición es verdadera
Los nuevos operadores lógicos AndAlso
y OrElse reciben el nombre
de sistema de corto-circuito.
Dim nCalificacion As Integer = 0
If nCalificacion <= 0 AndAlso nCalificacion / 0 Then
MsgBox("Error de lógica")
Else
MsgBox("Continuar cálculo")
End If
Parece que el operador lógico AndAlso
como OrElse nos ahorran escribir
un If dentro de otro If/else
y quizá evitar un error en tiempo de ejecución.
Dim nCalificacion As Integer = 0
If nCalificacion < 0 OrElse nCalificacion / 0 Then
MsgBox("Error de lógica")
Else
MsgBox("Continuar cálculo")
End If
La sentencia de control Do ... Loop
es la sentencia general iterativa, la cual
permite ejecutar repetitivamente un grupo
de sentencias hasta que una condición sea
cumpla. Existen cuatro versiones de la sentencia
Do ... Loop :
A través del control Timer
es posible ejecutar una instrucción en un
intervalo de tiempo especifico, este Timer
se activa estableciendo su propiedad Interval
con el valor True y se ejecutará
hasta que por medio de la acción del usuario
lo detenga o se desactive el temporizador.
Cuando agrega un Timer este
no es visible en el formulario pero si en
la parte inferior de la pantalla (Bandeja
de Componentes), justo debajo del formulario.
En Visual Basic .NET el nombre del control
cambia su nombre por Timer_Tick
Por ejemplo si desea que se ejecute una
acción cada segundo, será necesario cambiar
el valor de la propiedad Interval
a 1000 milisegundos.
Para iniciar la ejecución del propio Timer
es necesario establecer el valor de la propiedad
Enabled a True.
Para detencer la ejecución del Timer
es necesario invocar el método Stop().
Dim i As Integer = 0
Private Sub btnInicio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnInicio.Click
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Timer1.Tick
lblTic.Text = CStr(i)
i += 1
End Sub
Private Sub btnFin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnFin.Click
Timer1.Stop()
End Sub
Visual Basic .NET provee la función Rnd()
la cual genera un valor aleatorio (random)
entre 0.0 y 1.0
Private Sub BtnMakeRnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnMakeRnd.Click
TxtOut.Text = Rnd()
End Sub
Note que cada vez que da clic al
botón se genera un número aleatorio (random)
y se muestra en la caja de texto, pero cierre
el programa y ejecutelo de nuevo, notará
que siempre dá la misma secuencia de números,
es por ello que a estos números se les llame
pseudo-aleatorios.
Si requiere obtener un número entero a
partir del número generado, en vez de la
fracción, entonces multipliquelo por 10
y después redondeelo utilizando la función
de redondeo de la clase Math
Private Sub BtnMakeRnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnMakeRnd.Click
TxtOut.Text = Rnd()
TxtOut2.Text = TxtOut.Text * 10
TxtOut3.Text = Math.Round(TxtOut.Text * 10)
End Sub
Otra manera de obtener la parte entera
es utilizar la función Int,
si desea que el número generado se encuentre
en un rango, solamente tiene que hacer una
multiplicación del número del límite superior:
Private Sub BtnMakeRnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnMakeRnd.Click
If Trim(TxtRange.Text) <> vbNullString Then
TxtOut4.Text = Int(Rnd() * (TxtRange.Text + 1))
Else
TxtOut.Text = Rnd()
TxtOut2.Text = TxtOut.Text * 10
TxtOut3.Text = Math.Round(TxtOut.Text * 10)
End If
End Sub
Salida, los números generados comprenden
el rango de 0 a límite superior.
La función Rnd crea siempre la misma secuencia
de números aleatorios, para crear un auténtico
número aleatorio utilice el método Randomize
la cual utiliza el reloj de la PC para crear
un punto de inicio aleatorio el cual será
utilizado después por la función Rnd.
Private Sub BtnRndmize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnRndmize.Click
VBMath.Randomize() ' Initialize random-number generator.
TxtOut.Text = Rnd()
End Sub
El método Randomize pertenece
a la Clase Microsoft.VisualBasic.VBMath.
Existen 3 tipos básicos de errores, los
fáciles de encontrar, solucionar y que no
causan problemas de mantenimiento (sintaxis),
los difíciles de encontrar, solucionar y
que causan probelmas potenciales de mantenimiento
(lógica):
Errores de
compilación o de Sintaxis, son
aquellos errores en los cuales la estructura
sintáctica definida por el lenguaje no
concuerda con la escrita en una sentencia,
es decir, ocurren cuando el código escrito
no sigue o viola las reglas del lenguaje,
para ello Visual Studio reconoce un error
de sintaxis subraya de azul el error y
pasando por encima de este el mouse aparece
un mensaje de error.
Errores en
tiempo de ejecución, son todos
aquellos errores no descubiertos por el
compilador y que provocan una mal función
del programa. El típico caso de una expresión
entre tipos de datos distintos, que en
Visual Basic 6 presenta el siguiente mensaje:
Run-time error '13': Type mismatch
Ahora en Visual Basic .NET un error
en tiempo de ejecución genera una excepción,
lo cual significa que esta situación
excepcional requiere de un manejo especial.
Errores lógicos,
son todos aquellos errores de tipo HumanWare,
es decir, fallas en la forma de pensar
de la persona y que trasciende al código,
este tipo de errores son los que consumen
más tiempo al tratar de hacer un programa
libre de errores y son además los errores
más dificiles de corregir, por ser el
resultado de una planificación y razonamiento
equivocados.
Los errores lógicos son errores en
el diseño o implementación de la solución
que provocan un comportamiento incorrecto.
Por ejemplo piense en que se requiere
obtener un promedio y alguien diseño
o implemento la siguiente formula:
nPromedio = Calificacion1 +
Calificacion2 / 2
Si la formula se escribe tal cual,
la precedencia de operadores nos indica
que sumará la Calificacion1 al resultado
de la división de la Calificacion2 /
2, lo cual no es el promedio, lo que
estariamos esperando es que primero
hiciera una sumatoria y después realizara
una división, el error aquí es que harían
falta unos paréntesis.
nPromedio = (Calificacion1 +
Calificacion2) / 2
La razón por la cual son los errores
más dificiles de corregir es porque
la mayoria de los escenarios funciona
sin problema, pero vasta con que un
escenario no se cumpla para hacer fallar
el programa.
En el siguiente ejemplo el compilador
no detecta que se trata de acceder a
un índice que no existe, por lo que
al intentar acceder se genera una excepción:
Dim a
a = "uno.dos.tres"
a = a.Split(".")
MsgBox(a(3)) ' el elemento 3 no existe, el arreglo inicia en el elemento 0 y termina en 2
Una de las potencialidades de Visual Basic
a diferencia de otros poderosos lenguajes
es que tiene integrada una herramienta de
depuración de errores, con la cual es posible
ejecutar el código:
Paso a paso por instrucciones
Paso a paso por procedimientos
Paso a paso para salir
Así como también es posible establecer
puntos de interrupción en el código.
Una novedad en Visual Basic .NET es que
los puntos de interrupción se mantienen
aún si se cierra Visual Basic .NET
A través del depurador de Visual Basic
.NET es posible abrir una ventana que nos
permita conocer el valor que tienen las
variables en cierto momento o para requerir
de una ayuda auxiliar.
La Ventana de Comandos nos permite
escribir por ejemplo un objeto y al escribir
la notación de punto (.) aparecen
las propiedades y métodos de este objeto,
por ejemplo escriba:
>file.
Para abrir o activar esta ventana de clic
en Debug/Windows/Inmediate, esta ventana
es capaz de soportar dos modos:
En Modo Inmediato (Inmediate)
En Modo Comando (Command)
Para cambiar de un modo a otro simplemente
escriba:
>cmd, si está en modo
Inmediato y se desea pasar a modo Comando
>immed, si está en modo
Comando y se desea pasar a modo Inmediato
La Ventana de Comandos - Inmediata,
nos permite evaluar o conocer el valor de
una variable por ejemplo si su programa
utiliza una variable llamada sNombre
y quiere conocer que valor tiene entonce
en la ventana de comandos en modo inmediato,
escriba:
El control ListBox hace visible
una lista de items, donde el usuario puede
seleccionar items en la lista utilizando
los clics del mouse.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) -
Handles MyBase.Load
LstBox.Items.Add("Red")
LstBox.Items.Add("Green")
LstBox.Items.Add("Blue")
End Sub
Private Sub LstBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles LstBox.SelectedIndexChanged
LstBoxOut.Items.Add(LstBox.SelectedItem)
End Sub
Private Sub LstBoxOut_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles LstBoxOut.SelectedIndexChanged
LstBoxOut.Items.Remove(LstBoxOut.SelectedItem)
End Sub
La función IsNumeric() regresa
un valor booleano el cual indica cuando
una expresión puede ser evaluada como un
número.
Esta función es básica de una aplicación
para validar la entrada correcta de datos
de tipo numérico.
Private Sub btnIsNumber_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnIsNumber.Click
If IsNumeric(TxtInput.Text) Then
MsgBox("Si es número")
Else
MsgBox("No es número")
End If
End Sub
Tendrá que hacer su función de validación
tan robusta como la requiera, por ejemplo
una validación previa en una entrada de
datos, seria pensar que el usuario intento
dar un número pero al escribir, sin desearlo
digito un espacio, para la perspectiva del
usuario novato, quizá vea que efectivamente
escribio un número y no le toma importancia
a los espacios en blanco, por lo tanto lo
primero que tendriamos que realizar es la
eliminación de los espacios en blanco, pero
no sólo los que probablemente esten al inicio,
sino los que también estén en la parte intermedia
y los que estén en la parte final, para
la eliminación de los espacios en blanco
al inicio y al final de la entrada del usuario
podriamos utilizar una sola función Trim,
pero, ¿Qué hay de los espacios en blanco
intermedios?.
Visual Basic .NET provee mecanismos para
la eliminación de espacios en blanco contenidos
en un string a través de las siguientes
funciones:
LTrim, regresa un string
que contiene una copia de un string especifico
al cual se eliminaron los espacios en
blanco contenidos al inicio del string.
RTrim, regresa un string
que contiene una copia de un string especifico
al cual se eliminaron los espacios en
blanco contenidos al final del string.
Trim, regresa un string
que contiene una copia de un string especifico
al cual se eliminaron los espacios en
blanco contenidos al inicio y al final
del string.
Un control CheckBox indica
cuando un valor particular esta encendido
o apagado, verdadero o falso, si o no, puede
ser utilizado también para seleccionar múltiples
items de una lista de opciones.
El evento KeyPress es utilizado
para capturar la tecla digitada por el usuario.
Este evento distingue entre letras mayúsculas
y minúsculas. El segundo argumento del este
evento expone dos propiedades: Handled y
KeyChar, la propiedad KeyChar es el caracter
correspondiente a la tecla digitada. La
propiedad Handled es un valor booleano,
si se establece este valor como True
entonces indicamos al formulario que no
procese el evento.
El siguiente ejemplo evita que se digite
un número:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal _
e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If IsNumeric(e.KeyChar) Then e.Handled = True
End Sub
El siguiente ejemplo válida que la entrada
unicamente acepte números (permite borrar
la entrada):
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal _
e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
REM If IsNumeric(e.KeyChar) Then e.Handled = True
If (Asc(e.KeyChar)) >= 48 And (Asc(e.KeyChar)) <= 57 Or (Asc(e.KeyChar)) = System.Windows.Forms.Keys.Back Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
El siguiente ejemplo válida que la entrada
unicamente acepte letras (permite borrar
la entrada):
Private Sub txtLetras_KeyPress(ByVal sender As Object, ByVal _
e As System.Windows.Forms.KeyPressEventArgs) Handles txtLetras.KeyPress
If (Asc(e.KeyChar)) >= 65 And (Asc(e.KeyChar)) <= 90 Or _
(Asc(e.KeyChar)) >= 97 And (Asc(e.KeyChar)) <= 122 Or _
(Asc(e.KeyChar)) = System.Windows.Forms.Keys.Back Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
El control Windows Media Player
reproduce video y archivos de sonido en
distintos formatos, incluyendo MPEG, AVI,
WAV y MIDI.
Este control no es parte de la caja de
herramientas estándar, para agregarlo seleccione
Add/Remove ToolBox Items/COM/Windows Media
Player
Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnOpen.Click
Dim OFD As New OpenFileDialog
OFD.ShowDialog()
wmp.openPlayer(OFD.FileName)
End Sub
Nuestro agradecimiento a informatique
por este manual