Contrôle ActiveX Delphi Deep Exploration-Base de données-Effacer
La puissante fonction de développement de bases de données est sans aucun doute le joyau de Delphi. Au moins 80 % des personnes utilisent Delphi pour développer des programmes de bases de données chaque jour. Basé sur le contrôle de base de données VCL, ainsi que sur les puissants contrôles clairs de bases de données tierces fournis par des sociétés telles que Dev ExPRess et Woll2Woll, il n'est pas exagéré de dire qu'il suffit de définir les propriétés et de faire glisser la souris vers le haut. quelques fois pour compléter la base de données très rapidement. La fonction de base de données de Delphi étant trop puissante, de nombreuses personnes négligent le fait qu'ActiveX peut également fournir une liaison de base de données flexible. Malheureusement, aucun des nombreux contrôles ActiveX tiers fournis par Delphi lui-même n'est adapté aux bases de données, ce qui a indirectement conduit à un malentendu. , ce qui fait croire à tort à de nombreuses personnes que Delphi ne prend pas en charge les contrôles ActiveX avec des données claires (y compris moi il y a longtemps). C’est bien sûr une vision erronée. Utilisation du contrôle ActiveX d'effacement des données dans Delphi Dans l'exemple suivant, nous utiliserons le contrôle Microsoft Calendar 9.0 installé dans le système avec Office 2000 à des fins de démonstration. Il s'agit d'un contrôle d'effacement des données. Sélectionnez Composant | Importer le contrôle ActiveX, sélectionnez Microsoft Calendar 9.0 (voir Figure 1.12 ci-dessous), modifiez le nom de la classe TCalendar en TAXCalendar pour éviter tout conflit avec le contrôle d'origine du même nom dans le système, puis cliquez sur le bouton Installer pour l'installer. contrôle.
Créez un nouveau programme et placez un contrôle TAXCalendar sur le formulaire. Mettez un autre contrôle DataSource et Table. Définissez l'ensemble de données de DataSource sur Table1, puis définissez la propriété DataBaseName de Table1 sur DBDEMOS, la propriété TableName sur EMPLOYEE.DB et enfin définissez la propriété Table1.Active sur True. Ensuite, il est temps de lier la base de données. Notez que le TAXCalendar introduit possède deux propriétés, DataSource et DataBindings, qui sont différentes du contrôle ActiveX général. En effet, l'assistant d'importation ActiveX détermine d'abord s'il s'agit d'un contrôle compatible avec la base de données avant de l'introduire. le contrôle ActiveX. Si tel est le cas, utilisez TDBOleControl comme classe de base pour hériter. Sinon, héritez de TOleControl. Le TDBOleControl implémente les propriétés DataBindings et DataSource. Définissez la propriété AXCalendar1.DataSource sur Datasource1. À ce stade, si nous cliquons avec le bouton droit sur le contrôle TAXCalendar du formulaire, nous trouverons un élément de menu DataBindings... supplémentaire dans le menu contextuel (voir la figure 1.13 ci-dessous).
Après avoir cliqué sur l'élément de menu, la boîte d'édition de l'attribut de liaison de données s'affichera (voir Figure 1.14 ci-dessous). Sélectionnez HireDate dans la zone de liste FieldName, sélectionnez Value(12) dans la zone de liste Property Name (12 est le numéro Dispid de Value) et cliquez sur le bouton Lier pour établir une association de données entre le champ de base de données et la propriété Value.
Enfin, placez un contrôle DBGrid et DBNavigator sur le formulaire et définissez leur DataSource sur DataSource1. Lorsque vous exécutez le programme et déplacez la position actuelle des données, vous pouvez remarquer que l'affichage de la date dans ActiveX changera également en conséquence, conformément à la date d'embauche dans la base de données. Comme le montre la figure 1.15 :
Création de contrôles ActiveX d'effacement des données Bien que nous sachions déjà que Delphi peut effectivement utiliser des contrôles ActiveX d'effacement des données, une nouvelle question se pose. Delphi peut-il créer lui-même des contrôles ActiveX d'effacement des données ? Étant donné que Delphi permet la conversion et la génération de contrôles ActiveX en une seule étape, de nombreuses personnes espèrent convertir les puissants contrôles de base de données de Delphi en contrôles ActiveX afin de pouvoir toujours profiter de la même expérience que dans Delphi lors du développement de programmes de base de données dans d'autres environnements de développement prenant en charge ActiveX. . Le même sentiment de détente et de bonheur. Mais comme je l'ai mentionné dans la première partie, étant donné que le mécanisme interne du contrôle d'effacement des données de Delphi est trop différent de celui du contrôle de base de données ActiveX, Delphi ne peut pas simplement convertir directement son puissant contrôle de base de données. Cela veut-il dire que nous ne pouvons rien faire ? bien sûr que non ! En fait, en utilisant l'éditeur de bibliothèque de types, nous pouvons très facilement implémenter un contrôle ActiveX avec des données claires. Utilisons le contrôle TEdit pour le tester et voir comment le faire. Sélectionnez la commande de menu Nouveau | ActiveX | Contrôle ActiveX pour démarrer l'assistant de conversion de contrôle ActiveX, sélectionnez le contrôle TEdit comme objet de conversion et générez le framework EditX ActiveX. Ensuite, nous transformerons la propriété Text de TEdit pour prendre en charge la liaison de données. Sélectionnez Afficher | Bibliothèque de types pour afficher la bibliothèque de types générée par Delphi, sélectionnez la propriété Text, puis passez à la page de propriétés Flags (voir Figure 1.16 ci-dessous).
Notez qu'il existe de nombreuses cases à cocher sur la page de propriétés Flags. Pour nous, nous nous soucions uniquement des options liées à la liaison de données. Il s’agit des options pouvant être liées, pouvant être reliées par affichage, pouvant être liées par défaut, pouvant être liées immédiatement et demander une modification. Après avoir marqué un attribut comme pouvant être lié et l'avoir lié à un champ de base de données, lorsque l'utilisateur modifie l'attribut, le contrôle informera la base de données que la valeur a changé et demandera à la base de données d'enregistrer l'état de la mise à jour. La base de données indiquera à son tour si la valeur a été modifiée. la mise à jour de l'enregistrement a réussi. L'option Bindable indique que la propriété prend en charge la liaison de données. Si la propriété est marquée comme pouvant être liée, la propriété informera son conteneur lorsque sa valeur change. Request Edit indique que la propriété prend en charge les messages de notification OnRequestEdit, ce qui permet au contrôle de demander au conteneur si la valeur de la propriété peut être modifiée par l'utilisateur. Display Bindable signifie que le conteneur peut montrer à l'utilisateur que cette propriété peut être liée. Default Bindable signifie qu'il s'agit du seul attribut pouvant être lié par défaut. Pour l'utiliser, l'attribut Bindable doit être marqué en même temps. Lorsque Liaison immédiate est marqué, toutes les modifications seront notifiées et les indicateurs pouvant être liés et Demande de modification doivent être définis. Ensuite, nous marquons la propriété Text du contrôle EditX comme Bindable, Display Bindable, Default Bindable et Request Edit. Cliquez ensuite sur le bouton Actualiser pour actualiser la bibliothèque de types, puis sélectionnez Exécuter | Enregistrer le serveur ActiveX pour enregistrer le contrôle ActiveX. Si vous introduisez le nouveau contrôle EditX ActiveX, vous constaterez qu'il implémente la fonction de liaison de données. Ce qui suit est un diagramme du fonctionnement d'un programme EditX qui utilise la suppression des données (l'implémentation de la fonction de suppression des données ActiveX de Delphi est en effet simple. et cool, n'est-ce pas ?