Delphi Deep Exploration-Base de datos-Control ActiveX transparente
La poderosa función de desarrollo de bases de datos es sin duda la joya de la corona de Delphi. Al menos el 80% de las personas utilizan Delphi para desarrollar programas de bases de datos todos los días. Basado en el control de base de datos VCL, así como en los poderosos controles claros de bases de datos de terceros proporcionados por compañías como Dev ExPRess y Woll2Woll, no es exagerado decir que solo necesitamos configurar las propiedades y arrastrar el mouse hacia un varias veces para completar la base de datos muy rápidamente. Debido a que la función de base de datos de Delphi es demasiado poderosa, muchas personas pasan por alto el hecho de que ActiveX también puede proporcionar un enlace flexible a la base de datos. Desafortunadamente, ninguno de los controles ActiveX de terceros proporcionados por Delphi es un control compatible con la base de datos, lo que indirectamente condujo a un malentendido. , lo que hace que muchas personas crean erróneamente que Delphi no admite controles ActiveX con datos claros (incluyéndome a mí hace mucho tiempo). Por supuesto, ésta es una visión errónea. Uso del control ActiveX de borrado de datos en Delphi En el siguiente ejemplo, usaremos el control Microsoft Calendar 9.0 instalado en el sistema con Office 2000 para demostración. Es un control de borrado de datos. Seleccione Componente | Importar control ActiveX, seleccione Microsoft Calendar 9.0 (consulte la Figura 1.12 a continuación), cambie el nombre de la clase de TCalendar a TAXCalendar para evitar conflictos con el control original del mismo nombre en el sistema y luego haga clic en el botón Instalar para instalarlo. control.
Cree un nuevo programa y coloque un control TAXCalendar en el formulario. Ponga otro control DataSource y Table. Establezca el conjunto de datos de DataSource en Table1, luego establezca la propiedad DataBaseName de Table1 en DBDEMOS, la propiedad TableName en EMPLOYEE.DB y, finalmente, establezca la propiedad Table1.Active en True. A continuación, es hora de vincular la base de datos. Tenga en cuenta que el TAXCalendar introducido tiene dos propiedades, DataSource y DataBindings, que son diferentes del control ActiveX general. Esto se debe a que el Asistente de importación ActiveX primero determina si es un control compatible con la base de datos antes de introducirlo. el control ActiveX. Si es así, utilice TDBOleControl como clase base para heredar. Si no, herede de TOleControl. TDBOleControl implementa las propiedades DataBindings y DataSource. Establezca la propiedad AXCalendar1.DataSource en Datasource1. En este momento, si hacemos clic derecho en el control TAXCalendar en el formulario, encontraremos un elemento de menú DataBindings... adicional en el menú contextual (consulte la Figura 1.13 a continuación).
Después de hacer clic en el elemento del menú, se mostrará el cuadro de edición del atributo de enlace de datos (consulte la Figura 1.14 a continuación). Seleccione HireDate en el cuadro de lista Nombre de campo, seleccione Valor (12) en el cuadro de lista Nombre de propiedad (12 es el número Dispid de Valor) y haga clic en el botón Vincular para establecer una asociación de datos entre el campo de la base de datos y la propiedad Valor.
Finalmente, coloque un control DBGrid y DBNavigator en el formulario y establezca su DataSource en DataSource1. Cuando ejecuta el programa y mueve la posición de datos actual, puede notar que la visualización de la fecha en ActiveX también cambiará en consecuencia, de acuerdo con Hiredate en la base de datos. Como se muestra en la Figura 1.15:
Creación de controles ActiveX que eliminan los datos Aunque ya sabemos que Delphi puede usar controles ActiveX que eliminan los datos, surge una nueva pregunta. ¿Puede Delphi crear controles ActiveX que eliminan los datos? Dado que Delphi proporciona conversión y generación de controles ActiveX en un solo paso, muchas personas esperan convertir los potentes controles de bases de datos de Delphi en controles ActiveX para poder seguir disfrutando de la misma experiencia que en Delphi al desarrollar programas de bases de datos en otros entornos de desarrollo que admitan ActiveX. . El mismo sentimiento relajado y feliz. Pero como mencioné en la primera parte, debido a que el mecanismo interno del control de borrado de datos de Delphi es demasiado diferente del control de la base de datos ActiveX, Delphi no puede simplemente convertir directamente su poderoso control de la base de datos. ¿Eso significa que no hay nada que podamos hacer? ¡Por supuesto que no! De hecho, usando el editor de biblioteca de tipos, podemos implementar un control ActiveX con datos claros muy fácilmente. Probémoslo con el control TEdit y veamos cómo hacerlo. Seleccione el comando de menú Nuevo | ActiveX | Control ActiveX para iniciar el Asistente de conversión de controles ActiveX, seleccione el control TEdit como objeto de conversión y genere el marco EditX ActiveX. A continuación, transformaremos la propiedad Texto de TEdit para admitir el enlace de datos. Seleccione Ver | Biblioteca de tipos para ver la biblioteca de tipos generada por Delphi, seleccione la propiedad Texto y luego cambie a la página de propiedades Banderas (consulte la Figura 1.16 a continuación).
Tenga en cuenta que hay muchas casillas de verificación en la página de propiedades Banderas. Para nosotros, solo nos preocupamos por las opciones relacionadas con el enlace de datos. Son las opciones vinculables, vinculables para mostrar, vinculables por defecto, vinculables inmediatas y de solicitud de edición. Después de marcar una propiedad como vinculable y vincularla a un campo de la base de datos, cuando el usuario modifica la propiedad, el control notificará a la base de datos que el valor ha cambiado y solicitará a la base de datos que registre el estado de actualización. La actualización del registro es exitosa. La opción Bindable indica que la propiedad admite el enlace de datos. Si la propiedad está marcada como enlazable, la propiedad notificará a su contenedor cuando cambie su valor. Request Edit indica que la propiedad admite mensajes de notificación OnRequestEdit, lo que permite que el control pregunte al contenedor si el usuario puede modificar el valor de la propiedad. Mostrar vinculable significa que el contenedor puede mostrar al usuario que esta propiedad se puede vincular. Vinculable predeterminado significa que es el único atributo vinculable predeterminado. Para usarlo, el atributo vinculable debe estar marcado al mismo tiempo. Cuando se marca Immediate Bindable, se notificarán todos los cambios y se deberán configurar los indicadores enlazable y Solicitar edición. A continuación marcamos la propiedad Texto del control EditX como Enlazable, Mostrar encuadernable, Enlazable por defecto y Solicitar edición. Luego haga clic en el botón Actualizar para actualizar la biblioteca de tipos y finalmente seleccione Ejecutar | Registrar servidor ActiveX para registrar el control ActiveX. Cuando introduzca el nuevo control EditX ActiveX, encontrará que efectivamente implementa la función de enlace de datos. El siguiente es un diagrama 1.17 del funcionamiento de un programa EditX que utiliza la función de borrado de datos (la implementación de la función de borrado de datos ActiveX de Delphi es de hecho. simple y genial, ¿no?