lunes, 1 de septiembre de 2008

Controles ActiveX

Crear una interface de usuario para un control ActiveX es similar a crear una forma estándar Visual Basic, se colocan los controles necesarios y se provee el código que define su comportamiento.

Controles

Los Controles son objetos reutilizables que incluyen elementos visuales y código, con Visual Basic es posible crear formas y cajas de diálogo. Los Controles deben ser colocados en algún tipo de contenedor como una forma o una aplicación.

Clases de Controles

Un control creado en Visual Basic es conocido como Control Class, el cual actua como una plantilla para el control. El Control Class es compilado dentro de un archivo .ocx, para utilizar el control en una aplicación, se coloca el control en la forma, la cual crea una instancia en tiempo de diseño del control, cuando el usuario ejecuta la aplicación que contiene el control, el usuario obtiene una instancia en tiempo de ejecución del control.

Archivos de Proyecto

El código fuente y los valores de las propiedades para un control class son almacenados en un archivo de texto con extensión .ctl. Un archivo .ctl es equivalente a un archivo Visual Basic .frm que es utilizado para almacenar los elementos gráficos en las formas.

Un Visual Basic ActiveX control project puede contener uno o más archivos .ctl cada uno de los cuales define un control class separado, cuando se compila un control project es creado un archivo .ocx que contiene todos los controles del proyecto.

Un control ActiveX incluye un objeto UserControl y constituent controls

Pasos para crear un ActiveX Control

  1. Crear un ActiveX Control project
  2. Crear la interfaz de usuario para el control
  3. Crear las propiedades y métodos para el control
  4. Crear los procedimientos de eventos que constituyen el control
  5. Exponer eventos del control
  6. Crear páginas de propiedades para el control
  7. Probar y buscar errores en el control

El objeto UserControl

El objeto UserControl es el fundamento para contruir controles. Cada ActiveX control que es creado con Visual Basic contiene un objeto UserControl

El objeto UserControl contiene modulos de código y visual designers, cuando se abre un UserControl en modo diseño el objeto es desplegado en una ventana visual designer, es posible utilizar el visual designer para colocar constituent controls en el objeto UserControl tal y como se haria en una forma Visual Basic.

Constituent Controls

Un Constituent Controls es una isntancia de un control que se coloca en un objeto UserControl, cuando se coloca un ActiveX en una forma, una instancia del objeto UserControl es creada, junto con las instancias de cualquier Constituent Controls colocado en el objeto UserControl.

Eventos UserControl

Un control ActiveX es un cliente que se ejecuta en una forma o en algún otro tipo de contenedor, por lo tanto sus eventos se comportan un tanto diferentes que los eventos de control de un proyecto .exe estándar.

Al crear un control el objeto UserControl actua como un anteproyecto para colocar el control en una forma o en otro contenedor, se utiliza este anteproyecto para crear una instancia del control, cuando el control es creado una serie de eventos de control ocurren.

Evento AmbientChanged

El evento AmbientChanged ocurre cuando una propiedad de ambiente cambia. Para habilitar al control para responder a cualquier cambio a las propiedades de ambiente del contenedor en tiempo de diseño, se coloca el código en el evento AmbientChanged, este evento tiene un argumento PropertyName que identifica cual de las propiedades cambio.

Objeto Ambient

El objeto Ambient permite leer los valores de las propiedades de ambiente.

La Propiedad Enabled

La propiedad Enabled es otra propiedad de ambiente a considerar al diseñar el control. Para el soporte correcto de esta propiedad es necesario escribir los procedimientos Get y Let para la propiedad Enabled que delegan la disponibilidad del control para el objeto UserControl.

Características de los Controles

Visual Basic provee varias propiedades y un evento que son posibles utilizar para administrar la apariencia del control, por ejemplo es posible establecer el valor de la propiedad BackStyle del objeto UserControl para hacer transparente un control, sólo debe tenerse en cuenta que esto puede afectar el desempeño del control, también por ejemplo la mayoria de los controles tienen una interfaz de usuario visible aunque es posible crear un control que sea invisible en tiempo de ejecución para ello se establece la propiedad InvisibleAtRuntime del objeto UserControl.

Para evitar desajustes en tamaño de los controles estos deben responder al evento Resize para que trabaje en conjunto con la aplicación contenedora, también será necesario proveer un manejador de errores para el evento.

Los controles ActiveX pueden tener una propiedad llamada About que puede ser utilizada de manera informativa, como el nombre de la empresa que creo el control, derechos de autor, fecha de creación, etc.

Para mostrar un bitmap personalizado en el Visual Basic Control Toolbox, se utiliza la propiedad ToolboxBitmap del objeto UserControl, el bitmap debe tener un tamaño de 16 por 15 pixeles, si utiliza otro tamaño será escalado a este tamaño.

Visual Basic incluye un Wizard para crear un control y permite especificar que propiedades, métodos y eventos que podrían constituir la definición de la interfaz del control, para utilizarlo seleccione del menú principal:

Add-Ins » Add-In Manager » VB 6 ActiveX Ctrl Interface Wizard » Loaded/Unloaded

Crear un Control ActiveX

  1. Crear un nuevo proyecto, seleccionar ActiveX control
  2. Cambiar el nombre del ActiveX a un nombre descriptivo con el prefijo ctl
  3. Colocar controles y escribir el código necesario
  4. Debbuging test, seleccionando la opción Use existing browser
  5. Agregar un proyecto Standard EXE
  6. Seleccionar del menú principal Window » NombreProyecto - NombreActiveX(UserControl)

    Se agrega un icono del control en el contenedor General

  7. Seleccione el control ActiveX creado de General y coloquelo en la forma
  8. Seleccione el proyecto Standard EXE de la ventana Proyect Explorer, dar clic al botón derecho del mouse y seleccionar la opción Set as Start Up

0 comentarios: