Red de conocimiento informático - Problemas con los teléfonos móviles - control de usuario vb

control de usuario vb

¿Qué es un control ActiveX?

Una respuesta sencilla es: clases con interfaces gráficas. Es posible que haya programado con clases antes, lo cual es una excelente manera de lograr la reutilización del código. Por supuesto, también proporciona muchos otros beneficios, que no pretendemos enumerar aquí. Los controles ActiveX llevan este concepto un paso más allá, permitiéndole escribir un widget y luego empaquetarlo para usarlo en programas futuros o como una solución a un problema específico para los programadores. Proporciona métodos de programación más sencillos. Con ActiveX puede crear controles "compuestos", que se componen de varios otros controles. Es decir, en los controles ActiveX, no solo puede usar controles ordinarios en VB, como cuadros de texto y cuadros de imagen, sino que también puede usar otros controles ActiveX para formar sus propios controles para lograr las funciones que desea, y está empaquetado. para uso en la espalda.

La composición de los controles ActiveX

Un control ActiveX está formado por algunos de sus miembros: propiedades, métodos y eventos. ¿Cuál es la conexión lógica entre ellos? Usemos nuestro cuerpo como ejemplo. Pensemos en el cuerpo como un control ActiveX. Este control primero debería tener algunas propiedades, como por ejemplo si los ojos están abiertos o no. Evidentemente, este valor de atributo debería tener dos situaciones: abierto o cerrado. Al usarlo, puede indicarle al "control corporal" que cambie este atributo a un nuevo valor para decidir si abre o cierra los ojos, u obtiene el valor del atributo actual para conocer la condición física actual.

Método es el nombre colectivo de los procedimientos y funciones en el control. No es diferente de otras funciones y procedimientos de VB. También puede pasarles parámetros y devolver el valor deseado. Supongamos que hay una clase que describe el objeto del cuerpo. Debería tener un método "Look" y debería poder aceptar el parámetro "Dirección". Entonces, el método debería escribirse así:

. Vista secundaria pública (dirección como número entero)

Seleccionar dirección del caso

Caso 0

'Mirar hacia la izquierda

Caso 1

'Mirar hacia la derecha

Caso 2

'Mirar hacia adelante

Caso 3

'Mirar hacia atrás

End Select

End Sub

Si se requiere un valor de retorno, tomemos un ejemplo de "lectura". En este momento, debes declarar el método "Leer" como una función en lugar de un procedimiento:

Función pública Read() As String

'Algunas operaciones de lectura

Leer = "Hola desde el mundo"

Función final

En el control del cuerpo, todavía usamos el método "Mirar". Cuando se llama a este método, se especifica que los ojos deben "ver". De manera similar, también especificamos otro método, "Leer". Este método se utilizará para devolver lo visto.

¿No es muy sencillo el concepto de “método”? Si aún no puede entenderlo, puede pensarlo de esta manera: su control es como una máquina. Activa el interruptor de control (parámetros de entrada), gira la manija (método de llamada) y luego la luz de la máquina parpadea y arranca. corriendo (ejecuta el método) y finalmente saca algo de la máquina (el valor de retorno), y eso es todo.

Pero espera… si tu máquina quiere decirte algo, ¿cómo lo hace? Aquí es cuando entra en juego el "evento".

Finalmente, el control del cuerpo también proporcionará un evento de "parpadeo", que se utiliza para notificar al desarrollador que este evento ha ocurrido cuando se realiza la acción de parpadeo, pero no es necesario saber cómo funciona el cuerpo. funciona internamente y por qué sucede esto. Se activará el evento.

Hagámoslo y hagamos un control. No creas que hacer un control es muy difícil, aunque es un poco diferente a escribir aplicaciones generales. Ya sabemos anteriormente que un control ActiveX se compone de propiedades, métodos y eventos. Veamos primero cómo implementar estas cosas en el programa y luego conéctelas para formar un todo orgánico. La forma más simple de propiedad es una variable pública declarada con public. Por ejemplo, si coloca el siguiente código en la sección de declaración de su proyecto de control:

