Clases y librerías..

Anuncio
Cursosindustriales.net
Página 1
CURSO DE VB.NET.
CLASES Y LIBRERIAS.
Como ya te puedes dar cuenta, la gran mayoría de VB.NET está basado en
clases. La gran mayoría de las clases proceden de .NET Framework.
Para cualquier acción, usamos una clase.
En este capítulo veremos el uso de las clases y, aprenderemos a crear
nuestras propias clases.
Cursosindustriales.net
Página 2
¿QUÉ ES UNA CLASE?
Una clase es un objeto que deriva de una clase básica llamada Object. Esta
clase básica tiene una serie de métodos y propiedades comunes a todas las
clases creadas con cualquier lenguaje usado en .NET Framework.
Y como Visual Basic.NET se basa en .NET Framework, este lenguaje de
programación se basa en la clase Object.
Para entender como de una clase se crean otras muchas, nos remontaremos a
la programación orientada a objetos (POO).
Programación orientada a objetos.
VB.NET a diferencia de lo que ocurría en las versiones anteriores de Visual
Basic, es un lenguaje orientado a objetos. Por ello se caracteriza por:



Ser encapsulado.
Tener la capacidad de heredar.
Polimorfismo.
La encapsulación significa que toda la información que una clase u objeto
deba de tratar se mantenga oculta al programador y al resto de usuarios. El
objeto en cuestión, solo facilitará las propiedades y métodos del mismo para
que el programador o usuario puedan modificar las características del objeto.
La herencia es la habilidad de crear nuevas clases basadas en otras clases.
La nueva clase heredará todos los métodos, propiedades y eventos de la
anterior clase de la que proviene. Además tiene la capacidad de añadir nuevos
eventos de la que se ha heredado al provenir esta otra de la clase
general Object.
Polimorfismo significa que puedan existir métodos y propiedades con el
mismo nombre en diferentes clases.
Cursosindustriales.net
Página 3
CREAR NUEVAS CLASES.
Para crear una nueva clase necesitamos usar la sentencia New en nuestro
código de VB.NET. Por ejemplo cuando creamos una nueva clase de
formulario asignamos a una variable la nueva clase de tal forma que quedaría
así.
Dim formulario as New Form
Esta sentencia crea una nueva clase de formulario, pero no la inicializa ni la
usa, solo la crea.
Ahora hay que definir las propiedades y métodos de esa clase, inicializarla y
ajustarla.
Eso es lo que hace el CLR cuando inicio un nuevo proyecto de VB.NET ya que
crea las clases que necesitas en un nuevo archivo
llamado NOMBREPROYECTO.Designer.vb del proyecto y las inicializa de
acuerdo las vayas escribiendo dentro del proyecto.
Así que cuando insertas, por ejemplo un botón en tu proyecto, en el archivo se
crean las instrucciones para crearlo, llamando a la clase, y después
configurándola mediante algunas propiedades y métodos.
Cursosindustriales.net
Página 4
Para que nos quede más grabado vamos a crear una nueva clase en este
proyecto para no estar mareando la pedíz.
La nueva clase la vamos a crear en el evento Load del formulario, por lo que
cuando se ejecute el formulario, se creará la nueva clase y se ejecutará (al
escribirla alguna acción).
Aunque esta forma de trabajar no se realiza, observa como hemos creado en la
carga del formulario una clase llamada mensaje y además hemos ligado una
acción a dicha clase mediante un nuevo proceso.
Esta es la forma en la que VB.NET carga las librerías y las utiliza en nuestros
proyectos.
Cursosindustriales.net
Página 5
LIBRERÍAS.
Las librerías (comúnmente llamadas así), son en realidad bibliotecas de clases
de .NET Framework de Visual Studio.
Estas bibliotecas de clases están formadas por Namespaces o espacios de
nombres.
Cada espacio de nombres contiene tipos que se pueden utilizar en el
programa: clases, estructuras, enumeraciones, delegados e interfaces.
Cuando se crea un proyecto de VB.NET, se sigue haciendo referencia a
las DLL más comunes de la clase base (ensamblados). No obstante, si
necesita usar un tipo incluido en una DLL a la que aún no se hace referencia,
deberá agregar la referencia de esa DLL.
Y eso es lo que vamos a hacer en la práctica propuesta para que sepas como
agregar una librería al proyecto de manera manual.
Cursosindustriales.net
Página 6
¿Cómo se crea una librería?
Crear una librería es tan sencillo como crear un nuevo proyecto de Windows
Form. Para ello, sobre el menú de Nuevo proyecto escoge sobre Biblioteca
de clases.
Para que nos sea sencillo después llamarla, la llamaré Foto. Tú puedes
llamarla como quieras.
Cuando pulsas sobre Aceptar, se te muestra directamente la ventana de
código, ya que las bibliotecas de clases, no suelen tener un formulario sobre el
que se asientan porque, en realidad no las hace falta.
En la nueva clase, puedes incluir todas las instrucciones precisas para usarlas
en otros proyectos, como por ejemplo nuevos formularios, acciones y eventos
específicos, gráficos y efectos al proyecto, etc.
Cursosindustriales.net
Página 7
Para no enrollarnos demasiado, vamos a diseñar la estructura básica y
simplemente crearemos una alerta con un MsgBox.
Como puedes ver no podrás escribir nada dentro de la clase principal, sino que
deberás de crear nuevos subprocesos para incluir las instrucciones específicas.
De hecho, al incluir nuevos subprocesos y cargar la clase en otro proyecto,
solamente debes hacer referencia al subproceso de la librería para que ejecute
la acción contenida en ella.
Por tanto de momento quedaría así.
Pulsa sobre menú Archivo y Guardar o pulsa Control + S para que se guarde
el archivo de librería.
NOTA: Todos los subprocesos que utilices desde la librería en procesos
externos deberán de tener la categoría de públicas, al igual que la clase
general de Class1, que por defecto es pública. Si utilizaras un proceso privado,
no podrías ejecutar la instrucción llamándola desde el proceso.
¿Dónde se guarda?
Cuando abres la carpeta del proyecto para coger la librería creada en sí, puede
que te lleves una sorpresa.
Cursosindustriales.net
Página 8
Esto es muy habitual en Visual Studio 2010.
Para solucionarlo debes de abrir el proyecto de la clase, y en el menú de
Generar, pulsar sobre Generar Foto (Foto es el nombre de la clase que yo le
he dado).
Ahora pulsa de nuevo sobre Guardar y cuando vuelvas a la carpeta, si sigue
en blanco pulsa sobre F5 para refrescar y ahora si te aparecerán los nuevos
archivos.
Utilizar esta librería en un nuevo proyecto.
Aunque el uso de librerías está ligado a acciones más complejas que las de un
simple mensaje de alerta, voy a utilizar la librería creada anteriormente para
que veas como importar librerías creadas con VB.NET, pero quiero que
comprendas que no es rentable en cuanto al rendimiento de una aplicación
usar librerías externas al proyecto si el propio proyecto puede hacer lo mismo
que la librería externa.
Abre un nuevo proyecto de Windows Form y llámalo, por
ejemplo Cargar_Foto.
Cursosindustriales.net
Página 9
Te aparecerá el formulario y los demás elementos ya conocidos de sobra.
En la ventana del Explorador de soluciones, pulsa sobre el archivo de My
Project para que se te cargue la configuración de la aplicación.
Selecciona la pestaña Referencias.
Desde esta ventana puedes ver las librerías de .NET Framework que utiliza tu
proyecto. Aunque en la imagen no se puede ver porque la he recortado debajo
hay un botón que pone Agregar.
Se te abre una ventana de Agregar referencia en la cual tienes 5 pestañas
diferenciadas.
Cursosindustriales.net
Página 10
Pulsa sobre la pestaña de Examinar y se te cargará el directorio en el cual
están guardados tus proyectos de VB.NET.
Selecciona el proyecto de la librería creada en el anterior proyecto y pulsa
sobre Aceptar.
Ahora en la ventana de Agregar referencia, se te ha cargado la librería creada
anteriormente.
Y una vez cargada nuestra librería en el proyecto solo tenemos que importarla
desde el formulario de inicio.
Cursosindustriales.net
Página 11
Para "cargar" la librería creada anteriormente, debemos de llamar al
subproceso en cuestión para que realice la acción programada. Obviamente
dependiendo en la parte del proyecto nuevo en que llamemos a la librería,
evento y propiedad, ésta se ejecutará en un lugar u otro.
Yo llamaré a la librería desde el evento Load del formulario, para que se
ejecute la librería nada más cargue el proyecto, tal y como puedes ver.
Como la librería es una clase, debes de hacer referencia a esa clase y crear en
tu proyecto una nueva clase, que se llamará igual que la clase referenciada.
Así en la sentencia:
Dim mensaje As New Foto.Class1
Estás creando en el proyecto la clase que ya está creada en la librería,
asignándola un nombre.
En la siguiente línea, aplicas mediante el operador punto (.), el proceso en el
cual has escrito de la librería.
Así que cuando ejecutes, se te mostrará la siguiente ventana:
Cursosindustriales.net
Página 12
ACCESO A UNA CLASE DE UN NAMESPACE.
Cuando accedemos a las propiedades o métodos de una clase, hay que
especificar el nombre de la clase seguida de un punto y después el nombre del
miembro que queremos acceder.
Por ejemplo, para usar el método WriteLine en una consola de comandos, de la
clase Console hay que indicarlo de la forma
Console.WriteLine.
Para acceder a un miembro de un Namespace hay que hacerlo de la misma
forma; especificando el nombre del Namespace y a continuación la clase y el
procedimiento al que queremos acceder. Pero si esa clase está dentro del
mismo Namespace en el que nos encontramos, no es necesario indicarlo.
Se pueden definir espacios de nombres dentro de un espacio de nombre de la
misma forma que he definido anteriormente, es decir mediante un punto y a
continuación el nombre de la clase o del otro espacio de nombre.
Cursosindustriales.net
Página 13
Que es lo mismo que hemos realizado al utilizar la clase creada.
Al igual que podemos anidar espacios de nombres, también podemos hacer lo
mismo con las clases, es decir, declarar una dentro de la otra.
Para poder hacerlo hay que usar el nombre de la clase que la contiene seguida
de un punto (.), delante de la clase contenida.
Cursosindustriales.net
Página 14
Controles VB.NET.
TREEVIEW Y LISTVIEW.
Estos controles son una mejora significativa del control Listbox, ya que podrán
crear y presentar lista jerárquica y elementos estructurados que con el anterior
control no era posible hacerse. Eso sí, requiere de mayor atención porque es
más complejo.
Los controles TreeView y ListView son controles que estudiaremos juntos ya
que la función de uno la ligaremos a la otra.
Estos controles se usan principalmente para el diseño de interfaces Windows.
Es muy habitual utilizar otro objeto que no he mencionado: el
control ImageList. Este control almacenará las imágenes que queremos usar
junto a los otros dos elementos que vamos a estudiar.
Estructura de árbol.
El control TreeView (Vista de árbol) implementa una estructura conocida como
árbol de datos. Esta estructura es conocida hoy en día en los sistemas
Windows para mostrar carpetas y archivos en el Explorador de Windows.
Una estructura en árbol se compone de subnodos, los cuales están ligados a
otros nodos superiores, y que pertenecen a un nodo principal, como muestra la
gráfica.
Ten en cuenta que los elementos del TreeView son cadenas de caracteres.
En la gráfica puedes ver que el nodo raíz se divide en tres nodos más, que son
los elementos del Sistema Solar (en el ejemplo). Y después el
Cursosindustriales.net
Página 15
elemento Planetas, se subdivide en otros dos nodos formando el segundo nodo
o subnodo. Y por último el elemento La Tierra, se divide en más subnodos.
Cuando utilizamos el control TreeView en nuestra aplicación, se nos muestra
de la siguiente manera:
Observa como el control TreeView muestra los elementos
del nodo y sus subnodos de manera que los elementos que
tengan asignados subnodos, tendrán representados un
símbolo + o - de acuerdo estén retraído o expandidos.
Este control es un objeto heredado del explorador de
Windows.
Manejo del TreeView en modo diseño.
Crear nodos y subnodos en VB.NET es una tarea muy sencilla hoy en día.
En el cuadro de herramientas de VB.NET escoge la herramienta TreeView
y colócala en el formulario.
,
El control es muy parecido al control Listbox cuando lo colocas en el formulario.
Pero en la Ventana de propiedades, las propiedades han cambiado.
Localiza la propiedad NODES y pulsa sobre los tres puntos (...) para abrir el
editor de nodos.
Se te abrirá una ventana similar a esta.
Cursosindustriales.net
Página 16
Simplemente tienes que colocarlo como te he dicho: El primer elemento es el
elemento raíz. Después irán los subnodos y cada subnodo llevará su subnodo
independiente. Pulsa sobre Agregar raíz para que aparezca un nodo raíz.
Al agregar un nuevo nodo a subnodo, se te cargarán las propiedades de dicho
nodo. También al seleccionarlo en el control en modo de diseño, se
seleccionará las propiedades de dicho nodo / subnodo.
Como puedes ver en sus propiedades, puedes cambiar el tipo de fuente, el
color, el nombre al nodo, el nombre al control nodo raíz, puedes seleccionar
una imagen para que aparezca junto al control, puedes hacer que por defecto
esté cerrado o abierto, etc., etc.
Pulsa sobre Agregar secundario y se te añadirá un subnodo dentro del nodo
raíz.
Cursosindustriales.net
Página 17
Si pulsas sobre Agregar raíz, se creará otro nodo en la misma raíz que el
actual nodo seleccionado. Al pulsar sobre Agregar secundario, crearíamos
otro subnodo de éste anterior y así sucesivamente hasta dar con nuestra
configuración deseada.
Añadir nodos en tiempo de ejecución.
Anteriormente hemos visto como crear nodos en diseño para tenerlos ya en la
aplicación. Pero a menudo, queremos que se carguen carpetas o directorios
específicos dentro del control, o crear desde la aplicación nodos y subnodos
para usarlos más adelante.
Crearlos desde el tiempo de ejecución implica programar las estructuras para
que se pueda realizar dicha acción y podamos establecer los nodos principales
y secundarios mediante instrucciones en el código fuente de la aplicación.
Todos los nodos pertenecen a la colección Nodes. La sintaxis general es:
TreeView1.Nodes
La colección Nodes, devuelve una colección del
objeto TreeNode llamada TreeNodeCollection, y que cuenta con los métodos
Cursosindustriales.net
Página 18
y propiedades para actuar con los nodos individuales.
La propiedad Nodes del control TreeView1, es la colección de todos los nodos
raíz.
Así pues para acceder al primer nodo, hay que hacer referencia al índex de
dicho elemento, de tal forma que para acceder al primer elemento raíz:
TreeView1.nodes(0)
Que sería el nodo Sistema Solar.
Si ponemos un TextBox en nuestro formulario, podríamos hacer que se
mostraran los nodos marcados en el control TreeView de la manera siguiente.
En este ejemplo he utilizado la instrucción SelectedNode.Text para indicar que
todos los nodos seleccionados se representarán también en el TextBox.
AÑADIR NUEVOS NODOS.
Para ello, el método Add añade un nuevo nodo a la colección Nodes.
Toma como parámetro un objeto TreeNode.
La sintaxis de este método es la siguiente:
TreeView1.Nodes.Add(nombre)
Este método permite escoger el lugar del control TreeView en donde se
incrustará el nuevo nodo mediante un índex específico. Así por ejemplo para
insertar un nodo llamado Atmósfera dentro del nodo La Tierra:
Cursosindustriales.net
Página 19
Eso sí, tienes que tener claro cuál es el índex de cada nodo.
Para conocer el índex de cada nodo, sustituye la instrucción del código
del TreeView_AfterSelect por ésta otra.
TextBox1.Text = TreeView1.SelectedNode.Index
Esto hará que se muestre el número de elemento que representa cada nodo
pulsado.
Volviendo al modo de creación de los nodos, puede ocurrir en una lista grande
que las instrucciones a escribir sean considerables. VB.NET también ha
pensado en eso y posibilita la forma de modo que puedas añadir elementos al
nodo padre creando una variable TreeNode de la forma siguiente:
Y dentro de los nodos puedes seguir creando más nodos de la misma forma
asignándolos a una variable TreeNode. Como ejemplo vamos a crear el
subnodo del nodo Aire.
Cursosindustriales.net
Página 20
Como puedes ver todo es jugar con los índex de los nodos para crear nuevos
nodos o subnodos.
También puedes también conocer el número de subnodos existentes mediante
la propiedad Count usada de la forma siguiente:
MsgBox(aire.Nodes.Count())
Y en este caso te muestra un cuadro de aviso con el número 3
(Oxígeno, Nitrógeno y Argón)
Eliminar nodos.
Para eliminar nodos, se utiliza el método Clear. Este método elimina todos los
nodos hijos del nodo actual. Por lo que si estamos en el nodo de Aire, los
eliminaremos todos los subnodos.
aire.Nodes.Clear()
Recuerda que la variable aire en el ejemplo sustituye
a TreeView1.Node(0).Nodes(1).Nodes(0).Node(4).
Eliminará pues los subnodos de Oxígeno, Nitrógeno y Argón.
También se puede eliminar un nodo o subnodo llamándolo desde el valor de su
índice. Así pues para eliminar el nodo La Tierra, debemos de llamar poner el
índice pertinente de la misma:
Cursosindustriales.net
Página 21
O lo que es lo mismo:
TreeView1.Nodes(0).Nodes(1).Nodes(0).Remove()
Control ListView.
El control ListView implementa una estructura más simple que la del TreeView.
Los elementos de la lista no están organizados como una jerarquía, sino que se
encuentran organizados en el mismo nivel uno tras otro.
Inserta en tu formulario un control ListView
.
Como puedes ver el control ListView es muy similar al control Listbox, pero lo
que lo hace diferente de éste es que puede mostrar sus elementos de manera
diferente. Algunas propiedades de estos elementos son las siguientes:
VIEW Y ARRANGE.
Existen dos formas de mostrar los datos en el ListView. Por defecto la
propiedad View, establece la apariencia general de los elementos, y la
propiedad Arrange, fija como se alinean los elementos en la superficie de
control.
La propiedad View puede tomar los valores siguientes:
1. LargeIcon. Cada elemento se representa por un icono y un título
debajo.
2. SmallIcon. Se representa por un pequeño icono y un título a la derecha.
3. List. Se representa únicamente por un título.
4. Details. Se representa por una columna con sus subelementos.
5. Tile. Parecido al SmallIcon, pero para XP y Server 20003.
Por defecto la propiedad View toma el valor de LargeIcon.
En cuanto a la propiedad Arrange, puede tomar los valores:
1. Default. Cuando se mueve un elemento en el control permanece donde
se suelte.
2. Left. Los elementos se alinean al margen izquierdo del control.
3. SnapToGrid. Se alinean según una cuadricula invisible.
4. Top. Se alinean en la parte superior del control.
Cursosindustriales.net
Página 22
HEADERSTYLE.
Esta propiedad determina el estilo de las cabeceras en la vista de detalle. Si la
propiedad anterior View está en Details, no tiene sentido usar esta
propiedad HeaderStyle.
Puede tomar varias configuraciones:



