jueves, 25 de julio de 2013

Mostrando elementos en vistas de Árbol y Lista

En esta sección trataremos de los controles de vistas, tales como el Tree View y el ListView, pero primero veremos el control ImageList que es usado para guardar una lista de imágenes que posteriormente se usarán en las vistas de árbol y lista. Al final veremos como trabajar con ambos controles de vistas.

Control ImageList
El control ImageList o Lista de Imágenes se utiliza para almacenar o guardar un conjunto de imágenes que se usarán en otros controles como PictureBox, Tree View, ListView, ToolBar, StatusBar, etc .


  • Propiedades
Las propiedades del control ImageList son: 



NombreDescripción
Public propertyColorDepthGets the color depth of the image list.
Public propertyContainerGets the IContainer that contains the Component. (Inherited from Component.)
Public propertyHandleGets the handle of the image list object.
Public propertyHandleCreatedGets a value indicating whether the underlying Win32 handle has been created.
Public propertyImagesGets the ImageList.ImageCollection for this image list.
Public propertyImageSizeGets or sets the size of the images in the image list.
Public propertyImageStreamGets the ImageListStreamer associated with this image list.
Public propertySiteGets or sets the ISite of the Component. (Inherited from Component.)
Public propertyTagGets or sets an object that contains additional data about the ImageList.
Public propertyTransparentColorGets or sets the color to treat as transparent.

  • Métodos
Los pocos métodos del control ImageList se heredan de las clases Component, MarshallByRefObject y Object excepto algunas:  


NombreDescripción
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodDispose()Releases all resources used by the Component. (Inherited from Component.)
Public methodDraw(Graphics, Point, Int32)Draws the image indicated by the specified index on the specified Graphics at the given location.
Public methodDraw(Graphics, Int32, Int32, Int32)Draws the image indicated by the given index on the specified Graphics at the specified location.
Public methodDraw(Graphics, Int32, Int32, Int32, Int32, Int32)Draws the image indicated by the given index on the specified Graphics using the specified location and size.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodToStringInfrastructure. Returns a string that represents the current ImageList. (Overrides Component.ToString().)

  • Eventos 
Los eventos del control ImageList son:


NombreDescripción
Public eventDisposedOccurs when the component is disposed by a call to the Dispose method. (Inherited from Component.)
Public eventRecreateHandleOccurs when the Handle is recreated.



Ejemplo 20

Esta demostración tiene por objetivo enseñar a usar el control ImageList para guardar un conjunto de imágenes y también aprender como recuperar una imagen del control.

El ejemplo tiene un sólo formulario que presenta las 8 fases de la luna, cada una de las cuales se encuentra en un archivo que se guardan en el control ImageList y se recuperan cada segundo para mostrarse en un PictureBox. Para lo cual debemos realizar los siguientes pasos:

1.    Crear una Aplicación Windows en Visual Basic .NET llamada Ejemplo20. El IDE a utilizar es Microsoft Visual Studio 2012.





2.    En la ventana del explorador de soluciones seleccionar el archivo Form1 y en la ventana de propiedades cambiar la propiedad FileName a frmLuna.



3.    En el diseñador de formularios Windows, arrastrar 1 control PictureBox, 1 ImageList y 1 Timer, luego configurar las propiedades, tal como se muestra en el siguiente cuadro:



Objeto Propiedad Valor
Form1Name frrnLuna
FormBorderStyle FixedSingle
MaximizeBox False
MinimizeBox False
Size Width=300, Height=300
StartPosition CenterScreen
Text Fases de la Luna
PictureBox1Name picLuna
BorderStyle Fixed3D
Cursor Hand
Location X=97, Y=87
Size Width=100, Height=100
SizeMode Stretchlmage
ImageList1Name ilsLuna
Timer1Name tmrLuna
Enabled True
Interval 1000

4. Seleccionar el control ImageList que se encuentra en el diseñador de componentes y clic al botón de abrir diálogo en la propiedad Images.


5. Se mostrará la ventana del Editor de Colección de Imágenes, similar al que se aprecia en la siguiente figura:


6. Clic al botón "Agregar" para añadir una nueva imagen, ubicarse en la carpeta "Tutorial 20".  Es necesario descargar el ejemplo para tener las imagenes que utilizo.



7. Seleccionar los archivos "Moon01" hasta "Moon08" (uno por uno) y clic en "Aceptar" para salir del Editor.


8. En la ventana explorador de soluciones dar clic en el botón "View Code".


9. Definir una variable a nivel del formulario llamada intContador, debajo de Public Class frmLuna, tal como sigue:

10. Escribir el procedimiento de evento llamado RotarLuna, que permita mostrar en el PictureBox las imágenes guardadas en el ImageList, todo esto cuando ocurra el evento "Tick" del timer, tal como se muestra en el código:

Nota: Como son sólo 8 imágenes, el contador debe tomar valores entre 0 y 7 para lo cual cuando el valor es 8 se inicia nuevamente en 0 y evitar el desborde.

11. Para finalizar la aplicación, crear el procedimiento de evento llamado Salir, que ocurra en el evento "Click" del PictureBox, tal como sigue: 


12. Configurar frmLuna como el formulario de inicio, grabar y ejecutar con F5.




Espero haber ayudado en algo. Adjunto el ejemplo en el siguiente enlace:

Ejemplo20 - Descargar

Hasta la próxima oportunidad! 


No hay comentarios:

Publicar un comentario en la entrada