Visual Basic Basic - Guía del Estudiante Cap. 19 REALIZACION DE CONTROLES OCX A modo de comentar comentario io.
Hemos Hemos llegado llegado a un capítulo capítulo que todos los alumnos alumnos desean desean conocer: el capítulo donde vamos a ver como se crea un control personalizado. A lo largo de mis años de docencia he observado que los alumnos mas aventajados tienden a realizar aplicaciones usando controles realizados por ellos mismos, en la creencia que eso protege sus programas frente a posibles imitaciones, ya que parece que poseen la llave que da acceso a sus secretos. Incluso hay quien piensa que el uso de este tipo de controles da cierto prestigio como programador. programador. Y hay también empresas especializadas especializadas en software soft ware que comparten esas mismas ideas. En el ámbito empresarial hay quien realizó uno de estos controle controles s con fecha de caducid caducidad, ad, de forma que pasada una fecha, el control control deja de funcionar y con él la aplicación. Buena forma de asegurarse el contrato de mantenimiento, ya que el control había que reemplazarlo antes de llegar a esa fecha, pero una hermosa forma a la vez de perder perder al cliente y la credibilidad credibilidad como empresario empresario y como programador. programador. Es una cuestión de criterios personales o comerciales, pero la creación de controles personalizados es una práctica que solamente debe llevarse a cabo cuando es estrictamente necesario por no existir ningún recurso en VB que realice lo deseado. Y es decisión muy prudente no aceptar ninguna aplicación que llevando un control personalizado, no se entregue con la aplicación, toda la información relativa al mismo, incluyendo su código fuente.
Para crear un control, lo primero que hay que hacer es pensar, con papel y lápiz, las funciones que debe realizar ese control, así como sus propiedades y métodos. Hay que pensar durante este proceso, si el control se va a encapsular dentro de un OCX solo o con otros controles, ya que un mismo OCX puede contener más de un control. Una vez realizado este estudio previo, se procede a abrir un nuevo proyecto, eligiendo en este caso la creación de un Control ActiveX, sobre el icono mostrado en la figura. Aparecerá algo distinto a lo que nos encontramos cuando creamos un proyecto EXE Standard. Lo primero que observamos es que no aparece un formulario, sino algo, que si bien se le parece, sabemos que no lo es. Esa especie de formulario es el objeto UserControl. UserControl. El UserControl es el objeto base del control que estamos creando. Un control ActiveX se compone compone siempre de un UserControl UserControl y sobre sobre él podremos podremos colocar colocar otros otros controles controles.. A los controles que colocamos sobre el UserControl se les denomina Controles Constituyentes. Constituyentes. Un proyecto con un UserControl es similar a un proyecto con un formulario. El proyecto se guarda en en un fichero ASCII con extensión .vbp igual que cualquier cualquier proyecto Visual Visual Basic. El nombre de ese fichero será el nombre con el que se ha guardado el proyecto. El UserControl se guarda también en un fichero ASCII. De la misma forma que un formulario se guarda con extensión .frm, un UserContol se guarda con extensión .ctl Y de la misma forma que un formulario, cuando tenía gráficos éstos se guardaban en un fichero aparte, con extensión .frx, cuando un UserControl tiene gráficos se guardan en un fichero con extensión .ctx El nombre de ambos ficheros es el mismo con el que se haya guardado el UserControl. Al compilar el proyecto, en vez de generar un fichero .EXE, generará generará un fichero .OCX Y este OCX es idén idéntico tico a los que vemos vemos en Proyecto Proyecto | Compo Componen nente tes s cada cada vez que que quere queremos mos introducir un componente que no está en la barra de herramientas. (Falta registrarlo, pero veremos más adelante como se registra) Se pueden introducir varios UserControl en un mismo proyecto. Esto generará igual número de controles dentro dentro del mismo paquete paquete .OCX. esta práctica práctica es bastante bastante normal. Por ejemplo, el MSCOMCTL.O MSCOMCTL.OCX CX (Microsoft (Microsoft W indows indows Common Common Controls 6.0) 6.0) contiene 9 controles. controles. Pero tenga cuidado cuando cuando meta controles dentro del mismo paquete. Piense que cada control va a ocupar cierto sitio. Suponga que hace un OCX con 9 controles. Ocupará más espacio en disco que si hubiese metido 1. Cuando meta en un proyecto uno solo de estos controles, deberá meter en el proyecto la totalidad del espacio que ocupaban los 9 controles. El caso del control
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 1
de Microsoft citado tienen su razón de ser. El OCX contiene 9 controles, que se pueden usar todos dentro del mismo proyecto (Barra de herramientas, barra de estado, TreeView, ListView, Barra de Progreso, Slider, TabStrip, Image Combo e ImageList) Registrar un control. El registro de un control es una operación que Windows debe hacer para meter los datos de ese control (nombre y ubicación dentro del disco) dentro del registro de Windows. Esto le facilita facil ita la búsqueda del fichero. Lo normal es colocar colocar los controles controles OCX dentro dentro de la carpeta carpeta C:\Windows\Sys C:\Windows\System. tem. Puede Puede ponerlo en cualquier otra carpeta, pero esa es la usual. Eso sí, una vez puesto en la carpeta deseada y registrado no lo puede mover, ya que Windows no lo encontraría. Hay un método muy sencillo para registrar un control cuando tiene el Visual Basic instalado en su PC. Guarde el fichero OCX en C:\Windows\System. Vaya a Proyecto | Componentes y le aparecerá el cuadro para elegir un nuevo control. No aparecerá ese nuevo OCX dentro de la lista de este cuadro, ya que todavía no está registrado.
Fig. 19.1 Cuadro para para elegir un nuevo control Haga clic sobre el botón Examinar… Le aparecerá el cuadro para seleccionar un fichero. Seleccione el f ichero OCX que acaba de introducir y ese OCX ya está registrado. Cuidado. Esta forma, sencilla y sin complicaciones, puede llevarle en más de una ocasión a registrar controles que no desea. Cuan Cuando do no tenga tenga VB instal instalad ado o tendrá tendrá que recurri recurrirr a un progra programa ma que que trae trae Windows Windows:: el Regsvr32.Exe Para ello vaya a Inicio | Ejecutar y en el cuadro que le aparece introduzca el nombre del programa seguido del nombre completo del OCX a registrar. registrar. (Fig. 19.2) Cuando realizamos la instalación de un programa realizado en Visual Basic, ocurre con mayor frecuen frecuencia cia de la dese desead ada a que que uno uno de los contro controle les s no se regist registra. ra. El regist registro ro lo hace hace automáticamente la instalación, pero a veces, falla. En algunos casos el programa funciona perfectamente, pero en otros no funciona. Y en estos casos es normal que el OCX no haya lleg llegad ado o a guard uardar arse se en el disc disco. o. Solu Soluci ción ón:: copi copiar ar ese OCX OCX dire direct ctam amen ente te sobr sobre e C:\Windows\System y realizar el registro de la forma descrita.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 2
Fig. 19.2 Forma de registrar registrar un control control OCX
Sigamos con el UserControl.
Propiedades, métodos y eventos del nuevo control. El nuevo control que va a crear va a tener propiedades. Unas las va a tener porque son inherentes a cualquier control (Left, Top, Tag, y aquellas que sean necesarias para la ubicación del control y sus dimensiones) dimensiones) Otras, porque se han introducido durante durante la creación del control. Los métodos y eventos deben introducirse todos durante la creación. El UserControl tiene sus Propiedades, Métodos y Eventos. También las tienen los controles constituyentes. Pero las propiedades, métodos y eventos de ninguno de ellos pasa a formar parte de las propiedades, métodos o eventos del control que estamos creando. Vamos a ver como se introducen las propiedades propiedades del nuevo control. Para ello vamos a estudiar dos instrucciones de Visual Basic: Property Get y Property Let Estas instrucciones se introducen igual que cuando se introduce una función o procedimiento Procedimiento. Nos aparece un en un formulario. Haciendo clic en Herramientas | Agregar Procedimiento. cuadro donde debemos elegir Propiedad Recuerde que el elemento del menú de VB Agregar Procedimiento solam solament ente e está está activad activado o cuan cuando do está está abier abierta ta una una ventan ventana a de código código.. La ventana de código abierta debe ser del proyecto del control ActiveX (Del UserControl o de cualquiera cualquiera de los controles controles constituyent constituyentes) es) Se le pone pone el nombre nombre que desea que tenga tenga la propiedad. Por ejemplo, si queremos que esa propiedad sea el color de fondo del nuevo control, pondremos ColorDeFondo (¿Porque habríamos de poner Backcolor si el control se ha desarrollado en España?)
Fig. 19.3 Cuadro para para introducir una propiedad propiedad en el nuevo control Basta con hacer clic en Aceptar y ya nos ha introducido dos nuevas cosas en la ventana de código, en el desplegable de la derecha (Fig. 19.4)
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 3
Fig. 19.4 Ventana Ventana de código código mostrando PropertyGet PropertyGet y PropertyLet Al introducir una nueva propiedad se generan estos dos procedimientos (los denominaremos denominaremos Procedimientos Property) Property) que tienen por nombre el de la propiedad que acabamos de introducir, y llevan la coletilla de Property Get y Property Property Let. Sin perder perder el tiempo guardamos guardamos el proye proyecto cto y vamos vamos a ver las propied propiedad ades es del nuevo nuevo control. (Veremos un poco más adelante como se pone el control sobre un formulario dentro del mismo grupo de proyectos) Vemos que figura una propiedad llamada ColorDeFo ColorDeFondo ndo,, tal como habíamos habíamos puesto puesto en la Fig. 19.3 Puede ver que hay más propiedades, que no han sido introducida introducidas. s. Todas odas esas esas propieda propiedades des son la que se intr introd oduc ucen en auto automá mátic ticam amen ente te como como inhe inhere rent ntes es a cualquier control. La propiedad ya está en el cuadro de propiedades, propiedades, pero todavía todavía no hace hace nada nada.. Lo que que quera queramo mos s que que haga haga deb debemos emos prog progra rama marl rlo o just justam amen ente te en eso esos dos dos procedimientos property que acaban de aparecer. Aparecen Aparecen dos procedimientos procedimientos porque en principio principio es una una propied propiedad ad de lectura lectura y escrit escritura ura.. Media Mediante nte el Property Let escribiremos el valor y con el Property Get leeremos leeremos el valor de la propieda propiedad. d. (Let pone pone el valor, Get lee el valor) Fig. 19.5 Cuadro de propiedades del nuevo control
Veamos como son esos dos procedimientos antes de introducir código: Public Property Let ColorDeFondo(ByVal vNewValue As Variant) End Property Public Property Get ColorDeFondo() As Variant End Property Vea que empieza como todos los procedimientos, con Public (Podría ser Private) seguido de Property Let (o Property Get) Get) y termina con End End Property Property Como puede puede verse, el procedimie procedimiento nto Property Let necesita necesita un valor, valor, vNewValue vNewValue que ha declarado como Variant. A ese el procedimiento para poner el valor a la propiedad necesita que le pasemos el valor de esa propiedad. Lo que no puede saber, es el tipo de dato que debe usar para ColorDeFondo. Por eso pone As Variant y de esta forma podemos meter cualquier valor. Sin embargo, sabemos desde el Capítulo 1 que las variables declaradas como Variant ocupan mucho espacio espacio en memoria, y debemos optimizar el programa ajustando las variables.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 4
Como sabemos que el color es un número Long, podemos sustituir el tipo Variant por un tipo Long: Public Property Let ColorDeFondo(ByVal vNewValue As Long) Public Property Get ColorDeFondo() As Long Observe que lo hemos cambiado en los dos procedimientos. Si no se cambia en ambos dará error. También podemos cambiar el nombre de la variable interna del procedimiento (vNewValue) y poner algo que resulte más comprensible: co mprensible: Public Property Let ColorDeFondo(ByVal ColorDeFondo(ByVal NuevoColor As Long) En el caso del color también puede poner otro tipo de variable: OLE_COLOR, que es lo que hace VB con el asistente. Veamos Veamos ahora el código a introducir en ese Procedimiento Property Como lo que queremos hacer con la propiedad ColorDeFondo es poner de un determinado color el fondo del control, y el fondo del control es precisamente el UserControl, bastará con poner que la propiedad BackColor del UserControl es precisamente el nuevo control a poner. Observe que en el UserControl la propiedad se sigue llamando Backcolor. Public Property Let ColorDeFondo(ByVal ColorDeFondo(ByVal NuevoColor As Long) UserControl.BackColor UserControl.BackColor = NuevoColor End Property Es muy útil, útil , no necesario, comunicar al control que ha cambiado una de sus propiedades. propiedades. Esto sirve para que pueda guardar el nuevo valor en su página de propiedades. Ya lo veremos. Para comunicarle que ha cambiado una propiedad se le añade una línea al código anterior Public Property Let ColorDeFondo(ByVal ColorDeFondo(ByVal NuevoColor As Long) UserControl.BackColor UserControl.BackColor = NuevoColor PropertyChanged "ColorDeFondo" End Property Ya veremos lo que ocurre con PropertyChanged Este procedimiento es el que se ejecuta cuando ponemos un valor al color de fondo del nuevo control cuando ponemos, por ejemplo TBPV1.Colo TBPV1.ColorDeF rDeFondo ondo = 255
(TBPV1 (TBPV1 es el nombre nombre del del control control en el formulario formulario de prueba) prueba)
Vamos a ver el código del procedimiento que se ejecuta cuando queremos saber el valor que tienen esa propiedad. Public Property Get ColorDeFondo() As Long ColorDeFondo ColorDeFondo = UserControl.BackColor UserControl.BackColor End Property Obse Observe rve que que el valor valor devu devuelt elto o es el núme número ro de colo colorr de la prop propie ieda dad d Back BackCo Colo lorr del del UserControl.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 5
Vamos a ver con más detalle los procedimientos Property Let y Property Get Instrucción Property Let Declara el nombre, los argumentos, y el código que forman el cuerpo de un procedimiento Property Let, y asigna un valor a una propiedad. Sintaxis [Pu Publi blic c Priva Private te Frie Friend nd Stati Static c] instrucciones Exit Property instrucciones End Property
Property
Let
NombreDelProcedimiento
(argumentos) argumentos )
El ámbito del procedimiento queda determinado por la primera expresión: Public: El procedimiento Property Property es accesible accesible desde desde cualquier cualquier parte del del proyecto Private: Es accesible solamente solamente para los procedimientos del mismo módulo Friend (Solo para Clases)El procedimiento procedimiento no es visible por el controlador controlador de una instancia instancia Static Los Los valores de las las variables locale locales s declarada declaradas s en el procedimie procedimiento nto mantienen mantienen su valor entre distintas llamadas. NombreDelProcedimiento es el nombre por el que se va a llamar y es precisamente el nombre de la propiedad que va a controlar. Aunque en VB no pueden existir dos procedimientos con el mismo nombre, en este caso sí, y el nombre del procedimiento Property Let puede ser igual (de hecho siempre es igual) a otro procedimiento Property Get Argumentos Argumentos que deben deben pasarse al llamar a ese procedimiento. El tipo de datos de cada argumento será el mismo que en el procedimiento Property Get Instrucciones Es el código que hay que escribir en el procedimiento para que realice lo que desea el programador. Estas instrucciones pueden generar una condición en la que se debe abandonar abandonar el procedimiento. En ese caso, puede salirse del procedimiento con E xit Prperty Los argumentos pueden pasarse: Por Valor (ByVal) El valor de la variable fuera del procedimiento mantienen el valor, aunque ese valor cambie dentro del procedimiento. Por Referencia Referencia (ByRef) (ByRef) El valor de la variable fuera del procedimiento cambia si suse modifica en el procedimiento. Opcional (Optional) El parámetro es opcional. Si un parámetro es opcional, todos los que vengan detrás también deben serlo, y hay que indicarlo así con la expresión Optional para cada uno de ellos. El parámetro que da valor a la propiedad no puede ser opcional. Array de parámetros (ParamArray) Indica que es una matriz de parámetros. No se puede puede llamar a un procedimiento Property Let dentro de otro procedimiento Property, Property, Sub o Function. Function .
Property Get (Instrucción) Declara el nombre, los argumentos y el código que componen el cuerpo de un procedimiento Property, Property, y obtiene el v alor de una propiedad.
Sintaxis
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 6
Friend] [Static] Static] Property Get NombreDelProcedimiento (argumentos) [Public | Private | Friend] argumentos ) As tipo instrucciones nombreDelProcedimiento = expresión Exit Property instrucciones nombreDelProcedimiento = expresión End Property El ámbito y la forma de pasar los parámetros parámetros son idénticas a las de Property Let
Comenzando el ejercicio práctico En el ejercicio que ilustra este capítulo vamos a hacer un control para una caja registradora (No olviden que es un ejemplo) Ese control va a recibir el código de barras de un producto (se podrá teclear directamente o leerlo m ediante un escáner) y analizará el número de control para compro comprobar bar que que es correc correcto. to. El contr control ol se enca encarga rgará rá de buscar buscar en una una base base de datos datos la descripción del producto, el precio y las unidades de oferta. Para ciertos productos aplicará un incremento de precio en horas nocturnas y para otros un descuento en horas de mañana. Por lo tanto, debe tomar la hora del sistema y fijar el Incremento / Descuento en razón de la hora. La interfaz gráf ica pensada es la siguiente: Fig. 19.6 Interfaz gráfica del control a desarrollar
Veamos que propiedades debe tener este control. Aparte de la ya citada, ColorDelFondo, ColorDelFondo , vamos a ponerle: In_Cod_Barras. In_Cod_Barras. De tipo texto, para poder pasarle por programa el código de barras de un producto. In_Unidades. In_Unidades. Numérica double para que permita decimales, y permitir así vender productos “al peso” In_DeshabilitaIncr_Desc, booleana, que si es true, deshabilitará la operación de incrementar In_DeshabilitaIncr_Desc, o rebajar el precio en función de la hora. Out_Descripcion, Out_Descripcion, que será una cadena de caracteres con el texto de la Descripción. Out_Precio_Total, Out_Precio_Total, numéric numérico o doubl double e con el precio precio total total de las las unida unidade des s vendid vendidas as de ese producto (Hemos tenido el detalle de que las variables que contienen datos que entran en el control comienzan por In_ y las que que salen del control comienzan por por Out_ Esto no significa que sean sean solo de escritura o de lectura) Se introducen estas propiedades tal como se explicó más atrás. En la Fig 19.7 puede verse el cuadro cuadro de propied propiedade ades s del control, control, con todas todas estas propieda propiedades des ya metidas. Ese cuadro, cuadro, como sabemos, aparece aparece pulsando F4 estando estando seleccionado seleccionado el control. Ese control está sobre un formulario de prueba que aun no sabemos como ponerlo, pero se explicará en breve. Este cuadro es el típico de todos los controles, pero estamos acostumbrados a que, haciendo clic con el botón derecho del ratón, aparezca un cuadro de diálogo donde podemos introducir las propiedades. Y eso, no sabemos todavía como hacerlo.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 7
Eso Eso se hace hace median mediante te una una págin página a de propie propieda dade des. s. Reconozco que que es complicado, y pese a mi costumbre de no usar asistentes para ahorrar trabajo, en este caso no me queda más remedio que recurrir a ellos. Vayamos al UserControl UserControl y seleccionándolo, pulsamos F4 para sacar sacar sus propiedade propiedades. s. Vayamos a su propiedad propiedad Pro PropertyP rtyPa ages (re (recue cuerde rde que estam stamos os en las las propiedades del UserControl) Sitúese en esa propiedad y haga haga clic sobre el botón botón que aparece aparece a la derecha. derecha. Le aparecerá un cuadro como el de la Fig. 19.8. En ese cuadro cuadro se nos nos pide pide que que señal señalemo emos s las las págin páginas as que que deseamo deseamos s que tenga el cuadro cuadro de propied propiedade ades. s. En el caso caso del ejemplo se han seleccion seleccionado ado una página página de prop propie ieda dade des s vacía vacía (Pag (Pagin inaP aPro ropi pied edad ades es1, 1, se le ha cambiado el nombre que aparecía por defecto), la página dond donde e se elige elige la fuente fuente (Stan (Standa dardF rdFon ont) t) y la págin página a donde se elige el color color (StandarColor) Al pulsar Aceptar la propiedad PropertyPages del serControl tiene 3 Pages Vayamos ahora al menú de Visual Basic, en Proyecto, elegimos Agregar Página de Propiedades. Y es ahí donde nos invita a poner una página en blanco o a utilizar un asist asisten ente. te. Posib Posiblem lemen ente te un progra programad mador or con con mucha mucha experiencia elegiría hacerla a mano, pero los controles ActiveX no se hacen todos los días y vamos a recurrir al asistente para que nos evite tener que trabajar más, y sobre todo, tener que estudiar mucho más. Fig. 19.7 Propiedades Propiedades del del control
Fig Fig. 19.8 9.8 Cua Cuadro conectar páginas propiedades
para ara de
Al ele elegir gir el asist siste ente, te, aparece aparece un cuadro cuadro donde donde nos muestra las propie propieda dade des s que que hemos hemos metido en nuestro control. En el caso caso del del ejem ejempl plo, o, esas propiedades son: ColorDeFondo In_Cod_Barras In_Unidades In_DeshabilitarIncr_Desc Out_Descripcion Out_Precio_Total
El asistente nos pide que elijamos las propiedades que queremos que aparezcan en el cuadro de dialogo de propiedades. Se las ponemos todas. Vamos aceptando todos los pasos, hasta que hacemos clic en el botón Finalizar. El cuadro de dialogo de propiedades ya está creado. Vamos al formulario de prueba y hacemos clic con el botón derecho sobre el control. Aparece por fin el cuadro de dialogo de propiedades.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 8
Fig. 19.9 Cuadro de dialogo de propiedades. Puede ahora incluir en ese cuadro cualquier control, como si se tratase de un formulario. Queda a merced de su capacidad artística rematarlo de forma adecuada
Fig. 19.10 Cuadro de propiedades rematado Puede observar ahora que en la ventana de proyecto aparece ahora otro componente: la página de propiedades. La página de propiedades (Property Page) tiene las casi todas las propiedades, métodos y eventos de un formulario. No vamos a extendernos en su estudio exhaustivo, ya que sería salirse del objetivo del curso. Solamente Solamente falta introducir introducir el código código adecua adecuado do en los procedimie procedimientos ntos del UserCon UserControl. trol. Por ejemplo, ejemplo, para para comprobar comprobar que el código código de barras es correcto, correcto, creamos creamos un procedimiento procedimiento
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 9
llamado CompruebaCodigo. Llamaremos a este procedimiento cuando se introduzca el código de barras barras completo. completo. (Emplearemos (Emplearemos solamente solamente EAN-13 EAN-13 para no complicar el ejemplo). ejemplo). El código del procedimiento que comprueba el código de barras puede verlo en el ejemplo, y es solamente aplicar la definición del dígito de control de EAN-13. A ese procedimiento le hemos llamado CompruebaCodigo y es un procedimiento creado por nosotros dentro del UserControl.
Prueba del nuevo control Para comprobar el nuevo control es necesario ponerlo en un proyecto. Mejor dicho, en un formulari formulario. o. Basta Basta con con introd introduci ucirr un formula formulario rio de la forma habit habitual ual:: Proyecto Proyecto | Agregar Agregar Formulario. Formulario . Verá que aparece una nueva carpeta en el proyecto con un formulario. Para introducir el nuevo control en el formulario basta con que lo coja de la caja de herramientas y lo lleve al formula formulario rio como como lo haría haría con con cualqu cualquier ier otro contr control. ol. Eso Eso sí, debe cerrar cerrar previame previamente nte el UserC UserCon ontrol trol porqu porque e si no ese ese icono icono que que pres presen enta ta el nuevo nuevo está está deshabilitado. Puede probar todas las características del nuevo control. De cualquier forma no se fíe, y realice la comprobación final en un proyecto completamente independiente, una vez que ya haya compilado el control.
Icono para presentar al nuevo control Es posible que no quiera que su control se vea en la caja de herramientas con el icono de la figura anterior. Este es el icono por defecto. Si desea cambiarlo debe introducir una imagen ToolBoxBitMap. La imagen deberá estar en un BitMap en la propieda propiedad d del UserCon UserControl trol ToolBoxBitMap. formato bastante grande (sin pasarse) para que se vea claro, ya que si se pone pequeña, el icono que aparece en la caja de herramientas queda bastante feo.
Enlazar el nuevo control a una base de datos mediante el control data. Ya vamos avanzando en lo que podemos hacer sobre un nuevo control. Ahora vamos a enlazarlo a una base de datos a través del control Data. Para ver como se hace esto vamos a hacer un ejemplo, siguiéndolo paso a paso.
LSB 10
Visual Basic
Guía del Estudiante Cap.19
Pág.
Propieda Propiedades des del UserCon UserControl trol (Se enumeran enumeran solamente solamente aquellas aquellas que sean específicas específicas del UserControl UserControl o que aconsejen una explicación especial) Propiedad AccessKeys Devuelve o establece una cadena que contiene las teclas que funcionarán como teclas de acceso (o teclas aceleradoras) del control. La propiedad AccessKeys es una cadena que contiene todas las teclas de acceso del control. Por ejemplo, para establecer las letras S e Y como teclas de acceso, la propiedad AccessKeys se establecería a "sy". Cuando un usuario presiona una de las teclas de acceso junto con la tecla ALT, el control recibirá el enfoque (segú (según n el valor valor de la propie propiedad dad ForwardFocus). ForwardFocus ). Las Las tecla teclas s de acces acceso o de los controle controles s componentes se incluyen implícitamente como teclas de acceso, aunque no aparezcan en la propiedad AccessKeys. AccessKeys. ActiveControl (Propiedad) Devuelve el control que tiene el enfoque. Propiedad AutoRedraw El UserCon UserControl trol acepta métodos métodos gráficos. gráficos. mismo que en el Formulario.
La propiedad propiedad AutoRe AutoRedraw draw (True/Fal (True/False) se) hace lo
Propiedad BackStyle Establece el tipo de fondo del UserControl (Opaco / Invisible) Los valores aceptados son: Opaque 1 Invisible 2
El fondo será opaco El fondo es transparente, pero solamente si la propiedad Windowless esta a True
Propiedad ClipBehavior Sirve para determinar la zona donde se verán los métodos gráficos, cuando está transparente. Véase en la ayuda. Propiedad ContainedControls Devuelve la colección de controles constituyentes y los que se hayan podido añadir en tiempo de ejecución. Funciona de forma similar a la propiedad Controls Controls de un formulario. Propiedad ContainerHWnd Devuelve el controlador de la ventana (hWnd) del contenedor de un UserControl. Se usa para programar con APIS. Propiedad DataMembers Devuelve una referencia a la colección DataMembers. DataMembers. Un proveedor de datos puede proporcionar múltiples conjuntos de datos a los que un receptor puede enlazar. Cada conjunto de datos se llama "miembro de datos" y está identificado mediante una cadena única. La colección DataMembers contiene los nombres de todos los miembros de datos disponibles para el receptor de datos. Propiedad EditAtDesignTime Establece si un control puede activarse en el tiempo de diseño del programador. Si es True el control puede activarse en tiempo de diseño y se comportará como lo haría en tiempo de ejecución.
LSB
Visual Basic
Guía del Estudiante Cap.19
Pág. 11
EventsFrozen (Propiedad) Devu Devuelv elve e un valo valorr que que indi indica ca si el cont conten ened edor or está stá pasan asando do por por alto alto los los even evento tos s desencadenados por el control. La propiedad EventsFrozen no está disponible en tiempo de diseño del control y es de sólo lec tura en tiempo de ejecución. True, el contenedor pasa por alto todos los eventos Cuando la propiedad EventsFrozen es True, desencadenados por el control. Si el control necesita producir un evento que no se puede perder, tiene que dejarlo en la cola hasta que EventsFrozen sea False. False. Extender (Propiedad) Devuelve, para este control, el objeto Extender que almacena las propiedades del control mantenidas por el contenedor. contenedor. La propiedad Extender no Extender no está disponible en tiempo de diseño del control y es de sólo lectura en tiempo de ejecución. Propiedad MaskColor Devuelve o establece el color que determina la región transparente del mapa de bits asignado a la propi propied edad ad MaskPicture de un objet objeto o UserControl cuya propiedad BackStyle está establecida a 0 (Transparente). Sintaxis
MiUserControl.MaskColor = MaskColor = color
Cuando se asigna a un mapa de bits la propiedad MaskPicture de un UserControl cuya propiedad BackStyle está establecida a 0 (Transparente), el control se vuelve transparente en cualquier lugar en que esté cubierto por áreas del mapa de bits que cumplan la propiedad MaskColor . Los eventos del mouse que ocurren sobre áreas transparentes las reciben el contenedor o los controles que, de otro modo, estarían cubiertos por el UserControl. UserControl.
MaskPicture (Propiedad, Objeto UserControl) Devuelve o establece el mapa de bits que, combinado con la propiedad MaskColor , determina las regiones transparentes transparentes y vis ibles de un objeto UserControl cuya propiedad BackStyle está establecida a 0 (Transparente). Sintaxis
MiUserControl.MaskPicture = imagen
Importante Esta característica sólo es soportada con mapas de bits de tipo imagen, como GIF, JPEG y DIB. No es soportada con iconos, cursores o metaarchivos de W indows. indows.
Propiedad ToolBoxBitMap Esta Establ blec ece e la image imagen n con con la que que se va a repr repres esen enta tarr el nuevo nuevo cont contro roll en la caja caja de herramientas. Debe ser una imagen BitMap que habremos guardado previamente en el disco.
LSB 12
Visual Basic
Guía del Estudiante Cap.19
Pág.