Public EyeOpen As Boolean

De esta manera, puede usar esta propiedad en el código posterior. Sin embargo, es muy poco lo que esta propiedad puede hacer. Casi no funciona correctamente. Porque durante el diseño del programa, cualquier cambio en los valores de las propiedades debe notificarse a Visual Basic para poder marcar la instancia de control como si fuera necesario guardarla. Y debido a que el valor de la propiedad puede mostrarse en varios lugares, se debe notificar al entorno de desarrollo cuando el valor de la propiedad cambia para que pueda mostrar sincrónicamente el valor de la propiedad en la ventana "Propiedades", el cuadro de diálogo "Páginas de propiedades", etc.

¿Es un poco difícil de entender lo anterior? Si no comprende de qué está hablando, no se preocupe. Primero abra un proyecto, agregue un control e intente cambiar algunas propiedades del control. Nuestra tarea actual es realizar dicho control. Se puede ver que existen algunas diferencias entre la programación de control y la programación general. Entonces, ¿cómo lograrlo? Esto utiliza procedimientos de atributos.

Cuando se hace referencia o se establece un valor de propiedad, el procedimiento de propiedad se llama automáticamente. Agreguemos dicho atributo: abra la ventana de código, haga clic en el menú "Herramientas", seleccione el submenú "Agregar proceso", en el cuadro de diálogo emergente, complete el nombre del proceso "EyeOpen" y luego configure el tipo en " propiedad". Cuando hace clic en Aceptar, VB crea automáticamente un prototipo del procedimiento de propiedad y el código se agregará a la ventana de código:

Propiedad pública Obtener EyeOpen() como variante

Propiedad final

Propiedad pública Let EyeOpen(ByVal vNewValue As Variant)

Propiedad final

Todo lo que le queda por hacer es escribir el código de procesamiento de la propiedad , llena este esqueleto.

Como puede ver, VB en realidad escribe dos procedimientos de propiedad, "Obtener" y "Dejar". En realidad, es bastante simple: "Obtener" es el procedimiento que se llama cuando se hace referencia al valor de la propiedad, y "Let" se llama cuando se escribe el valor de la propiedad. (De hecho, existe un tercer tipo de procedimiento, que veremos más adelante. Permítanme recordarles aquí). Para que un procedimiento de atributo funcione correctamente, debe haber una variable para guardar el valor real del atributo. Agregue la siguiente línea a la sección de declaración:

Private m_EyeOpen As Boolean

Observe el prefijo 'm_', que generalmente se coloca antes de las variables internas del control de usuario. Ahora es el momento de completar el marco del proceso. Primero echemos un vistazo al proceso Let. Este proceso tiene un parámetro: el nombre predeterminado es vNewValue, tipo de variante.

Pero queremos una variable booleana en lugar de una variante porque los ojos sólo tienen dos estados: abierto y cerrado en nuestro modelo. Así que cambie este parámetro a "New_EyeOpen As Boolean". Si desea que esta propiedad aparezca como propiedad de solo lectura, no cambie el procedimiento Let y deje el cuerpo del procedimiento vacío. De lo contrario, cuando desee establecer el valor de esta propiedad, deberá ejecutar un código como este:

Propiedad pública Let EyeOpen(New_EyeOpen As Boolean)

m_EyeOpen = New_EyeOpen

PropertyChanged "EyeOpen"

'También puedes escribir algún código relacionado más adelante para responder a la configuración de la propiedad

End Property

Cuando quieras Al escribir un valor de propiedad, se llamará a esta función, primero se guardará el valor de la propiedad en una variable privada y luego se ejecutará el método interno PropertyChanged, que se utiliza para indicarle a Visual Basic que el valor de la propiedad ha cambiado y desencadenar un evento WriteProperties. El contenido específico sobre este punto se mencionará más adelante.

