PDA

Ver la versión completa : Creando un OCX



Arielo
03/01/2008, 06:25
El Visual Basic, nos permite la fascinante posibilidad de crear nuestros propios controles.
Esta posibilidad resulta muy útil, ya que podemos incluir en nuestro control, todo el código que necesitemos. Código que sólo habrá que tipear una sola vez, al crear el control, a pesar de que éste sea utilizado en muchas ocasiones dentro del sistema.

En este tema, iré explicando, paso a paso, cómo crear un control OCX personalizado.



.

Arielo
03/01/2008, 07:10
Nuestro control personalizado, contendrá el nombre de todas las provincias argentinas, y una abreviatura de cuatro letras para cada una de ellas.

Lo primero que tenemos que hacer, es crear un nuevo proyecto VB.

Seleccionamos la opción "Nuevo Proyecto" del menú "Archivo"
Nos aparecerá una ventana con todas las opciones de proyectos que tenemos. De entre todos estos, seleccionamos "Control ActiveX"

http://img143.imageshack.us/img143/8967/img1nuevoproyectokx0.jpg




De esta manera, se creará un nuevo proyecto, en el que definiremos nuestro control. La pantalla en este tipo de proyectos, es algo diferente a una aplicación EXE normal.
Consta sólo de un pequeño recuadro gris (este recuadro, será posteriormente, el fondo de nuestro control)

http://img505.imageshack.us/img505/5378/img2comienzoqq6.jpg

Arielo
03/01/2008, 07:14
Ahora, vamos a identificar nuestro control.

Primero, en el nombre del proyecto (\Proyecto\Propiedades de Proyecto1) colocaremos en el espacio "Nombre de proyecto:" el texto "Provincias".
Éste ("Provincias") será el nombre de nuestro control (el nombre completo, será, cuando esté creado, "PROVINCIAS.OCX")

Volviendo al control, en las propiedades de éste (Pulsar F4 para acceder a ellas), seleccionaremos "(Nombre)", y colocaremos el valor "Provincias" y dejaremos las otras propiedades como están.

Listo... nuestro control está identificado.


.

Arielo
03/01/2008, 07:24
Ahora, le agregaremos a nuestro control, un ComboBox, que contendrá en su propiedad "List", el nombre de todas las provincias argentinas.

A este ComboBox, le pondremos como nombre "cmbProvincias", y le daremos un tamaño adecuado a los nombres de las provincias.

Luego, haremos que el fondo de nuestro control, sea apenas un poco más grande que la ComboBox.

El control, en este punto debería estar quedándoles aproximadamente así:


http://img98.imageshack.us/img98/9163/img3comboboxzi6.jpg


.

Arielo
03/01/2008, 07:25
Bien. Ahora, crearemos las dos propiedades que harán que nuestro control se diferencie del resto, y nos sea de utilidad en nuestros sistemas...

Para crear una propiedad de un control, tenemos dos alternativas:
1 - Que sea una propiedad de sólo lectura (Es decir, que cuando estemos ejecutando el sistema, no podremos fijarle un valor, sino sólo saber cuál es)
Para definir una propiedad de sólo lectura, se debe declararla de la siguiente manera:

Public Property Get nombrepropiedad

2 - Que sea una propiedad de escritura. Es decir, que podamos fijarle un valor al ejecutar el sistema. Para definir una propiedad de escritura, se la declarará de la siguiente manera:

Public Property Let nombrepropiedad


Dijimos que el control debería devolver el nombre de la provincia, y una abreviatura de 4 letras de éste. Estas dos propiedades, serán de sólo lectura, ya que estos valores no pueden ser cambiados.


.

Arielo
03/01/2008, 07:28
Vamos a comenzar con la primera de las propiedades. La que contendrá el Nombre de la Provincia seleccionada en la ComboBox (recordemos que en la ComboBox, están almacenados todos los nombres completos de las provincias, en la propiedad "List" de la ComboBox)

Para esto, en el código del control, tipeamos lo siguiente:


Public Property Get Nombre()
Nombre = cmbProvincias.Text
End Property


Y con esto, ya tenemos definida la propiedad que contendrá el nombre de la provincia elegida...



.

Arielo
03/01/2008, 07:31
Pasamos a la segunda propiedad, la que devolverá la abreviatura correspondiente a la provincia seleccionada. Para esto, tipearemos el siguiente código:



Public Property Get Abreviatura()
Select Case cmbProvincias.ListIndex
Case Is = 0: Abreviatura = "BSAS" ' Buenos Aires
Case Is = 1: Abreviatura = "CATA" ' Catamarca
Case Is = 2: Abreviatura = "CHCO" ' Chaco
Case Is = 3: Abreviatura = "CHUB" ' Chubut
Case Is = 4: Abreviatura = "CFED" ' Capital Federal
Case Is = 5: Abreviatura = "CORD" ' Córdoba
Case Is = 6: Abreviatura = "CORR" ' Corrientes
Case Is = 7: Abreviatura = "ENRI" ' Entre Ríos
Case Is = 8: Abreviatura = "JJUY" ' Jujuy
Case Is = 9: Abreviatura = "LPAM" ' La Pampa
Case Is = 10: Abreviatura = "LRIO" ' La Rioja
Case Is = 11: Abreviatura = "MEND" ' Mendoza
Case Is = 12: Abreviatura = "MISI" ' Misiones
Case Is = 13: Abreviatura = "NEQN" ' Neuquén
Case Is = 14: Abreviatura = "RNEG" ' Río Negro
Case Is = 15: Abreviatura = "SLTA" ' Salta
Case Is = 16: Abreviatura = "SNJN" ' San Juan
Case Is = 17: Abreviatura = "SNLS" ' San Luis
Case Is = 18: Abreviatura = "FORM" ' Formosa
Case Is = 19: Abreviatura = "STFE" ' Santa Fe
Case Is = 20: Abreviatura = "SGOE" ' Santiago del Estero
Case Is = 21: Abreviatura = "TAIA" ' Tierra del Fuego
Case Is = 22: Abreviatura = "TUCU" ' Tucumán
Case Is = 23: Abreviatura = "SCRU" ' Santa Cruz
End Select
End Property



Y ya tenemos listas las dos propiedades de nuestro control.


.

Arielo
03/01/2008, 07:38
Ahora, sólo queda:

1 - Generar nuestro control (\Archivo\Generar Provincias.OCX...).
Generarlo en la carpeta Windows\System32 (si tenemos Win XP) o en Windows\System (Si tenemos Win 98 o ME)

2 - Registrarlo
Para esto, ir a la carpeta donde creamos nuestro control y tipear lo siguiente:

REGSVR32.EXE Provincias.ocx


Una vez finalizados estos dos pasos, estaremos en condiciones de utilizar nuestro control en cualquiera de los sistemas que hagamos...





.

Arielo
03/01/2008, 15:08
Lo lamento, pero olvidé subir el cómo utilizar el control recién creado, en nuestras aplicaciones.

Para esto, habrá que cargarlo en un proyecto nuevo.
Proceder de la siguiente manera:

* En la ToolBox del Visual Basic, hacer un clic derecho en cualquier parte no ocupada por uno de los controles estándares.
* Seleccionar la primera opción: "Componentes..."
* Aparecerá una ventana con tres solapas ("Controles", "Diseñadores", "Objetos Insertables") con el foco en "Controles". Una parte de esta ventana, contiene todos los controles que podemos insertarle a nuestro proyecto, además de un botón ("Examinar...")
* Buscamos nuestro control entre los que están disponibles
* Cuando lo encontremos, hacemos clic sobre el recuadro en blanco a la izquierda del nombre de éste, para tildarlo.
* Hacer clic en "Aceptar"
* En la caja de herramientas, estará disponible un nuevo control: PROVINCIAS.OCX
* Para utilizarlo en nuestra aplicación, sólo hay que agregarlo en el FORM donde queremos (o necesitamos) utilizarlo

.

Arielo
03/01/2008, 15:13
Por defecto, cuando agreguemos nuestro control en un form, éste se llamará Provincias1, Provincias2, Provincias3, y así...

El nombre de la provincia seleccionada, estará almacenado en la propiedad "Nombre"
La abreviatura de la misma, estará almacenada en la propiedad "Abreviatura"

Ejemplo:



MsgBox Provincias1.Nombre ' Devuelve nombre de la provincia elegida
MsgBox Provincias1.Abreviatura ' Devuelve abreviatura de provincia elegida


Espero que este pequeño instructivo les sea de utilidad...

Saludos!!