Clickable. Cabecera de columna que responde a los clics.
NonClickable. No responde a los clics. Este valor es por defecto.
None. Sin cabecera de columna visible.
ALLOWCOLUMNREORDER.
Esta propiedad devuelve un bolean TRUE / FALSE que determina si el usuario
puede reordenar las columnas en modo de ejecución.
Esta propiedad solo tiene sentido en la vista de detalle.
ACTIVATION.
Determina como se activan los elementos con el ratón. Puede coger varios
valores por defecto.



OneClick. Los elementos se activan con un solo clic.
Standard. Los elementos se activan con doble clic.
TwoClick. Los elementos se activan con doble clic y se cambia el texto.
FULLROWSELECT.
Esta propiedad también es TRUE / FALSE e indica si el usuario puede o no
seleccionar una fila completa.
Solo tiene sentido en la vista de detalle.
GRIDLINES.
Indica también si dibuja líneas entre las celdas de las columnas. También es
bolean.
Cursosindustriales.net
Página 23
GROUP.
Los elementos ListView pueden agruparse en distintas categorías.
Para utilizar esta característica, primero debes de definir los grupos mediante la
propiedad Group del mismo.
LABELEDIT.
Permite o no al usuario editar el título o texto de los elementos.
MULTISELECT.
Es un valor bolean. Indica si el usuario podrá seleccionar múltiples elementos o
no.
SCROLLABLE.
Determina si existirán barras de desplazamiento o no.
Cursosindustriales.net
Página 24
SORTING.
Esta propiedad determina como se ordenarán los elementos. Puede adquirir los
valores de None, Ascending, para sentido ascendente y Descending, para
sentido descendente. También puedes utilizar el método Sort para ordenar los
elementos de acuerdo a su título.
La colección Columns.
Para mostrar los elementos en la vista de detalle en un control ListView,
primero deberás de configurar las columnas. La primera columna pertenece al
propio elemento y las siguientes a sus subelementos.
Se debe de elegir al menos una columna para muestren elementos enla vista
de detalle.
Los elementos de la colección Columns son del tipo ColumnHeader.
La forma más sencilla para configurar una columna es mientras se trabaja en
diseño, mediante la herramienta del Editor de la colección ColumnHeader que
puedes encontrar en las propiedades del control ListView en la
propiedad Columns.
En esta ventana puedes agregar o modificar las columnas que necesites.
También puedes manipular las columnas desde el código, manipulando la
colección Columns.
Para ello debes de crear un objeto ColumnHeader para cada columna desde el
código.
Cursosindustriales.net
Página 25
Añadir o eliminar columnas en tiempo de ejecución.
Para añadir una nueva columna al control, deberás de usar el método Add de
la colección Columns, tal como se indica a continuación:
ListView1.Columns.Add(Header, Width, TextAlign)
Como parámetros, Header es la cabecera de la columna, Width es el ancho de
la misma, y TextAlign es el alineado del texto.
El objeto ColumnHeader cuenta con una propiedad Name que cambiará el
nombre a la columna, por defecto deColumnHeader1 al que tú quieras.
Para eliminar columnas, utiliza el método Remove de la forma:
ListView1.Columns(0).Remove
Y elimina la columna actual. Recuerda que las columnas y los Items, se
organizan mediante números desde el cero y que cuando haces referencia en
el index a uno de ello, se elimina dicho elemento.
Con el método Clear, eliminas todas las columnas.
El método Count, devuelve el número de columnas en dicho control.
Elementos y subelementos del ListView.
Has visto que un control ListView también puede coger elementos tanto en la
fase de diseño como la de ejecución.
En la fase de diseño, clic sobre la propiedad de Items en la ventana de
propiedades y aparecerá una nueva ventana del Editor de colección.
Desde la ventana podrás introducir elementos y subelementos como aparece
en la imagen.
Cursosindustriales.net
Página 26
Al pulsar el botón de Agregar, añades un nuevo elemento.
Al seleccionar ese nuevo elemento, las propiedades del mismo cambian a otras
propiedades en las cuales, la propiedad SubItem, te abre una nueva ventana
del Editor de la colección ListViewSubItem para que añadas nuevos
SubItems.
Puedes ajustar el color de los SubItems, la fuente y el fondo del control en las
propiedades del objeto ListViewItem.
Cursosindustriales.net
Página 27
Descargar