¡Y el proceso de obtención es aún más sencillo! No es diferente de la función estándar:

Propiedad pública Obtener EyeOpen() como booleano

EyeOpen = m_EyeOpen

Propiedad final

Listo ¿Esto es todo? ¡No! Olvídese de los valores de propiedad mencionados anteriormente que deben guardarse para que persistan durante la transición de las sesiones de programación. Entonces, ¿cómo guardar y recuperar valores de atributos? Aquí es donde se utiliza el objeto PropertyBag.

Usar PropertyBag

El objeto PropertyBag contiene dos métodos: uno para lectura y otro para escritura. Como se mencionó anteriormente, cuando cualquier propiedad cambia, se activará el evento WriteProperties del control. En este momento, el valor del atributo se puede guardar en la bolsa de atributos. El siguiente código implementa esta función:

PropBag.WriteProperty "EyeOpen", m_EyeOpen, True

PropBag es una instancia del objeto PropertyBag. La función WriteProperty contiene tres parámetros. La primera columna es el nombre de la propiedad, seguida del valor que se guardará. El último parámetro es el valor predeterminado que se escribirá si no hay un atributo definido por el usuario. Combinando esto con la configuración del valor predeterminado del método ReadPropertiy, puede establecer un valor predeterminado para el valor de la propiedad. Si el valor del atributo es el mismo que el valor predeterminado, el valor del atributo en realidad no se guarda. Cuando llega el momento de leer, la función ReadProperty encuentra que no hay contenido en el paquete de propiedades y devuelve el valor predeterminado. Esto puede ahorrar cierta sobrecarga del sistema. Nota: el nombre de una propiedad miembro debe pasarse como una cadena. Cuando internacionalice el control, no cambie el nombre de esta cadena, debe coincidir con el nombre declarado de la propiedad.

Cuando se reinicia el control, debe recargar todos los valores de propiedad guardados. El evento ReadProperties se activa cada vez que se leen los datos del PropertyBag. Durante el procesamiento de este evento, la tarea que debe realizar es cargar el valor de propiedad guardado en la bolsa de propiedades y llamar a la función ReadProperty para lograrlo.

Cabe señalar que la configuración de valores predeterminados en las funciones de lectura y escritura debe ser la misma. Por ejemplo:

m_EyeOpen = PropBag.ReadProperty("EyeOpen", True)

Una forma de sincronizar el valor predeterminado es establecer una constante para él y usarla en su lugar cuando sea necesario Valor específico, para que no tengas que preocuparte por problemas. Por ejemplo:

Private Const m_def_EyeOpen = True

El prefijo "m_def_" generalmente se coloca delante del valor predeterminado constante.

Cuando se activa un control, generalmente es necesario establecer valores iniciales para las propiedades. Esto generalmente se implementa en el evento InitProperties de control de usuario. Este evento ocurre cuando la instancia de control se materializa por primera vez, es decir, cuando la instancia de control se coloca en el formulario, y no volverá a ocurrir durante todo el período de diseño. Usercontrol también tiene un evento Inicializar, que se activa cada vez que se crea una instancia de control. Obviamente, si el proceso de inicialización se coloca en el evento Inicializar, será demasiado frecuente y no será necesario. El diseño de controles ActiveX requiere algunos cambios fundamentales en la forma de pensar. Los eventos críticos a los que es necesario responder a menudo difieren de la programación general. Aquí está el código que queremos implementar:

Private Sub UserControl_InitProperties()

m_EyeOpen = m_def_EyeOpen

End Sub

OK, aquí vamos Ahora que la parte sobre atributos básicamente ha terminado, de lo que vamos a hablar en el próximo artículo es de otro miembro: métodos.

