Por Scott Swigart
Microsoft Corporation
Este artículo se aplica a:
Microsoft Visual Basic 2005
Microsoft Visual Basic 6.0
Desarrollo
Resumen: conozca los interesantes cambios incluidos en la versión 2.0 de la interfaz de Microsoft Visual Basic .NET que facilitan y hacen más práctica la migración para los desarrolladores que utilizan Visual Basic 6.0. (18 páginas impresas.) (Este artículo contiene vínculos a páginas en inglés.)
La máquina publicitaria de Microsoft ya se puso en marcha para destacar las virtudes de Visual Studio 2005. La pregunta es, si trabaja principalmente con Visual Basic 6, le gusta y no encontró en .NET nada que necesite, ¿por qué le tendría que importar el lanzamiento de Visual Studio 2005? Si tiene en cuenta que MSDN tuvo la amabilidad de publicar este artículo, se debe imaginar mi conclusión. Pero siga leyendo porque hay algunas cosas muy interesantes para los desarrolladores que utilizan Visual Basic 6.
Antes que nada, reconozcamos que, para muchos, Visual Basic .NET dejaba algo que desear. Si hace un esfuerzo recordará que, cuando Microsoft anunció al mundo el lanzamiento de .NET, sólo vociferaba dos cosas: Servicio Web y C#. Bueno, muchos de los desarrolladores que utilizan Visual Basic 6 no precisábamos (y tampoco queríamos) Servicios Web. Tampoco nos interesaba demasiado aprender este nuevo lenguaje llamado C# porque ya teníamos uno bastante bueno. Además de estas dos cosas, la otra atracción era ASP.NET. Si bien muchos de nosotros hacemos algo de desarrollo Web, el interés primario de la mayoría son las aplicaciones de escritorio. Por lo tanto, si .NET se basaba en Servicios Web, C# y ASP.NET, Microsoft tenía que comprender que muchos no lo precisáramos.
Para concluir, digamos que Visual Basic .NET no era totalmente compatible con Visual Basic 6. Esto no incentivaba a migrar una aplicación de Visual Basic 6 a .NET aunque uno estuviera interesado.
Al igual que la mayoría de los desarrolladores que utilizan Visual Basic, existían algunas cosas que quería para mi lenguaje. Quería que eliminaran las barreras. Estaba cansado de "no se puede hacer X en Visual Basic 6". Quería que mi lenguaje pudiera hacer todo. También quería que el lenguaje admitiera, al menos, algunos conceptos simples orientados hacia los objetos, como la herencia. Tengan cuidado con lo que desean...
Visual Basic .NET otorga acceso completo a toda la interfaz de .NET. No hay barreras. En .NET se pueden utilizar todas las funciones de Visual Basic .NET. También está completamente orientado hacia los objetos, quizás demasiado. En lugar de utilizar algo sencillo como "Form1.Show", ahora hay que tratar a todo como la clase que es en realidad. Por ende, para mostrar un formulario hay que hacer lo siguiente:
Listado 1. Visualización de un formulario con Visual Basic .NET
Dim f as New Form1() f.Show()
Además, parece que algunas de mis funciones preferidas eran muy difíciles de incluir en la arquitectura de .NET v1.0. Por ejemplo, Editar y continuar quedó afuera.
Hay que reconocer que Microsoft sabe escuchar. Desde el lanzamiento de Visual Basic .NET, Microsoft ha estado trabajando mucho para agregar varias de las funciones más populares de Visual Basic 6, sin afectar el lenguaje. Como resultado, en Visual Studio 20005, "Form1.Show" vuelve a funcionar.
Figura 1. Visualización de formularios similar a la de Visual Basic 6
Editar y continuar también regresó. De hecho, es mejor que nunca. En Visual Basic 6, esa función era casi demasiado buena. Se podía presionar F5 por mucho tiempo al trabajar en la aplicación pero al intentar crear el ejecutable uno se enteraba de que no se compilaba porque había un error en alguna parte. En Visual Basic .NET, cada vez que se presiona F5, el programa se asegura de que se compile todo el código y también permite modificarlo y continuar con la ejecución.
Figura 2. Editar y Continuar
Mire el video (Editar y Continuar)
Visual Studio 2005 no sólo incluye las funciones ausentes de Visual Basic 6. En muchos casos, las mejora. En primer lugar, piense en el diseño de formularios en Visual Basic 6. Siempre hubo cosas que me molestaron de esa tarea. Si uno hace doble clic en un control de la barra de herramientas, lo ubica en el formulario con un tamaño predeterminado, pero no el que uno desea. En segundo lugar, la alineación de los controles se hace según los puntos de la cuadrícula. Esto hace bastante simple alinear los controles superiores o los de la izquierda, pero no es tan fácil alinear los inferiores o los de la derecha. Además, es casi imposible lograr que el texto dentro de los controles aparezca en el mismo renglón.
Figura 3. Diseño de un formulario en Visual Basic 6
Mire el video (Alinear controles)
Lo primero que pensé al ver por primera vez el diseñador de formularios de Visual Studio 2005 fue: "¿Dónde está la cuadrícula? ¿Cómo se puede diseñar un formulario sin una cuadrícula?". Cuando vea el diseñador de formularios de Visual Studio 2005 le parecerá fabuloso. Me di cuenta de que lo que uno desea es alinear los controles en relación con otros controles o los bordes de los formularios y poder ubicar con facilidad a todos a la misma distancia. Visual Studio 2005 lo permite mediante "líneas de ajuste". También permite regresar los controles al tamaño correcto predeterminado y muchos otros detalles que hacen muy productiva la creación de formularios.
Figura 4. Líneas de ajuste para alinear los controles
Otra causa habitual de quejas acerca de Visual Basic 6 eran algunos de los controles incluidos. Por ejemplo, las barras de herramientas y los menús eran muy limitados en comparación con los de las aplicaciones de Microsoft.
Figura 5. La barra de herramientas de Office
Tomemos la barra de herramientas de Office como ejemplo. No sólo tiene botones, sino que también admite cuadros de texto, menús desplegables y controles de separadores. Además, se puede arrastrar las barras y colocarlas donde uno desea. La barra de menús también admite cuadros de texto y otros controles. La queja popular de los usuarios de Visual Basic 6 era ¿por qué no pueden incluir los mismos controles para nosotros?
La respuesta de Visual Studio 2005: "hecho".
Figura 6. Apariencia de Visual Studio 2005 similar a la de Office
Mire el video (Apariencia similar a la de Office)
Es fácil cometer errores menores al crear código. Visual Studio 2005 reconoce estos errores habituales, genera un mensaje de error específico y le pregunta si desea que lo corrija de forma automática.
Figura 7. Corrección automática en Visual Studio 2005
Si no se puede corregir de forma automática al escribirlo ni se puede detectar al compilar, la mejor alternativa es recibir ayuda cuando aparezca en el momento de la ejecución. En Visual Basic 6, si se olvida de utilizar "New" en un objeto recibe el error "Variable de objeto o de bloque With no establecida". En Visual Studio 2005, el mensaje de error es más específico ya que informa "se olvidó de utilizar New".
Figura 8. El Ayudante de excepciones
Mire el video (Administrador de excepciones)
Lo último que quiero en un entorno de desarrollo es un montón de asistentes. Si se tratara de un automóvil, no querría un piloto automático porque, en primer lugar, probablemente me haga estrellarme y, en segundo lugar, no confiaría en que eligiera el camino correcto. No obstante, me encanta la dirección asistida, los servofrenos, el control de velocidad, etc. Me gustan porque simplifican la tarea. Mantengo el control absoluto de cada movimiento del automóvil pero no preciso hacer tanto esfuerzo para conducirlo.
En los entornos de desarrollo busco las mismas características. Quiero tener el control total de qué código se escribe pero también deseo que el IDE me simplifique el trabajo.
Visual Basic 6 comenzó a desandar ese camino con la herramienta Agregar procedimiento. Yo la uso bastante para las propiedades porque escribe sola gran parte del texto modelo.
Figura 9. Herramienta Agregar procedimiento
Visual Studio 2005 incluye esta herramienta y, además, muy mejorada. Si escribe "Public Property UserName as String", el IDE generará todo el texto modelo:
Listado 2. Generación automática de un procedimiento de propiedades en Visual Studio
Public Property UserName as String
Get
End Get
Set
End Set
End Property
Y con la inclusión del complemento gratuito Refactor!, parece que el IDE leyera la mente.
Figura 10. Uso de Refactor! para crear un procedimiento de propiedades
Mire el video (Demo de 30 segundos de Refractor)
Mire el video (Demo de tres minutos de Refractor)
El complemento Refactor! automatiza varias tareas habituales. Por ejemplo, si desea convertir una sección de código en una función separada, Refactor! le permitirá extraerla y hasta sabrá qué argumentos deben pasarse. Se puede convertir con facilidad cadenas o números de código fijo en constantes. También se puede resaltar alguna expresión y convertirla en una variable local (yo lo hago todo el tiempo).
Microsoft está haciendo otra movida inteligente con Visual Studio 2005 al lanzar versiones gratuitas para desarrollo Web y Visual Basic .NET (además de C# y C++). También está lanzando un reemplazo de MSDE más sencillo de implementar con las aplicaciones. El liviano y gratuito entorno de desarrollo de Visual Basic se llama Visual Basic Express. Esto brinda una buena oportunidad para experimentar con .NET sin realizar una inversión importante.

Figura 11. Visual Basic Express
Visual Basic Express incluye las funciones comunes necesarias para crear aplicaciones independientes o bibliotecas de clases. Las herramientas, el diseñador, las clases base, el editor de código y otros componentes son similares a los del producto Visual Studio completo.
Antes mencioné el regreso de cosas como "Form1.Show". En la jerga de Visual Basic, se trata de una "instancia predeterminada", es decir que, de forma predeterminada, se crea un Form1 con el que se puede comenzar a trabajar y no es necesario crear uno nuevo. Sin embargo, también existen muchas otras instancias predeterminadas disponibles con la palabra clave "My".
Tabla 1 Comandos del espacio de nombres My
| Comando | Descripción |
My.Computer.Network.IsConnected | Determina si el equipo posee una conexión de red o está trabajando sin conexión. |
My.Computer.Info.TotalPhysicalMemory | La cantidad de memoria instalada. |
My.Computer.Screen.Bounds | Resolución de pantalla. |
My.Computer.Audio.Play | Reproduzca un archivo de audio |
My.Computer.FileSystem.Drives | Lista de unidades de disco lógicas |
My.Computer.FileSystem.FindInFiles | Busca archivos en una carpeta y genera una lista de los que contienen una cadena determinada. |
My.Computer.Network.Ping | Genera true o false según si una dirección de red responde a un Ping. |
My.Computer.Network.DownloadFile | Descargue un archivo en el disco. |
My.Application.SplashScreen | Obtiene o determina la pantalla de inicio de la aplicación. |
My.Application.Info.* | Nombre de la compañía, nombre del producto, derechos de autor y otra información de la aplicación especificada por el desarrollador. |
My.Settings.* | Obtiene, determina, guarda y vuelve a cargar configuraciones de aplicaciones personalizadas. |
Figura 12. Uso del espacio de nombres
Mire el video (Espacio de nombres My)
Aunque no planee instalar nunca Visual Studio 2005, hay muchísimas cosas en la versión 2.0 de la interfaz de .NET que puede utilizar desde las aplicaciones de Visual Basic 6. Visual Basic Fusion se creó para poder utilizar todas las funciones de .NET desde Visual Basic 6, sin rescribir el código de Visual Basic 6. Esto corresponde tanto a la versión 2.0 de la interfaz como a la 1.1. Se puede crear una clase de contenedor simple alrededor de la función de .NET que la expone como un objeto COM. A partir de ahí, se puede utilizar la función desde Visual Basic 6, VBA, ASP o VBScript.
Listado 3. Uso de Visual Basic .NET para exponer la función de .NET como un objeto COM
<ComClass(MyWrapper.ClassId, MyWrapper.InterfaceId, MyWrapper.EventsId)> _
Public Class MyWrapper
#Region "COM GUIDs"
' These GUIDs provide the COM identity for this class
' and its COM interfaces. If you change them, existing
' clients will no longer be able to access the class.
Public Const ClassId As String = "36d8911d-0395-4961-9893-4325fcb5e522"
Public Const InterfaceId As String = "ae2c5486-fbc4-4043-83f2-1687161858c9"
Public Const EventsId As String = "0e5e9245-e331-41e8-b84c-6ad3dc69d9bd"
#End Region
' A creatable COM class must have a Public Sub New()
' with no parameters, otherwise, the class will not be
' registered in the COM registry and cannot be created
' via CreateObject.
Public Sub New()
MyBase.New()
End Sub
Public Function NetworkIsAvailable() As Boolean
Return My.Computer.Network.IsAvailable()
End Function
End Class
Esto crea un objeto COM que puede utilizarse con facilidad desde Visual Basic 6 u otros entornos basados en COM.
Listado 4. Determinación de la disponibilidad de la red desde Visual Basic 6
Dim c as NetFrameworkWrapper.MyWrapper Set c = new NetFrameworkWrapper.MyWrapper If c.NetworkIsAvailable Then ... End If
Considero que la versión 2.0 de la interfaz de .NET es un gran obsequio para los desarrolladores que utilizan Visual Basic 6. Se puede redistribuir la interfaz de forma totalmente gratuita y Visual Basic Express ofrece un entorno de desarrollo gratuito que puede utilizarse para crear bibliotecas o aplicaciones completas. Esto quiere decir que se puede extender las aplicaciones de Visual Basic 6 con la interfaz de .NET sin invertir un centavo. Además, la versión 2.0 ofrece algunas funciones excelentes que no estaban incluidas en Visual Basic 6 y se remodeló Visual Basic .NET para que fuera mucho más similar a Visual Basic 6 pero sin afectar el lenguaje. El entorno de desarrollo permite diseñar formularios con gran rapidez y el IDE ahorra mucho tiempo al insertar el código de texto modelo, además de permitir modificar rápidamente el código existente. También se ofrece gran ayuda para corregir los errores de código y de tiempo de ejecución mediante la corrección automática y el Ayudante de excepciones. En conclusión, creo que se trata de una gran adquisición para los desarrolladores que utilizan Visual Basic 6. Si desea seguir utilizando Visual Basic 6, ahora posee miles de nuevas clases en la versión 2.0 de la interfaz que puede utilizar desde las aplicaciones existentes de Visual Basic 6. En caso de que le agrade el entorno de desarrollo, puede utilizarlo de forma gratuita con Visual Basic Express.
Disfrútelo.
| • | |
| • | |
| • | |
| • | What's New in Windows Forms and Controls for Visual Studio 2005 |
| • |
Scott Swigart (http://www.swigartconsulting.com/) es consultor de compañías, a las que les enseña a aprovechar la tecnología actual y prepararse para la del futuro. También contribuye en el sitio VB Fusion, donde ofrece información y tácticas para los desarrolladores que utilizan Visual Basic y desean crear la mayor cantidad de funciones con el mínimo esfuerzo. Scott también es MVP de Microsoft y coautor de varios libros y artículos. Para ponerse en contacto con él, escríbale a scott@swigartconsulting.com.