Los eventos se utilizan para notificar a los programadores que utilizan controles que algo ha sucedido para que los programadores puedan manejarlo en consecuencia. Los eventos abundan en la programación de VB. Por ejemplo, un evento Click ocurre cuando el mouse hace clic en un control, un evento Change ocurre cuando cambia el contenido del cuadro de texto, etc. Pero de lo que vamos a hablar aquí es diferente de estas cosas, y también es diferente de los eventos mencionados anteriormente en InitProperties, ReadProperties y WriteProperties, que han sido definidos por el sistema. Lo que tenemos que hacer es definir nuestros propios eventos. Los eventos personalizados deben declararse en la parte de declaración del módulo y luego puede activarlos en cualquier lugar y en cualquier momento siempre que crea que debería haber un evento. Por ejemplo, un evento que representa un parpadeo se declararía así:

Evento público Blink()

Dentro de los corchetes, puede colocar cualquier parámetro que desee pasar al evento. Para un evento Click, este parámetro puede ser las coordenadas xey del clic del mouse. Pero aquí, como simplemente parpadea, no se necesitan parámetros adicionales.

Para desencadenar un evento, debes utilizar el método RaiseEvent. Para nuestro evento de parpadeo, lo asociamos con un temporizador para que pueda parpadear de vez en cuando:

Private Sub Blinker_Timer()

RaiseEvent Blink

End Sub

Así, sin más, se completa un evento, sin trucos ni secretos.

Ahora todo lo que le queda al programa original es escribir el proceso de manejo de eventos correspondiente, de la siguiente manera:

Private Sub BodyControl1_Blink()

Debug.Print "¡Je, ji, parpadeo! "

End Sub

En este punto, se han cubierto la mayoría de los problemas básicos sobre los controles ActiveX. Lo que sigue será contenido más avanzado, incluidas las propiedades de imagen y fuente, el cuadro de diálogo "Acerca de", propiedades de lectura en tiempo de ejecución, etc. Antes de continuar, eche un vistazo al contenido anterior y compréndalo con atención. ¿Estás listo? Bien, ahora comienza el viaje más emocionante.

********************************************* *** ************************************************* **** *************************************

Primero, echemos un vistazo a los atributos y otras cosas que se pueden extraer, como colores o imágenes.

Diseño de atributos avanzado

El valor del color se almacena en una variable entera larga, pero si simplemente define una variable entera larga, obviamente no podrá obtener la proporcionada en el menú Color de vb:

Esto puede parecer complicado, pero en realidad no es nada difícil: todo lo que tienes que hacer es declarar la propiedad como tipo OLE_COLOR, como lo hace el siguiente código:

Propiedad pública Get BackColor () As OLE_COLOR

BackColor = UserControl.BackColor

Propiedad final

Propiedad pública Let BackColor(ByVal New_BackColor As OLE_COLOR)

UserControl .BackColor = New_BackColor

PropertyChanged "BackColor"

End Property

Recuerda que mencioné antes que además de Let, Get , ¿existe un tercer proceso de atributos? Ahora para revelar el misterio: es el proceso de establecer atributos. Al asignar valores a variables de objeto, no se puede usar Let, pero se debe usar Set en su lugar. Esto se debe a que la variable de objeto almacenada dentro del control no almacena una copia del objeto, sino solo una referencia al objeto, que es una dirección de memoria. Para distinguirlo de copiar y guardar variables generales, VB introduce el proceso Establecer propiedad.

Quizás lo sepas: las fuentes y las imágenes se almacenan en objetos y todas tienen sus propios cuadros de diálogo para establecer propiedades relacionadas. Para usar estos cuadros de diálogo, todo lo que tenemos que hacer es declarar la imagen o fuente como un tipo de objeto Imagen o Fuente y establecer el procedimiento Establecer propiedad para ello.

Propiedad pública Obtener fuente() como fuente

Establecer fuente = lblText.Font

Propiedad final

Propiedad pública Establecer fuente(ByVal New_Font As Font)

Set lblText.Font = New_Font

PropertyChanged "Font"

End Property

Mire el código anterior, ¿Estás pensando: Nada es difícil? De hecho, es así de simple. A continuación, veamos cómo crear atributos de solo lectura para claves de control. Este también es un contenido que se utiliza con mayor frecuencia en el diseño de controles.

Atributos de solo lectura

La forma más sencilla es no agregar nada en el proceso de atributos Let/Set. Pero a menudo esto no es suficiente. A veces, es posible que necesite una propiedad de solo lectura en tiempo de ejecución. El llamado tiempo de ejecución, correspondiente al tiempo de diseño, se refiere al control que finalmente se ejecuta en un programa desarrollado, mientras que el tiempo de diseño se refiere al control que se utiliza en el proceso de desarrollo del programa.

Para lograr un tiempo de ejecución de solo lectura, utilice el objeto AmbientProperties de Usercontrol. Proporciona muchas propiedades sobre el contenedor de control. Hay una propiedad UserMode en el control. Cuando el control está en estado de ejecución, el valor de UserMode es verdadero. Al proporcionar detección de UserMode en el proceso Let/Get, es fácil darse cuenta de que la propiedad en ejecución es de solo lectura:

Propiedad pública Obtener MultiLine() As Boolean

MultiLine = m_MultiLine

Propiedad final

Propiedad pública Let MultiLine(ByVal New_MultiLine As Boolean)

Si Ambient.UserMode Entonces

Err.Raise 382

Salir Sub

EndIf

m_MultiLine = New_MultiLine

PropertyChanged "MultiLine"

Propiedad final

Este código protege la propiedad para que no se modifique solo en tiempo de diseño. Si intenta cambiarla en tiempo de ejecución, se producirá el error "La propiedad es de solo lectura en tiempo de ejecución".

Similar al objeto AmbientProperties es el objeto Extender. Para los objetos Extender, es necesario tener un buen conocimiento antes de comenzar a escribir controles. El objeto Extender es una interfaz de enlace tardío a través de la cual los desarrolladores pueden acceder a las propiedades de control mantenidas y controladas por el contenedor de control (en lugar del control en sí). Proporciona algunas propiedades, como Nombre, Habilitar, Izquierda, Superior, Alto, Ancho, etc. La mayoría de ellas aparecen en controles generales. Antes de escribir propiedades de control, debe verificar si ya existen en el objeto Extender. , puedes evitar la duplicación de trabajo también es más eficiente.

Sin embargo, todavía existen algunos problemas con el uso de objetos Extender: no todos los contenedores admiten el acceso a las mismas propiedades de Extender. Por lo tanto, debes tener mucho cuidado al elegir un objeto Extender, de lo contrario el control que crees solo podrá ser utilizado por un contenedor específico. Pero si sólo está desarrollando controles para VB, entonces no tiene que preocuparse por ellos, simplemente utilícelos tanto como sea posible.

Otra cosa a tener en cuenta es que no se puede acceder al objeto Extender en el evento de inicialización del control de usuario, pero se puede usar en los eventos initProperties y ReadProperties.

Enumeración

Al configurar propiedades en un control, usar enumeraciones es una forma muy común. Proporciona una lista desplegable y varias opciones para que usted elija. Esto facilita las operaciones del usuario sin tener que considerar demasiados problemas de compatibilidad y manejo de errores, simplifica la configuración de propiedades y es más seguro.

Primero, se debe crear una estructura de enumeración y colocarla en la parte de declaración. Luego proporcione una serie de constantes y cadenas correspondientes. Un valor constante puede ser cero o cualquier número entero mayor que el valor constante anterior. Si no se proporciona ninguna constante, VB le asigna automáticamente un valor. La primera asignación no especificada es cero y los demás valores son el número anterior más uno:

Public Enum eDirection

. Izquierda

Derecha = 1

Arriba

Abajo

End Enum

Para implementar propiedades de enumeración, debe Cree una propiedad estándar con los procedimientos de propiedad Let y Get. El truco aquí consiste en declarar el tipo de propiedad como el tipo de enumeración dado:

Propiedad pública Obtener dirección() As eDirection

Dirección = m_Direction

Fin Propiedad

Propiedad pública Let Direction(ByVal New_Direction As eDirection)

m_Direction = New_Direction

PropertyChanged "Direction"

Propiedad final

p>

Lo único a tener en cuenta es que la lista de propiedades solo se puede modificar en tiempo de diseño, no en tiempo de ejecución. Otras, como leer, escribir, guardar y recuperar, son iguales que usar propiedades estándar.

Estos son todos los trucos. Increíblemente simple, ¿eh? ¿Tus controles parecen más profesionales?

Objeto Usercontrol

Los controles ActiveX creados con Visual Basic siempre se componen de un objeto UserControl más cualquier control seleccionado y colocado en el UserControl (llamados controles secundarios o controles de componentes). Al igual que un formulario de Visual Basic, un objeto UserControl tiene un módulo de código y un diseñador visual. Coloque los controles del componente en el diseñador del objeto UserControl tal como colocaría controles en un formulario. Cuando coloca una instancia de un control ActiveX en un formulario, crea un objeto UserControl, así como instancias de todos los controles secundarios colocados en el diseñador UserControl.

Estos objetos están encapsulados en controles.

Los objetos UserControl tienen sus propias propiedades, métodos y eventos. Para algunas propiedades, como BorderStyle, BackColor, etc., en lugar de escribir código usted mismo para implementar la propiedad BackColor, es mejor utilizar el objeto UserControl directamente. Esto significa que la propiedad BackColor del control ActiveX simplemente llama a la propiedad BackColor del objeto UserControl. Del mismo modo, puede diseñar el evento Click de su control en función del evento Click existente del objeto UserControl.

De hecho, en el contenido anterior hemos estado tratando todo el tiempo con este objeto, pero tiene algo especial que merece más atención. La mayoría de sus propiedades deben establecerse en el momento del diseño del control. Aquí explico el significado de algunos atributos que son más oscuros y difíciles de entender, y hay algunos que son fáciles de entender de un vistazo, así que no desperdiciaré más palabras.

Propiedad alineable, cuando se establece en verdadero, VB agregará automáticamente una nueva propiedad al control: align. Esto le permite colocar controles en un contenedor como una barra de herramientas y también significa que sus controles se pueden colocar en un programa MDI.

La propiedad CanGetFocus determina si el control de usuario puede obtener el foco en tiempo de ejecución. Cuando desee crear un control gráfico o un control que sea invisible mientras se ejecuta como un temporizador, establezca este valor en Falso. Tenga en cuenta que la propiedad CanGetFocus no se puede establecer en False siempre que el control contenga al menos un control secundario configurado para recibir el foco. Si CanGetFocus se establece en False, ninguno de sus controles secundarios se puede configurar para recibir el foco.

La propiedad ControlContainer define si un control puede contener otros controles como un contenedor de controles como marcos o controles PictureBoxes.

La propiedad DefaultCancel puede agregar propiedades Default y Cancel al control. Después de agregar las propiedades Predeterminado y Cancelar, el control puede actuar como un botón de comando estándar. Es decir, cuando el valor predeterminado está establecido en Verdadero, presionar la tecla Intro activará el evento de clic del control, y cuando la propiedad Cancelar está configurada en Verdadero, presionar la tecla Esc también activará el evento de clic.

Puedes saber si un control es el control predeterminado comprobando la propiedad DisplayAsDefault del objeto AmbientProperties.

InvisibleAtRuntime te permite crear controles como Timer que son invisibles cuando se ejecuta.

Finalmente, la propiedad ToolboxBitmap se utiliza para especificar el icono colocado en la caja de herramientas de VB. El tamaño recomendado por Microsoft es 32x32, pero la práctica ha demostrado que 23x23 o 24x24 funcionan mejor si se escala a ese tamaño y luego se muestra.

Propiedades de propiedades

Es un poco complicado y un poco confuso, ¿verdad? . VB le permite establecer propiedades para cada miembro de un control. Contiene contenido más avanzado que le permite crear controles más especializados. Haga clic en Herramientas | Propiedades del proceso en la barra de menú y aparecerá el siguiente cuadro de diálogo:

Puede ingresar una descripción del control en el cuadro de descripción e ingresar un ID de asociación de ayuda en el identificador de contexto de ayuda. No., asocie su control con un archivo de ayuda, de modo que cuando haga clic en la propiedad y luego presione la tecla F1, pueda proporcionar el contenido de ayuda de esta propiedad.

Utilice el campo Usar esta página en la exploración de propiedades para asignar un número seleccionado a la página de propiedades personalizada del control. De esta manera, cuando el usuario selecciona el miembro desde el navegador de propiedades de VB, VB accederá directamente a la página de propiedades. El campo "Categoría de atributo" permite que los atributos aparezcan en una categoría específica en el modo "Ordenar por categoría" del Explorador de propiedades de VB. Estas categorías incluyen Apariencia, Fuentes, Posición, Varios y más, solo seleccione una. "Ocultar este miembro" puede evitar que el atributo se muestre en el navegador de atributos. Esto es útil para algunos miembros públicos que no desea que los usuarios vean, pero recuerde, solo lo oculta pero no permite su uso. El uso de "No mostrar en el navegador de propiedades" puede eliminar la propiedad del navegador de propiedades cuando se diseña el control (en lugar de en tiempo de ejecución). Como principio general, cualquier propiedad permanente implementada mediante ReadProperties y WriteProperties debe mostrarse en el navegador de propiedades y, a la inversa, no debe mostrarse ninguna propiedad no permanente.

La "Interfaz de usuario predeterminada" se utiliza para establecer las propiedades y métodos predeterminados de las claves de control. Por ejemplo, debido a que el atributo Título es el atributo predeterminado de la tecla de control Etiqueta, el código se puede simplificar

Label1.Caption = "Hola"

se puede abreviar como: <. /p>

Label1 = "Hola"

Finalmente, está la parte sobre el enlace de datos. En VB, las aplicaciones de bases de datos son muy comunes. Utilizando la función de acceso a datos de MS, puede conectar fácilmente las propiedades de control con los campos de la base de datos. Cuando las casillas de verificación "La propiedad está vinculada a datos" y "Vincular propiedad al campo de datos" están seleccionadas, la propiedad puede operar en un modo de clave de vinculación estándar, lo que significa que puede seleccionar el control de la base de datos y los nombres de los campos.

Palabras finales

En este punto, casi la mayor parte del contenido relacionado con los controles de usuario ha sido terminado. Puede comenzar a personalizar los controles apropiados para sus propios programas ahora y dejar que otros compartan sus resultados. Aunque no hay mucho contenido, no es fácil entenderlo completamente. Por lo tanto, todavía es necesario leer más y practicar más. El aprendizaje no tiene fin.

Por supuesto, nada es perfecto, y lo mismo ocurre con los controles ActiveX. Se debe prestar atención al uso razonable de los controles de usuario. Los controles ActiveX pueden volverse complejos fácilmente y, si no tiene cuidado, terminará pagando mucho más de lo que recibe.

Si sólo quieres un objeto con propiedades y métodos, una clase puede ser una mejor opción. La interfaz relativamente compleja entre los controles de usuario y las aplicaciones ocupará más recursos. En términos de programación, los controles son más complejos que las clases. Pero si necesita propiedades, métodos y eventos para implementar el almacenamiento permanente de datos, y este último requiere actualizaciones de componentes fuera del programa, entonces se utilizan controles de usuario. En definitiva, no creas que es una tarea fácil. Aunque estoy hablando muy brevemente aquí, el diseño, escritura, prueba y depuración de un control de usuario completo definitivamente no será menor que el de una aplicación VB general.