RAD Studio pour .NET

Transcription

RAD Studio pour .NET
RAD Studio pour .NET
Copyright© 2008 CodeGear™. Tous droits réservés.
RAD Studio pour .NET
Sommaire
Concepts
Développement d'applications de bases de données avec ADO.NET
1
3
Présentation de AdoDbx Client
6
Technologies de bases de données VCL pour .NET
7
Présentation de la mise en pool des connexions BDP
8
Présentation des composants dbExpress
9
Présentation des composants dbGo
10
Types de données AdoDbx.NET
11
Présentation de ADO.NET
14
Présentation de la migration BDP
17
Présentation de Blackfish SQL
20
Concepteurs de composants ADO.NET
22
Déploiement d'applications de bases de données pour le .NET Framework
26
Fournisseurs de données pour Microsoft .NET
27
Présentation des procédures stockées
30
Framework dbExpress
31
Compatibilité du framework dbExpress
33
Introduction à InterBase Express
34
Développement d'applications avec du code non managé
40
Utilisation de l'interopérabilité COM dans les applications managées
40
Utilisation de DrInterop
45
Déploiement des applications Interop COM
46
Utilisation de Platform Invoke avec Delphi pour .NET
46
Interfaces de bibliothèques virtuelles
54
Modélisation
Présentation de la visualisation de code
57
57
Développement d'états pour les applications .NET
59
Utilisation de Rave Reports dans RAD Studio
59
Développement d'applications avec des composants VCL.NET
61
Modifications requises en raison du support 64 bits .NET 2.0
62
Problèmes de langage au sujet du portage d'applications VCL vers RAD Studio
63
Portage d'applications VCL
74
Présentation de VCL pour .NET
76
Portage de clients de services Web
79
iii
RAD Studio pour .NET
Développement d'applications Web avec ASP.NET
Présentation de ASP.NET
84
Présentation des contrôles DB Web CodeGear
87
Utilisation de contrôles DB Web dans les applications maître-détail
89
Présentation de l'API de navigation des contrôles DB Web
91
Présentation de l'expert des contrôles DB Web
92
Utilisation de fichiers XML avec des contrôles DB Web
98
Utilisation des vues de données
100
Déploiement d'applications ASP.NET
101
Utilisation des interfaces WebDataLink
102
Développement de services Web avec ASP.NET
104
Présentation des services Web ASP.NET
104
Pile de protocole de services Web
107
Gestion des services Web ASP.NET
109
Procédures
Procédures de bases de données
iv
82
111
112
Ajout d'une nouvelle connexion à l'explorateur de données
114
Ajout d'un dialogue Erreur de conciliation BDP à votre application BDP
114
Exploration d'une base de données dans l'explorateur de données
116
Connexion à AdoDbx Client
117
Création de projets de base de données dans l'explorateur de données
118
Création de mappages de tables
119
Exécution SQL dans l'explorateur de données
120
Gestion des erreurs dans le mappage de table
121
Migration de données entre des bases de données
122
Modification des connexions dans l'explorateur de données
123
Modification des connexions de bases de données
124
Construction d'une application de base de données résolvant plusieurs tables
130
Passage de paramètres dans une application de base de données
132
Utilisation de la prévisualisation d'adaptateur de données
134
Utilisation de l'éditeur de texte de commande
135
Utilisation du concepteur adaptateur de données
136
Utilisation du concepteur éditeur de connexion
136
Utilisation des ensembles de données standard
137
Utilisation d'ensembles de données typés
141
Connexion à une base de données à l'aide du framework de pilote dbExpress
143
Construction d'une application de base de données distribuée
144
RAD Studio pour .NET
Procédures d'applications interopérables
148
Ajout d'une référence J2EE
148
Ajout d'une référence à un serveur COM
148
Procédures de modélisation
150
Exportation d'un diagramme de visualisation de code en image
150
Importation et exportation d'un modèle avec XMI (XML Metadata Interchange)
151
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code
152
Utilisation de la fenêtre Vue globale
153
Procédures VCL pour .NET
155
Construction d'applications Fiches VCL avec graphiques
158
Construction d'une application Fiches VCL.NET de base de données ADO.NET
158
Construction d'une application Fiches VCL
160
Création d'actions dans une application Fiches VCL
160
Construction d'une application Fiches VCL Hello World
162
Utilisation de ActionManager pour créer des actions dans une application Fiches VCL
163
Conception d'une application Fiches VCL de bases de données dbExpress.NET
164
Construction d'une application avec des composants XML
165
Modifications requises en raison du support 64 bits .NET 2.0
167
Création d'un nouveau composant VCL .NET
170
Affichage d'une image bitmap dans une application Fiches VCL
171
Dessin de rectangles et d'ellipses dans une application Fiches VCL
172
Dessin d'un rectangle arrondi dans une application Fiches VCL
173
Dessin de lignes droites dans une application Fiches VCL
173
Insertion d'une image bitmap dans un contrôle d'une application Fiches VCL
174
Importation de contrôles .NET dans VCL.NET
176
Procédures ASP.NET
178
Conception d'une application ASP .NET
181
Conception d'une application de bases de données ASP.NET
182
Développement d'une application ASP.NET avec des contrôles de base de données, Partie 1
185
Construction d'une application ASP.NET avec des contrôles de base de données, Partie 2
187
Construction d'une application ASP.NET avec des contrôles de base de données, Partie 3
188
Construction d'une application "Hello World" ASP.NET
189
Construction d'un plan de site ASP .NET
190
Création d'une application de porte-documents avec des contrôles DB Web
194
Construction d'une application avec les contrôles DB Web
195
Conversion d'éléments HTML en contrôles serveur
196
Création d'un fichier XML pour des contrôles DB Web
197
v
RAD Studio pour .NET
Création de métadonnées pour un ensemble de données
199
Création d'un répertoire virtuel
200
Ajout de valeurs agrégées avec DBWebAggregateControl
200
Débogage et mise à jour d'applications ASP.NET
201
Déploiement d'une application ASP.NET avec Blackfish SQL vers un système sans RAD Studio
202
Génération de messages HTTP dans ASP.NET
203
Liaison de colonnes dans un contrôle DBWebGrid
203
Définition de permissions pour l'utilisation de fichiers XML
204
Dépannage d'applications ASP.NET
205
Utilisation de l'expert Contrôle DB Web
208
Utilisation du gestionnaire de déploiement ASP.NET
208
Utilisation de l'éditeur de balise HTML
211
Gestion de contrôles utilisateur ASP.NET
213
Procédures de services Web
Accès à une application de services Web "Hello World" ASP.NET
215
Ajout de références Web dans des projets ASP.NET
217
Construction d'une application de services Web "Hello World" ASP.NET
219
Portage d'une application client de services Web Delphi pour Win32 vers Delphi pour .NET
220
Index
vi
215
e
1
RAD Studio pour .NET
1
1 Concepts
Rubriques
Nom
Description
Développement d'applications de bases de données avec ADO.NET (
page 3)
Développement d'applications avec du code non managé (
Modélisation (
see
see page 40)
ADO.NET présente un modèle de programmation cohérent pour exposer l'accès
aux données dans le .NET Framework. Outre la gestion des composants de
connexion MS SQL, Oracle et OLE DB inclus dans le .NET Framework, RAD
Studio intègre les fournisseurs de données pour .NET (fournisseur
AdoDbxClient). AdoDbx gère l'accès à MS SQL, Oracle, DB2 et Interbase. Les
concepteurs de composants AdoDbx simplifient la génération et la configuration
des composants AdoDbx.
Si vous développez de nouvelles applications Fiches VCL pour le .NET
Framework ou si vous migrez des applications Fiches VCL Win32 existantes vers
le .NET Framework, RAD Studio assure une prise... suite ( see page 3)
RAD Studio permet d'exploiter les fonctionnalités .NET supportant le code non
managé.
Si vous avez des composants COM ou ActiveX que vous souhaitez utiliser avec
le .NET Framework, vous pouvez employer les possibilités de COM Interop .NET
depuis RAD Studio lors de la construction de vos applications.
see page 57)
Développement d'états pour les applications .NET (
see page 59)
Développement d'applications avec des composants VCL.NET (
Développement d'applications Web avec ASP.NET (
see page 61)
see page 82)
RAD Studio est livré avec Rave Reports de Nevrona. A l'aide des composants
d'états, vous pouvez construire des états complets pour vos applications. Vous
pouvez construire des solutions incluant des fonctionnalités de génération
d'états, qui pourront être utilisées et personnalisées par vos clients.
VCL.NET est un ensemble étendu des composants VCL qui permettent de
construire rapidement des applications avancées dans Delphi. Avec VCL.NET,
vous pouvez fournir vos applications et composants VCL Delphi aux utilisateurs
de Microsoft .NET Framework. Grâce à RAD Studio, vous disposez des
avantages du .NET Framework, mais aussi de la convivialité et de la puissance
des outils Delphi de développement d'applications orientées composants.
RAD Studio fournit différents types d'applications : vous pouvez créer des
applications Fiche VCL.NET exécutables sur le .NET Framework, qui utilisent
des composants et des contrôles VCL.NET ; vous pouvez créer des applications
.NET qui utilisent les contrôles .NET... suite ( see page 61)
ASP.NET est le modèle de programmation qui permet de concevoir des
applications Web en utilisant .NET Framework. Cette section fournit l'arrière-plan
conceptuel de construction des applications ASP.NET avec RAD Studio. Outre la
gestion des composants d'accès aux données du .NET Framework, RAD Studio
inclut les contrôles DB Web. Les contrôles DB Web fonctionnent avec les
fournisseurs .NET Framework et les fournisseurs de données Borland pour .NET
(BDP.NET) pour accélérer le développement d'applications Web.
1
RAD Studio pour .NET
Développement de services Web avec ASP.NET (
1
2
see page 104)
1
Les services web constituent une entité programmable qui fournit un élément de
fonctionnalité particulier, tel que la logique d'une application. Grâce aux
standards Internet, tels que XML et HTTP, les services web sont accessibles à
un grand nombre de systèmes potentiellement différents. Les applications
conçues avec des services Web ASP.NET peuvent être des applications
autonomes ou des sous-composants d'applications web plus importantes, et
elles peuvent proposer des composants application à des systèmes distribués en
utilisant des messages à base de XML. RAD Studio offre plusieurs méthodes
pour vous aider à concevoir, à déployer et à utiliser des applications avec des...
suite ( see page 104)
1.1 Développement d'applications de
RAD Studio pour .NET
1.1 Développement d'applications de bases de
données avec ADO.NET
ADO.NET présente un modèle de programmation cohérent pour exposer l'accès aux données dans le .NET Framework. Outre la
gestion des composants de connexion MS SQL, Oracle et OLE DB inclus dans le .NET Framework, RAD Studio intègre les
fournisseurs de données pour .NET (fournisseur AdoDbxClient). AdoDbx gère l'accès à MS SQL, Oracle, DB2 et Interbase. Les
concepteurs de composants AdoDbx simplifient la génération et la configuration des composants AdoDbx.
Si vous développez de nouvelles applications Fiches VCL pour le .NET Framework ou si vous migrez des applications Fiches
VCL Win32 existantes vers le .NET Framework, RAD Studio assure une prise en charge continue des technologies de bases de
données Delphi existantes, comme dbExpress et dbGo.
Cette section inclut des informations conceptuelles concernant l'utilisation de RAD Studio avec l'architecture ADO.NET, ainsi
que les technologies de base de données VCL pour .NET et comment construire un simple projet ADO.NET.
Rubriques
Nom
Description
Présentation de AdoDbx Client (
see page 6)
Technologies de bases de données VCL pour .NET (
Types de données AdoDbx.NET (
see page 11)
AdoDbx Client implémente un fournisseur ADO.NET 2.0 pour tous les pilotes
dbExpress version 4 qui implémentent les dernières métadonnées étendues
ajoutées à dbExpress 4. Tous les pilotes dbExpress livrés avec Delphi
implémentent les nouvelles métadonnées étendues.
AdoDbx Client est une implémentation des classes fournisseur ADO.NET 2.0. Le
fournisseur ADO.NET est un ensemble de classes qui fournissent des services
de base de données pour .NET. Il fournit un accès aux bases de données
relationnelles, aux données d'application et XML. Vous pouvez l'utiliser pour
développer des applications de base de données frontales, ainsi que des
applications métier multi-niveaux.
Pour de plus amples... suite ( see page 6)
see page 7)
Dans la plupart des cas, le fournisseur AdoDbxClient offre la meilleure solution
de connectivité de base de données pour vos applications .NET. Toutefois, si
vous développez de nouvelles applications Fiches VCL pour le .NET Framework
ou si vous migrez des applications Win32 Fiches VCL existantes vers le .NET
Framework, RAD Studio continue d'assurer la prise en charge des technologies
Delphi existantes.
RAD Studio permet d'effectuer une migration entre les technologies de bases de
données Delphi strictement exécutées sur des clients Win32 et le .NET
Framework. Outre la possibilité de construire de nouvelles applications de base
de données avec ADO.NET, vous... suite ( see page 7)
Les types de données AdoDbx Client correspondent à des types logiques .NET.
Selon la base de données, les types de données AdoDbx Client sont associés à
des types de données natifs. Quand c'est possible, AdoDbx Client propose :
• Une correspondance des types de données cohérente
entre bases de données.
• Des types de données logiques correspondant à des
types logiques .NET.
Présentation de ADO.NET (
see page 14)
ADO.NET est l'environnement de programmation .NET permettant de concevoir
des applications de bases de données basées sur des formats de données natifs
ou des données XML. ADO.NET est conçu comme un stockage de données
dorsal pour tous les modèles de programmation Microsoft .NET, y compris les
Web Forms et les services Web. Utilisez ADO.NET pour gérer les données dans
.NET Framework.
Remarque: BDP.NET est basé sur ADO.NET 1.1. AdoDbx Client est basé sur
.NET 2.0.
CodeGear propose des outils pour simplifier le développement rapide ADO.NET
grâce aux fournisseurs de données AdoDbx Client et Borland pour .NET
(BDP.NET). Si vous êtes... suite ( see page 14)
3
1
RAD Studio pour .NET
Présentation de la migration BDP (
see page 17)
1.1 Développement d'applications de
BDP (Borland Data Provider, Fournisseur de données Borland) étant en cours de
dépréciation, n'utilisez pas BDP pour vos nouveaux développements. En
revanche, utilisez AdoDbx Client. Cette rubrique décrit les différences et les
équivalences entre BDP et AdoDbx Client.
En conséquence de la dépréciation de BDP :
• BDP sera retiré du produit dans une future release.
• Il n'y aura pas d'autre développement BDP et seulement
un effort de contrôle qualité (QA) minimal. Seuls les
bogues critiques seront corrigés.
• Aucune documentation supplémentaire ne sera fournie et
la documentation existante n'a pas encore été retirée.
BDP était basé sur ADO.NET 1.1. De nombreuses
fonctionnalités... suite ( see page 17)
1
Présentation de Blackfish SQL (
see page 20)
La conception et l'implémentation de Blackfish SQL met l'accent sur les
performances de la base de données, l'évolubilité, la facilité d'emploi et une forte
adhésion aux standards de l'industrie. Voici quelques fonctionnalités de Blackfish
SQL :
• Compatibilité avec les standards de l'industrie
• Niveau d'entrée SQL-92
• Stockage Unicode des données caractère
• Support des clés basées sur Unicode pour le tri et
l'indexation
• Pilotes dbExpress 4 pour Delphi Win32 et C++
• Fournisseurs ADO.NET 2.0 pour .NET
• JDBC pour Java
• Composants d'accès de données JavaBean pour Java
• Transactions distribuées XA/JTA pour Java
• Performances élevées et évolutivité pour les applications
OLTP (demanding online transaction... suite ( see page
20)
Concepteurs de composants ADO.NET (
see page 22)
Déploiement d'applications de bases de données pour le .NET Framework (
see page 26)
4
Presque toutes les applications distribuées se ramènent à lire et actualiser des
informations dans des bases de données. Les applications que vous développez
en utilisant ADO.NET ont des exigences différentes pour manipuler les données.
Vous pouvez, par exemple, développer une application qui affiche simplement
des données dans une fiche. Ou vous pouvez développer une application qui
propose le moyen de partager des informations avec une autre entreprise. Dans
tous les cas, vous devez comprendre certains concepts fondamentaux sur
l'approche des données dans ADO.NET.
En utilisant ces concepteurs, vous pouvez travailler efficacement pour lire,
exposer et modifier des données par l'intermédiaire... suite ( see page 22)
Pour déployer des applications de bases de données avec RAD Studio, copiez
les assemblages d'exécution et les DLL de pilotes pour le déploiement à un
emplacement spécifié. Les sections suivantes indiquent le nom des assemblages
et des DLL et l'emplacement où chacun doit être placé.
1.1 Développement d'applications de
Fournisseurs de données pour Microsoft .NET (
RAD Studio pour .NET
see page 27)
Présentation de AdoDbx Client
En plus de la prise en charge des fournisseurs inclus dans le .NET Framework,
RAD Studio inclut les fournisseurs AdoDbxClient pour Microsoft .NET. AdoDbx
Client est une implémentation du .NET Provider et se connecte à un certain
nombre de bases de données courantes.
Cette rubrique comprend :
• Architecture de fournisseur de données
• Avantages de AdoDbx Client
• AdoDbx Client et les composants ADO.NET
• Fournisseurs AdoDbx Client pris en charge
• Types de données AdoDbx Client
• Interfaces AdoDbx Client
Présentation des procédures stockées (
Framework dbExpress (
see page 30)
see page 31)
Compatibilité du framework dbExpress (
Introduction à InterBase Express (
Toutes les bases de données relationnelles présentent certaines caractéristiques
communes qui permettent aux applications de stocker et de manipuler les
données. Une procédure stockée est un programme autonome écrit dans le
langage propre au système de base de données utilisé. En général, une
procédure stockée gère les tâches très répétitives sur les bases de données et
est particulièrement utile pour les opérations qui s'appliquent à un grand nombre
d'enregistrements ou qui utilisent des fonctions statistiques ou mathématiques.
Les procédures stockées se trouvent généralement sur le serveur de bases de
données.
L'appel d'une procédure stockée est similaire à l'appel d'une commande... suite
( see page 30)
Le framework dbExpress (framework DBX) est un ensemble de classes
abstraites fournies dans l'unité DBXCommon. Les applications peuvent
s'interfacer avec le framework de différentes façons : en utilisant le framework
directement pour les applications natives et managées, et en utilisant les
composants dbExpress VCL disposés en couches au sommet du framework
pour les applications natives et managées.
Bien que de nombreuses applications s'interfacent avec les pilotes dbExpress via
les composants dbExpress VCL, le framework DBX offre une option utile et
légère pour communiquer avec un pilote de base de données. Vous pouvez
également créer un pilote de base de données pour... suite ( see page 31)
see page 33)
see page 34)
Certains logiciels dbExpress développés avant le framework de pilote dbExpress
(framework de pilote DBX) ont été modifiés pour fonctionner avec le framework
de pilote DBX. A cause de ces modifications, certains problèmes de compatibilité
se produisent.
InterBase Express (IBX) est un ensemble de composants d'accès aux données
qui permet d'accéder à des données de bases de données InterBase. Les
composants Administration InterBase, qui requièrent InterBase 6, sont décrits
après les composants d'accès aux données InterBase.
1.1.1 Présentation de AdoDbx Client
AdoDbx Client implémente un fournisseur ADO.NET 2.0 pour tous les pilotes dbExpress version 4 qui implémentent les
dernières métadonnées étendues ajoutées à dbExpress 4. Tous les pilotes dbExpress livrés avec Delphi implémentent les
nouvelles métadonnées étendues.
AdoDbx Client est une implémentation des classes fournisseur ADO.NET 2.0. Le fournisseur ADO.NET est un ensemble de
classes qui fournissent des services de base de données pour .NET. Il fournit un accès aux bases de données relationnelles,
aux données d'application et XML. Vous pouvez l'utiliser pour développer des applications de base de données frontales, ainsi
que des applications métier multi-niveaux.
Pour de plus amples informations, voir .NET Framework Developer's Guide ADO.NET dans la documentation Microsoft.
Voici les classes clé de l'implémentation AdoDbx Client ADO.NET.
• TAdoDbxCommand. Représente une instruction SQL ou une procédure stockée à exécuter sur une source de données.
• TAdoDbxCommandBuilder. Génère des commandes monotables dans le cadre de l'opération de l'objet
5
1
Technologies de bases de données VCL
RAD Studio pour .NET
1.1 Développement d'applications de
TAdoDbxDataAdapter.
• TAdoDbxConnection. Représente une connexion avec une base de données.
• TAdoDbxDataAdapter. Fait office de pont entre un ensemble de données et la base de données sous-jacente.
• TAdoDbxDataReader. Classe permettant de lire les lignes en avant seulement à partir d'une source de données.
• TAdoDbxParameter. Représente un paramètre transmis vers ou depuis une commande.
• TAdoDbxParameterCollection. Collecte les TAdoDbxParameter dans un objet collection .NET pouvant être lu et manipulé.
• TAdoDbxProviderFactory. Classe de base pour l'implémentation des classes de source de données d'un fournisseur.
• TAdoDbxTransaction. Un groupe de commandes pour une connexion pouvant être validé ou annulé.
Voir aussi
Présentation de ADO.NET (
1
see page 14)
Guide ADO.NET du développeur .NET Framework (MSDN)
Connexion à AdoDbx Client (
see page 117)
Déploiement de AdoDbx Client
TAdoDbxCommand
TAdoDbxCommandBuilder
TAdoDbxConnection
TAdoDbxDataAdapter
TAdoDbxDataReader
TAdoDbxParameter
TAdoDbxParameterCollection
TAdoDbxProviderFactory
TAdoDbxTransaction
1.1.2 Technologies de bases de données VCL pour .NET
Dans la plupart des cas, le fournisseur AdoDbxClient offre la meilleure solution de connectivité de base de données pour vos
applications .NET. Toutefois, si vous développez de nouvelles applications Fiches VCL pour le .NET Framework ou si vous
migrez des applications Win32 Fiches VCL existantes vers le .NET Framework, RAD Studio continue d'assurer la prise en
charge des technologies Delphi existantes.
RAD Studio permet d'effectuer une migration entre les technologies de bases de données Delphi strictement exécutées sur des
clients Win32 et le .NET Framework. Outre la possibilité de construire de nouvelles applications de base de données avec
ADO.NET, vous pouvez faire migrer des applications existantes pour profiter des capacités .NET. Les technologies de bases de
données Delphi maintenant gérées par RAD Studio incluent :
• dbExpress.NET
• Client DataSnap .NET (DCOM)
• IBX.NET (InterBase pour .NET)
• ADO.NET
• dbGo
6
1.1 Développement d'applications de
RAD Studio pour .NET
Technologies de bases de données VCL
Construction d'applications .NET avec dbExpress.NET
RAD Studio inclut une version .NET de dbExpress. Cet ensemble de composants fournit des fonctionnalités comparables à
celles des composants dbExpress pour Win32, mais mises à jour pour fonctionner sur des Fiches VCL dans le .NET Framework.
dbExpress pour .NET assure la même prise en charge des clients légers et des ensembles de données unidirectionnels que
dans les versions précédentes du produit.
Construction d'applications .NET avec le client DataSnap .NET (DCOM)
RAD Studio permet d'utiliser le client DataSnap (DCOM) pour la connexion aux bases de données dans les applications à trois
niveaux.
Construction d'applications .NET avec IBX.NET
Outre l'adaptateur de données BDP.NET standard ou les fournisseurs ADO.NET du .NET Framework, RAD Studio vous permet
d'accéder aux bases de données InterBase par le biais de contrôles InterBase Express. Les contrôles IBX.NET vous permettent
d'accéder aux tables et ensembles de données, de vous connecter aux bases de données InterBase, etc.
Construction d'applications .NET avec le fournisseur AdoDbxClient
AdoDbx est un mécanisme d'accès aux données pouvant être partagé entre plusieurs applications. AdoDbx définit une
puissante bibliothèque d'appels API qui peuvent créer, restructurer, récupérer des données du serveur, mettre à jour et
manipuler des serveurs de bases de données locaux ou distants. Ado fournit une interface uniforme permettant d'accéder à une
grande variété de serveurs, en utilisant des pilotes pour se connecter aux différentes bases de données.
Vous pouvez connecter vos applications de bases de données RAD Studio à des bases de données prises en charge par le
BDE, comme Paradox et dBase.
Construction d'applications .NET avec dbGo
RAD Studio inclut une version .NET de dbGo. Cet ensemble de composants fournit des fonctionnalités comparables à celles des
composants dbGo pour Win32, mais mises à jour pour fonctionner sur des Fiches VCL dans le .NET Framework. dbGo pour
.NET assure la même prise en charge des modèles objets puissants et logiques que les versions précédentes du produit.
Rubriques
Nom
Description
Présentation de la mise en pool des connexions BDP (
Présentation des composants dbExpress (
Présentation des composants dbGo (
see page 9)
see page 10)
see page 8)
Vous pouvez utiliser les options de mise en pool des connexions pour diminuer
les temps de connexion. Il vous suffit d'utiliser une des connexions d'un pool
existant. Lorsque vous utilisez BDP, toutes les connexions passent par le
gestionnaire de pools BDP, même si la mise en pool n'est pas activée pour votre
connexion. Pour chaque connexion, vous pouvez spécifier : La mise en pool
(activée ou désactivée), les tailles maximale et minimale des pools, la possibilité
d'augmenter les demandes de connexion selon la demande, ainsi que le délai de
connexion en secondes (ou la durée de vie d'une connexion, en secondes)....
suite ( see page 8)
dbExpress est un ensemble de pilotes de bases de données légers qui
permettent d'accéder rapidement aux serveurs de base de données SQL. Pour
chaque base de données prise en charge, dbExpress fournit un pilote qui adapte
le logiciel serveur à un ensemble d'interfaces dbExpress uniformes. Lorsque
vous déployez une application de base de données qui utilise dbExpress, vous
pouvez être amené à inclure une bibliothèque de liaison dynamique (le pilote
propre au serveur) avec les fichiers d'application que vous créez. Par exemple,
DbxClient est un pilote 100% Delphi et ne nécessite pas de DLL.
dbExpress vous permet d'accéder aux bases... suite ( see page 9)
dbGo offre aux développeurs un modèle objet puissant et logique pour accéder
par programme aux données, les éditer et les mettre à jour à partir d'une grande
variété de sources de données par l'intermédiaire d'interfaces système Microsoft
ADO. L'utilisation la plus courante de dbGo consiste à envoyer une requête à
une ou plusieurs tables d'une base de données relationnelle, pour ensuite
récupérer les résultats dans une application et permettre éventuellement aux
utilisateurs de modifier les données et de sauvegarder leurs modifications.
La couche ADO d'une application ADO comprend la dernière version de
Microsoft ADO, un fournisseur OLE DB ou un... suite ( see page 10)
7
1
Technologies de bases de données VCL
RAD Studio pour .NET
1.1 Développement d'applications de
1.1.2.1 Présentation de la mise en pool des connexions BDP
Vous pouvez utiliser les options de mise en pool des connexions pour diminuer les temps de connexion. Il vous suffit d'utiliser
une des connexions d'un pool existant. Lorsque vous utilisez BDP, toutes les connexions passent par le gestionnaire de pools
BDP, même si la mise en pool n'est pas activée pour votre connexion. Pour chaque connexion, vous pouvez spécifier : La mise
en pool (activée ou désactivée), les tailles maximale et minimale des pools, la possibilité d'augmenter les demandes de
connexion selon la demande, ainsi que le délai de connexion en secondes (ou la durée de vie d'une connexion, en secondes).
1
Comme le montre le diagramme ci-dessus, le gestionnaire de pools BDP crée un pool par chaîne de connexion unique. Les
options de connexion disponibles sont les suivantes.
Options
Fonction
MinPoolSize
Spécifie le nombre minimal de connexions maintenu dans le pool de connexions.
MaxPoolSize
Spécifie le nombre maximal de connexions du pool de connexions. Par défaut, 100 est le nombre
maximal. Si GrowOnDemand a la valeur False et si MaxPoolSize est atteint, les demandes de
connexion suivantes lèvent une exception.
GrowOnDemand
Spécifie si la nouvelle demande de connexion augmente selon la demande lorsque le pool atteint sa
taille maximale.
Les connexions ajoutées à la demande ne sont pas renvoyées au pool de connexions. Elles sont
libérées lors de leur fermeture par BdpConnection.Close().
ConnectionLifetime Détermine la durée de vie d'une connexion faisant partie d'un pool. Une connexion renvoyée au pool
voit sa durée de vie vérifiée pour contrôler que le délai d'expiration n'a pas été atteint. S'il a été atteint,
(Timeout)
la connexion est libérée au lieu d'être renvoyée au pool. La valeur par défaut de ConnectionLifetime,
exprimée en secondes, est 0.
1.1.2.2 Présentation des composants dbExpress
dbExpress est un ensemble de pilotes de bases de données légers qui permettent d'accéder rapidement aux serveurs de base
de données SQL. Pour chaque base de données prise en charge, dbExpress fournit un pilote qui adapte le logiciel serveur à un
ensemble d'interfaces dbExpress uniformes. Lorsque vous déployez une application de base de données qui utilise dbExpress,
vous pouvez être amené à inclure une bibliothèque de liaison dynamique (le pilote propre au serveur) avec les fichiers
d'application que vous créez. Par exemple, DbxClient est un pilote 100% Delphi et ne nécessite pas de DLL.
8
1.1 Développement d'applications de
RAD Studio pour .NET
Technologies de bases de données VCL
dbExpress vous permet d'accéder aux bases de données à l'aide d'ensembles de données unidirectionnels. Ceux-ci ont été
conçus pour un accès léger et rapide aux informations de la base, avec des temps système réduits. Comme les autres
ensembles de données, ils peuvent envoyer une commande SQL au serveur de la base de données et, si la commande
retourne un ensemble d'enregistrements, obtenir un lecteur pour accéder à ces enregistrements. Toutefois, les ensembles de
données unidirectionnels peuvent uniquement récupérer un lecteur unidirectionnel. Ils ne placent pas les données dans un
tampon de mémoire, ce qui les rend plus rapides et moins consommateurs de mémoire que les autres types d'ensembles de
données. Mais, parce qu'ils ne mettent pas les enregistrements dans un tampon, les ensembles de données unidirectionnels
sont moins flexibles que les autres ensembles de données.
Les connexions, les tables, les vues et les procédures stockées dbExpress qui apparaissent dans une vue arborescente de
données prennent en charge les glisser-déposer avec les fiches VCL managées et natives.
Chaînes de connexion
Dans dbExpress 4, toutes les propriétés de connexion, y compris ConnectionString, sont transmises au pilote au moment de la
connexion.
La propriété ConnectionString de dbExpress permet de transmettre toutes les options de base de données et toutes les
informations de connexion (base de données, nom de l'utilisateur, mot de passe) dans une seule et même chaîne de connexion.
Cette fonction permet également d'insérer de nouvelles propriétés dans vos pilotes par modification d'interface, sans changer de
version.
Pour charger ConnectionProperties dans dbxconnections.ini pour la connexion en cours, cliquez avec le bouton droit sur la
connexion et sélectionnez l'élément de menu approprié. Ceci crée un élément Parameters (Parameters['ConnectionString'])
contenant toutes les propriétés de connexion du fichier .ini. De cette manière, vous ajoutez de nouvelles propriétés au fichier
dbxconnections.ini sans avoir à taper vous-même toute la chaîne.
Le menu contextuel SqlConnection propose également la possibilité de supprimer une chaîne de connexion chaque fois que la
propriété ConnectionString est définie.
Composants dbExpress
La section dbExpress de la palette d'outils contient les composants suivants, qui utilisent dbExpress pour accéder aux
informations d'une base de données :
Composant
Fonction
TSQLConnection Encapsule une connexion dbExpress à un serveur de base de données
TSQLDataSet
Représente n'importe quelles données disponibles via dbExpress ou permet d'envoyer des commandes à
une base de données accessible via dbExpress.
TSQLQuery
Un ensemble de données de type requête qui encapsule une instruction SQL et permet aux applications
d'accéder aux enregistrements trouvés, s'il y en a.
TSQLTable
Un ensemble de données de type table qui représente toutes les lignes et colonnes d'une table de base de
données
TSQLStoredProc Un ensemble de données de type procédure stockée qui exécute une procédure stockée définie sur un
serveur de bases de données
TSQLMonitor
Intercepte les messages transmis entre un composant connexion SQL et un serveur de base de données,
et les enregistre dans une liste de chaînes
TSimpleDataSet
Un ensemble de données client qui utilise un TSQLDataSet et un TDataSetProvider internes pour
récupérer des données et appliquer des mises à jour.
Voir aussi
Présentation de VCL pour .NET (
Portage d'applications VCL (
see page 76)
see page 74)
9
1
Types de données AdoDbx.NET
RAD Studio pour .NET
1.1 Développement d'applications de
Déploiement d'applications de bases de données pour le .NET Framework
Conception d'une application Fiches VCL de bases de données dbExpress.NET (
see page 164)
Configuration d'une connexion TSQL
Utilisation de l'explorateur de données pour obtenir des informations de connexion
1.1.2.3 Présentation des composants dbGo
dbGo offre aux développeurs un modèle objet puissant et logique pour accéder par programme aux données, les éditer et les
mettre à jour à partir d'une grande variété de sources de données par l'intermédiaire d'interfaces système Microsoft ADO.
L'utilisation la plus courante de dbGo consiste à envoyer une requête à une ou plusieurs tables d'une base de données
relationnelle, pour ensuite récupérer les résultats dans une application et permettre éventuellement aux utilisateurs de modifier
les données et de sauvegarder leurs modifications.
1
La couche ADO d'une application ADO comprend la dernière version de Microsoft ADO, un fournisseur OLE DB ou un pilote
ODBC pour l'accès au stockage de données, le logiciel client propre au système de base de données utilisé (dans le cas des
bases de données SQL), un système de base de données dorsal accessible à l'application (dans le cas des systèmes de bases
de données SQL) et une base de données. Tous ces éléments doivent être accessibles à l'application ADO pour que celle-ci soit
totalement opérationnelle. Microsoft Data Access Components (MDAC) 2.1 ou une version ultérieure contient ces éléments
nécessaires. RAD Studio prend en charge MDAC 2.8.
La section dbGo de la palette d'outils contient les composants suivants qui utilisent dbGo pour accéder aux informations d'une
base de données :
Composant
Fonction
TADOConnection Encapsule une connexion dbGo à un serveur de base de données
TADODataSet
Représente n'importe quelles données disponibles via dbGo ou envoie des commandes à une base de
données accessible via dbGo.
TADOQuery
Un ensemble de données de type requête qui encapsule une instruction SQL et permet aux applications
d'accéder aux enregistrements résultants, s'il y en a, à partir d'un stockage de données ADO.
TADOTable
Un ensemble de données de type table qui représente toutes les lignes et colonnes d'une table de base de
données
TADOStoredProc Un ensemble de données de type procédure stockée qui exécute une procédure stockée définie sur un
serveur de bases de données
TADOCommand
Représente l'objet Command ADO, qui est utilisé pour l'émission de commandes sur un stockage de
données accessible via un fournisseur ADO
TADODataSet
Représente un ensemble de données lu à partir d'un stockage de données ADO
TRDSConnection Expose la fonctionnalité de l'objet DataSpace RDS
Voir aussi
Présentation de VCL pour .NET (
Portage d'applications VCL (
see page 76)
see page 74)
Déploiement d'applications de bases de données pour le .NET Framework
Construction d'une application Fiches VCL de base de données ADO.NET (
10
see page 158)
1.1 Développement d'applications de
RAD Studio pour .NET
Types de données AdoDbx.NET
1.1.3 Types de données AdoDbx.NET
Les types de données AdoDbx Client correspondent à des types logiques .NET. Selon la base de données, les types de
données AdoDbx Client sont associés à des types de données natifs. Quand c'est possible, AdoDbx Client propose :
• Une correspondance des types de données cohérente entre bases de données.
• Des types de données logiques correspondant à des types logiques .NET.
AdoDbx et .NET Framework
La classe DataSet de ADO.NET utilise les types de données .NET Framework. Les types de données AdoDbx Client
correspondent logiquement à des types de données .NET pour les bases de données gérées. Lors de la conception, vous
pouvez utiliser les types logiques AdoDbx Client qui sont associés aux types natifs appropriés.
Types de données
Le .NET Framework propose un grand nombre de types de données logiques. AdoDbx Client hérite des types de données
logiques et propose une correspondance intégrée pour les bases de données gérées. AdoDbx Client gère la correspondance de
types de données logiques pour DB2, InterBase, MS SQL, MSDE et Oracle.
DB2
AdoDbx Client gère les correspondances de types DB2 suivantes.
Type DB2
Type BDP
Sous-type BDP
System.Type
CHAR
String
stFixed
String
VARCHAR
String
ND
String
SMALLINT
Int16
ND
Int16
BIGINT
Int64
ND
Int64
INTEGER
Int32
ND
Int32
DOUBLE
Double
ND
Double
FLOAT
Float
ND
Single
REAL
Float
ND
Single
DATE
Date
ND
DateTime
TIME
Time
ND
DateTime
TIMESTAMP
DateTime
ND
DateTime
NUMERIC
Decimal
ND
Decimal
DECIMAL
Decimal
ND
Decimal
BLOB
Blob
stBinary
Byte[]
CLOB
Blob
stMemo
Char[]
InterBase
AdoDbx Client gère les mappages de types InterBase suivants.
Type InterBase
Type BDP
Sous-type BDP
System.Type
CHAR
String
stFixed
String
VARCHAR
String
ND
String
11
1
Types de données AdoDbx.NET
RAD Studio pour .NET
1.1 Développement d'applications de
SMALLINT
Int16
ND
Int16
INTEGER
Int32
ND
Int32
FLOAT
Float
ND
Single
DOUBLE
Double
ND
Double
BLOB Sub_Type 0
Blob
stBinary
Byte[]
BLOB Sub_Type 1
Blob
stMemo
Char[]
TIMESTAMP
DateTime
ND
DateTime
MS SQL et MSDE
1
AdoDbx Client gère les correspondances de types MS SQL et MSDE suivantes.
Type MSSQL
Type BDP
Sous-type BDP
System.Type
BIGINT
Int64
ND
Int64
INT
Int32
ND
Int32
SMALLINT
Int16
ND
Int16
TINYINT
Int16
ND
Int16
BIT
Boolean
ND
Boolean
DECIMAL
Decimal
ND
Decimal
NUMERIC
Decimal
ND
Decimal
MONEY
Decimal
ND
Decimal
SMALLMONEY
Decimal
ND
Decimal
FLOAT
Double
ND
Double
REAL
Float
ND
Single
DATETIME
DateTime
ND
DateTime
SMALLDATETIME
DateTime
ND
DateTime
CHAR
String
stFixed
String
VARCHAR
String
ND
String
TEXT
Blob
stMemo
Char[]
BINARY
VarBytes
ND
Byte[]
VARBINARY
VarBytes
ND
Byte[]
IMAGE
Blob
stBinary
Byte[]
TIMESTAMP
VarBytes
ND
Byte[]
UNIQUEIDENTIFIER
Guid
ND
Guid
Oracle
AdoDbx Client gère les correspondances de types Oracle suivantes.
12
Type Oracle
Type BDP
Sous-type BDP
System.Type
CHAR
String
stFixed
String
NCHAR
String
stFixed
String
VARCHAR
String
ND
String
1.1 Développement d'applications de
RAD Studio pour .NET
Présentation de ADO.NET
NVARCHAR
String
ND
String
VARCHAR2
String
ND
String
NVARCHAR2
String
ND
String
NUMBER
Decimal
ND
Decimal
DATE
Date
ND
DateTime
BLOB
Blob
stHBinary
Byte[]
CLOB
Blob
stHMemo
Char[]
LONG
Blob
stMemo
Char[]
LONG RAW
Blob
stBinary
Byte[]
BFILE
Blob
stBFile
Char[]
ROWID
String
ND
String
1
Sybase
AdoDbx Client gère les mappages de types Sybase suivants.
Type Sybase
Type BDP
Sous-type BDP
System.Type
CHAR
String
stFixed
String
VARCHAR
String
ND
String
INT
Int32
ND
Int32
SMALLINT
Int16
ND
Int16
TINYINT
Int16
ND
Int16
DOUBLE PRECISION
Float
ND
Single
FLOAT
Float
ND
Single
REAL
Float
ND
Single
NUMERIC
Decimal
ND
Decimal
DECIMAL
Decimal
ND
Decimal
SMALLMONEY
Decimal
ND
Decimal
MONEY
Decimal
ND
Decimal
SMALLDATETIME
DateTime
ND
DateTime
DATETIME
DateTime
ND
DateTime
IMAGE
Blob
stBinary
Byte[]
TEXT
Blob
stMemo
Char[]
BIT
Boolean
ND
Boolean
TIMESTAMP
VarBytes
ND
Byte[]
BINARY
Octets
ND
Byte[]
VARBINARY
VarBytes
ND
Byte[]
SYSNAME
String
ND
String
Voir aussi
Présentation de ADO.NET (
see page 14)
13
Présentation de ADO.NET
RAD Studio pour .NET
1.1 Développement d'applications de
1.1.4 Présentation de ADO.NET
ADO.NET est l'environnement de programmation .NET permettant de concevoir des applications de bases de données basées
sur des formats de données natifs ou des données XML. ADO.NET est conçu comme un stockage de données dorsal pour tous
les modèles de programmation Microsoft .NET, y compris les Web Forms et les services Web. Utilisez ADO.NET pour gérer les
données dans .NET Framework.
Remarque: BDP.NET est basé sur ADO.NET 1.1. AdoDbx Client est basé sur .NET 2.0.
CodeGear propose des outils pour simplifier le développement rapide ADO.NET grâce aux fournisseurs de données AdoDbx
Client et Borland pour .NET (BDP.NET). Si vous êtes familier du développement rapide d'applications (RAD) et de la
programmation orientée objet en utilisant les propriétés, les méthodes et les événements, vous serez en terrain connu avec le
modèle ADO.NET de conception d'applications. Si vous êtes un programmeur de base de données traditionnel, ADO.NET
propose des concepts familiers, comme les tables, les lignes et les colonnes avec une navigation relationnelle. Les
développeurs XML apprécieront de pouvoir parcourir les mêmes données avec des noeuds, des parents, des frères et des
enfants.
1
Cette rubrique décrit les principaux composants de l'architecture ADO.NET, comment ADO.NET s'intègre avec d'autres modèles
de programmation dans le .NET Framework et les fonctionnalités clés de RAD Studio pour la prise en charge d'ADO.NET.
Cette rubrique présente :
• Architecture ADO.NET
• Interfaces utilisateur ADO.NET
• Espace de nommage BDP.NET
Architecture ADO.NET
Les deux principaux composants de l'architecture ADO.NET sont le fournisseur de données et l'ensemble de données. La
source de données représente une base de données physique ou un fichier XML, le fournisseur de données assure les
connexions et transmet des commandes, l'ensemble de données représente en mémoire une ou plusieurs sources de données.
Pour plus d'informations sur le modèle général ADO.NET, voir la documentation du SDK Microsoft .NET Framework.
Source de données
La source de données est la base de données physique, locale ou distante, ou un fichier XML. Dans la programmation de base
de données traditionnelle, le développeur manipule directement la source de données, ce qui nécessite souvent des interfaces
propriétaires complexes. Avec ADO.NET, le développeur de base de données utilise un jeu de composants pour accéder à la
source de données, pour exposer les données et transmettre des commandes.
Fournisseurs de données
Les composants fournisseur de données assurent la connexion avec la base de données physique ou les fichiers XML en
14
1.1 Développement d'applications de
RAD Studio pour .NET
Présentation de ADO.NET
masquant les détails de l'implémentation. Les fournisseurs peuvent se connecter à une ou plusieurs sources de données,
transmettre des commandes et exposer les données aux ensembles de données.
.NET Framework propose des fournisseurs pour MS SQL, OLE DB et Oracle. Outre la gestion des fournisseurs .NET, ce produit
comprend AdoDbx Client et BDP.NET. Ces fournisseurs de données se connectent à de nombreuses bases de données les
plus courantes du marché, en proposant un environnement de programmation cohérent. Pour plus d'informations, voir la
rubrique Fournisseurs de données Borland pour Microsoft .NET.
Ensemble de données
L'objet ensemble de données représente en mémoire les tables et les relations de une ou plusieurs sources de données.
L'ensemble de données offre une zone de travail temporaire pour manipuler les données. Les applications ADO.NET manipulent
les tables en mémoire, pas dans la base de données physique. L'ensemble de données offre davantage de flexibilité que les
connexions directes avec les bases de données. A l'instar d'un objet ensemble de données typique géré par de nombreux
systèmes de bases de données, l'ensemble de données peut contenir plusieurs tables de données, lesquelles sont des
représentations de tables ou de vues provenant de nombreuses sources de données. L'ensemble de données travaille en mode
asynchrone, non connecté, et transmet ultérieurement des commandes d'actualisation à la source de données via le fournisseur.
RAD Studio vous propose deux types d'ensembles de données : les ensembles de données standard et les ensembles de
données typés. Un ensemble de données standard est l'ensemble de données par défaut que vous obtenez quand vous
définissez implicitement un objet DataSet. Ce type d'ensembles de données est basé sur la disposition des colonnes de votre
source de données, car elles sont renvoyées à l'exécution en fonction de votre instruction Select.
Les ensembles de données typés fournissent davantage de contrôle sur la disposition des données que vous récupérez d'une
source de données. Un ensemble de données typé dérive d'une classe DataSet. Il vous permet d'accéder aux tables et colonnes
par nom plutôt que par les méthodes de collection. Cette fonctionnalité améliore la lisibilité, les caractéristiques d'achèvement du
code et l'application des types de données par rapport aux ensembles de données standard. Le compilateur détecte les
incompatibilités de type des ensembles de données typés lors de la compilation plutôt que pendant l'exécution. En créant un
ensemble de données typé, vous voyez que de nouveaux objets sont automatiquement créés et accessibles par l'intermédiaire
du gestionnaire de projets. Vous voyez aussi deux fichiers nommés d'après votre ensemble de données. Un fichier est un
fichier .xsd XML et l'autre est un fichier de code dans le langage que vous utilisez. Toutes les données concernant votre
ensemble de données, y compris celles sur les tables et colonnes provenant de la connexion de base de données, sont
stockées dans le fichier .xsd. Le fichier de code du programme est créé sur la base du code XML du fichier .xsd. Pour modifier
la structure de l'ensemble de données typé, vous pouvez modifier les éléments du fichier .xsd. Quand vous effectuez la
recompilation, le fichier de code est régénéré à l'aide du XML modifié.
Pour plus d'informations sur les ensembles de données, voir la documentation du SDK de Microsoft .NET Framework.
Interfaces utilisateur ADO.NET
ADO.NET assure l'accès aux données pour divers modèles de programmation .NET.
Web Forms
En ASP.NET les Web Forms constituent une interface commode pour accéder à des bases de données via le Web. ASP.NET
utilise ADO.NET pour assurer les fonctions d'accès aux données.
Les composants de connexion .NET, AdoDbx Client et BDP.NET facilitent l'intégration entre les Web Forms et ADO.NET. Les
contrôles DB Web gèrent à la fois les composants ADO.NET, AdoDbx Client et BDP.NET, accélérant ainsi le développement
des applications web.
Windows Forms
Windows Forms n'est plus supporté.
Espace de nommage AdoDbx Client
Les classes AdoDbx Client se trouvent sous l'espace de nommage Borland.Data.AdoDbxClientProvider.
15
1
Présentation de la migration BDP
RAD Studio pour .NET
1.1 Développement d'applications de
Espace de nommage BDP.NET
Les classes BDP.NET se trouvent sous les espaces de nommage Borland.Data.
Espace de nommage BDP.NET
Espace de nommage
Description
Borland.Data.Common Contient des objets communs à tous les fournisseurs de données Borland, y compris les classes
d'erreur et d'exception, les énumérations de type de données, les options de fournisseur et les
interfaces pour concevoir vos propres classes commande, connexion et curseur.
Borland.Data.Provider
Contient les classes BDP.NET essentielles comme BdpCommand, BdpConnection, BdpDataAdapter
et d'autres qui permettent d'interagir avec des sources de données externes comme les serveurs de
bases de données Oracle, DB2, Interbase et MS SQL Server.
Borland.Data.Schema
Contient les interfaces permettant de construire vos propres classes de manipulation de schéma de
base de données ainsi que divers types et énumérateurs définissant des métadonnées.
1
Voir aussi
Déploiement des applications
Conception d'une application de bases de données ASP.NET (
see page 182)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 185)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 187)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 188)
Conception d'une application de bases de données ASP.NET (
Fournisseurs de données pour Microsoft .NET (
Types de données AdoDbx.NET (
see page 27)
see page 11)
Concepteurs de composants ADO.NET (
see page 22)
Création et utilisation des ensembles de données typés (
Création de mappages de tables (
see page 182)
see page 141)
see page 119)
Guide ADO.NET du développeur .NET Framework (MSDN)
1.1.5 Présentation de la migration BDP
BDP (Borland Data Provider, Fournisseur de données Borland) étant en cours de dépréciation, n'utilisez pas BDP pour vos
nouveaux développements. En revanche, utilisez AdoDbx Client. Cette rubrique décrit les différences et les équivalences entre
BDP et AdoDbx Client.
En conséquence de la dépréciation de BDP :
• BDP sera retiré du produit dans une future release.
• Il n'y aura pas d'autre développement BDP et seulement un effort de contrôle qualité (QA) minimal. Seuls les bogues critiques
seront corrigés.
• Aucune documentation supplémentaire ne sera fournie et la documentation existante n'a pas encore été retirée.
BDP était basé sur ADO.NET 1.1. De nombreuses fonctionnalités différentes de BDP, comme l'indépendance du fournisseur et
16
1.1 Développement d'applications de
RAD Studio pour .NET
Présentation de la migration BDP
les métadonnées étendues, ont été ajoutées à ADO.NET 2 en utilisant différentes approches, incompatibles avec BDP. En
outre, ADO.NET 2 utilise les classes de base abstraites et a déprécié les interfaces ADO.NET 1.1. Cela a rendu difficilement
applicable l'extension de BDP à ADO.NET 2.0.
AdoDbx Client est basé sur ADO.NET 2.0 et fournit la plupart des capacités de BDP.
BDP est constitué de trois espaces de nommage :
Espace de nommage
de BDP
Description
Borland.Data.Common Contient les objets communs à tout BDP.NET, y compris les classes d'erreur et d'exception, les
énumérations de type de données, les options de fournisseur et les interfaces pour concevoir vos
propres classes commande, connexion et curseur.
Borland.Data.Provider
Contient les classes BDP.NET essentielles comme BdpCommand, BdpConnection, BdpDataAdapter,
BdpDataReader et d'autres qui permettent d'interagir avec des sources de données externes comme
les serveurs de bases de données Oracle, DB2, Interbase et MS SQL Server.
Borland.Data.Schema
Contient les interfaces permettant de construire vos propres classes de manipulation de schéma de
base de données ainsi que divers types et énumérateurs définissant des métadonnées.
Ce document décrit la migration pour chacun de ces espaces de nommage.
Migration Borland.Data.Provider
Deux classes de cet espace de nommage fournissent la gestion distante des données et n'ont pas été dépréciées. Elles ne
nécessitent donc pas de migration, ce sont :
• DataHub
• DataSync
Classes correspondantes dans BDP et AdoDbx Client
La plupart des classes BDP de cet espace de nommage sont des implémentations des classes ADO.NET. Ces classes sont
également implémentées dans AdoDbx Client. La plupart du code source utilisant ces classes devrait être converti en AdoDbx
Client avec un effort minimal.
Le tableau suivant présente la correspondance entre les classes ADO.NET, BDP et AdoDbx Client :
ADO.NET
BDP.NET
Client AdoDbx
DbCommand
BdpCommand
TAdoDbxCommand
DbCommandBuilder
BdpCommandBuilder
TAdoDbxCommandBuilder
DbConnection
BdpConnection
TAdoDbxConnection
DbDataAdapter
BdpDataAdapter
TAdoDbxDataAdapter
DbDataReader
BdpDataReader
TAdoDbxDataReader
DbTransaction
BdpTransaction
TAdoDbxTransaction
La conversion des classes BDP de ce groupe est plutôt simple. Consultez la documentation pour voir si la méthode utilisée est
prise en charge dans la classe AdoDbx Client correspondante. Si elle l'est, vous n'avez probablement rien à faire. Si la méthode
n'est pas prise en charge, vous devez alors modifier votre code afin d'utiliser les méthodes prises en charge dans AdoDbx Client
ou ADO.NET lui-même.
Par exemple, la classe BdpDataReader accède aux enregistrements de base de données. La plupart de ses méthodes d'accès
aux données ont des méthodes TAdoDbxDataReader correspondantes, comme décrit à la section ISQLCursor.
BdpDataReader.GetSchemaTable peut être utilisée pour récupérer la métadonnée curseur en tant que DataTable.
17
1
Présentation de la migration BDP
RAD Studio pour .NET
1.1 Développement d'applications de
Reportez-vous à la section ISQLExtendedMetaData et ISQLMetaData pour obtenir la description d'un accès aux métadonnées
pour AdoDbx Client.
Classes BDP sans classes AdoDbx Client correspondantes
La classe BdpCopyTable n'a pas de classe correspondante dans AdoDbx Client. Cette capacité n'est donc pas disponible dans
AdoDbx Client.
Migration Borland.Data.Common
Cet espace de nommage a sept classes et trois interfaces.
BdpConnectionString
La classe TAdoDbxConnection a une propriété ConnectionString. Cette classe prend également en charge le pooling de
connexion.
1
BdpError et BdpErrorCollection
Comme toutes les erreurs sont gérées comme des exceptions dans la classe TAdoDbxException de AdoDbx Client, ces classes
ne sont donc pas nécessaires.
BdpException, BdpParameter et BdpParameterCollection
Ces classes sont des implémentations des classes ADO.NET. Ces classes sont également implémentées dans AdoDbx Client.
La plupart du code source utilisant ces classes devrait être converti en AdoDbx Client avec un effort minimal.
La conversion des classes BDP de ce groupe est plutôt simple. Consultez la documentation pour voir si la méthode utilisée est
prise en charge dans la classe AdoDbx Client correspondante. Si elle l'est, vous n'avez probablement rien à faire. Si la méthode
n'est pas prise en charge, vous devez alors modifier votre code afin d'utiliser les méthodes prises en charge dans AdoDbx Client
ou ADO.NET lui-même.
Le tableau suivant présente la correspondance entre les classes ADO.NET, BDP et AdoDbx Client :
ADO.NET
BDP.NET
Client AdoDbx
DbException
BdpException
TAdoDbxException
DbParameter
BdpParameter
TAdoDbxParameter
DbParameterCollection
BdpParameterCollection
TAdoDbxParameterCollection
DbResolver
DbResolver est une implémentation de l'interface ISQLResolver de l'espace de nommage Borland.Data.Schema, décrite plus
loin dans cette rubrique.
ISQLCommand, IAQLConnection et ISQLCursor
Ces interfaces sont principalement utilisées par les concepteurs de pilotes et il n'y a pas d'équivalent AdoDbx Client. Vous
devrez réécrire le pilote à l'aide du framework dbExpress.
Migration Borland.Data.Schema
Cet espace de nommage contient cinq interfaces.
ISQLDataSource
La méthode GetProviders renvoie une liste des fournisseurs de données. Une capacité similaire est fournie par
TAdoDbxProviderFactory.CreateDataSourceEnumerator, qui crée un énumérateur pour tous les fournisseurs. Il n'y a pas
18
1.1 Développement d'applications de
RAD Studio pour .NET
Présentation de la migration BDP
d'analogie pour les méthodes GetConnections et GetDbObjectTypes dans AdoDbx Client.
ISQLExtendedMetaData et ISQLMetaData
Utilisez la méthode GetSchema de TAdoDbxConnection pour obtenir une collection de métadonnées. Le paramètre Name de
GetSchema spécifie le type de métadonnée à obtenir. Les noms standard supportés par DbConnection.GetSchema sont pris en
charge dans AdoDbx Client.
En outre, vous pouvez spécifier une des constantes de nom dans TDBXMetaDataCollectionName pour obtenir une collection de
métadonnées particulière. Vous pouvez ensuite utiliser la classe correspondante dans l'espace de nommage
DBXMetaDataNames pour obtenir les informations de colonne que vous voulez pour cette collection de métadonnées.
Par exemple, pour obtenir le code source de procédure d'une base de données, utilisez la constante ProcedureSources pour
obtenir un DataTable avec les informations de source de procédure. Utilisez les classes TDBXProcedureSourcesColumns et
TDBXProcedureSourcesIndex de DBXMetaDataNames avec le DataTable renvoyé pour accéder aux informations de source de
procédure par nom ou ordinal.
ISQLResolver
Cette classe résout les commandes SQL.
L'analogie la plus proche est la classe TAdoDbxDataAdapter pour les méthodes ISQLResolver. Ce tableau présente les
propriétés qui correspondent aux méthodes.
ISQLResolver
TAdoDbxDataAdapter
Méthode GetDeleteSQL
Propriété DeleteCommand
Méthode GetInsertSQL
Propriété InsertCommand
GetSelectSQL
Propriété SelectCommand
GetUpdateSQL
Propriété UpdateCommand
Pour les propriétés ISQLResolver, les analogies les plus proches sont les propriétés que TAdoDbxCommandBuilder hérite de la
classe ADO.NET DbCommandBuilder et une propriété TAdoDbxDataReader.
ISQLResolver
Client AdoDbx
Propriété QuotePrefix
Propriété TAdoDbxCommandBuilder.QuotePrefix
Propriété QuoteSuffix
Propriété TAdoDbxCommandBuilder.QuoteSuffix
Propriété Row
Propriété TAdoDbxDataReader.Item
ISQLSchemaCreate
Cette interface vous permet de créer un schéma de base de données dans votre propre fournisseur. Le client AdoDbx n'offre
pas cette capacité.
Voir aussi
Présentation de ADO.NET (
see page 14)
Guide ADO.NET du développeur .NET Framework (MSDN)
TAdoDbxCommand
TAdoDbxCommandBuilder
TAdoDbxConnection
19
1
Présentation de Blackfish SQL
RAD Studio pour .NET
1.1 Développement d'applications de
TAdoDbxDataAdapter
TAdoDbxDataReader
TAdoDbxException
TAdoDbxParameter
TAdoDbxParameterCollection
TAdoDbxProviderFactory
TAdoDbxTransaction
TDBXMetaDataCollectionName
1
1.1.6 Présentation de Blackfish SQL
La conception et l'implémentation de Blackfish SQL met l'accent sur les performances de la base de données, l'évolubilité, la
facilité d'emploi et une forte adhésion aux standards de l'industrie. Voici quelques fonctionnalités de Blackfish SQL :
• Compatibilité avec les standards de l'industrie
• Niveau d'entrée SQL-92
• Stockage Unicode des données caractère
• Support des clés basées sur Unicode pour le tri et l'indexation
• Pilotes dbExpress 4 pour Delphi Win32 et C++
• Fournisseurs ADO.NET 2.0 pour .NET
• JDBC pour Java
• Composants d'accès de données JavaBean pour Java
• Transactions distribuées XA/JTA pour Java
• Performances élevées et évolutivité pour les applications OLTP (demanding online transaction processing) et DSS (decision
support system)
• Déclencheurs et procédures stockées Delphi, C# et VB.NET pour Windows
• Déclencheurs et procédures stockées Java
• Administration zéro, assemblage unique et déploiement jar unique
• Basculement automatique et sauvegarde incrémentielle des bases de données
Blackfish SQL DataStore
Blackfish SQL est le nom du produit, ses outils et le format de fichier. Dans ce produit, un package datastore comprend une
classe DataStore, ainsi que plusieurs classes supplémentaires ayant DataStore dans leur nom. ish SQL Blackfish SQL pour
Windows et Blackfish SQL pour Java sont très compatibles entre eux. Le format de fichier de base de données a une
compatibilité binaire entre Blackfish SQL pour Windows et Blackfish SQL pour Java. De plus, les serveurs et les clients de bases
de données sont interchangeables. Les clients Windows peuvent se connecter aux serveurs Java, et les clients Java peuvent se
connecter aux serveurs Windows.
Puisque l'implémentation de Blackfish SQL pour Windows est plus récente, certaines fonctionnalités Blackfish SQL pour Java ne
sont pas encore supportées. Les fonctionnalités suivantes ne sont pas supportées :
• Interpréteur en ligne de commande ISQL SQL
• Fonctionnalités à haute disponibilité, dont le basculement automatique et la sauvegarde incrémentielle
20
1.1 Développement d'applications de
RAD Studio pour .NET
Concepteurs de composants ADO.NET
• Outils graphiques pour les fonctionnalités administratives
• Accès aux flux d'objets et de fichiers
• Suivi et résolution des opérations de suppression, de mise à jour et d'insertion de niveau ligne
• Accès au répertoire système de fichiers Blackfish SQL
Connectivité Blackfish SQL
Cette section offre un aperçu des pilotes de connexion fournis respectivement pour Blackfish SQL pour Windows et Blackfish
SQL pour Java. Pour obtenir des instructions sur l'utilisation des pilotes pour la connexion à une base de données Blackfish
SQL, voir le , Guide du développeur Blackfish SQL.
Connectivité Blackfish SQL pour Windows
1
Blackfish SQL pour Windows fournit les pilotes de connexion suivants :
• DBXClient : C'est un pilote de base de données dbExpress 4 Win32 permettant aux applications Delphi Win32 et C++ de se
connecter à un serveur distant Blackfish SQL pour Windows ou Blackfish SQL pour Java.
• Fournisseur ADO.NET 2.0 local : C'est un pilote de code 100% managé permettant aux applications .NET de se connecter
à un serveur local Blackfish SQL pour Windows. Le pilote ADO.NET local s'exécute dans le même processus que le noyau de
base de données BlackFishSQL, afin d'en augmenter les performances.
• Fournisseur ADO.NET 2.0 distant : C'est un pilote de code 100% managé permettant aux applications .NET d'acquérir une
connexion distante au serveur Blackfish SQL pour Windows ou Blackfish SQL pour Java.
Connectivité Blackfish SQL pour Java
Blackfish SQL pour Java fournit les pilotes de connexion JDBC suivants :
• Pilote JDBC local : C'est un pilote de code 100% managé permettant aux applications Java de se connecter à un serveur
local Blackfish SQL pour Java. Le pilote JDBC local s'exécute dans le même processus que le noyau de base de données
BlackFishSQL, afin d'en augmenter les performances.
•
Pilote JDBC distant : C'est un pilote de code 100% managé permettant aux applications Java d'acquérir une connexion
distante au serveur Blackfish SQL pour Windows ou Blackfish SQL pour Java.
Voir aussi
Le Guide du développeur Blackfish SQL
ConnectionProperties
DataStoreErrorCode
1.1.7 Concepteurs de composants ADO.NET
Presque toutes les applications distribuées se ramènent à lire et actualiser des informations dans des bases de données. Les
applications que vous développez en utilisant ADO.NET ont des exigences différentes pour manipuler les données. Vous
pouvez, par exemple, développer une application qui affiche simplement des données dans une fiche. Ou vous pouvez
développer une application qui propose le moyen de partager des informations avec une autre entreprise. Dans tous les cas,
vous devez comprendre certains concepts fondamentaux sur l'approche des données dans ADO.NET.
En utilisant ces concepteurs, vous pouvez travailler efficacement pour lire, exposer et modifier des données par l'intermédiaire
d'objets de schémas propres au serveur de base de données comme les tables, les vues et les index. Ces concepteurs vous
permettent d'utiliser ces objets de schéma pour vous connecter à différentes bases de données courantes et d'effectuer des
opérations de bases de données d'une manière cohérente et fiable.
21
Concepteurs de composants ADO.NET
RAD Studio pour .NET
1.1 Développement d'applications de
Cette rubrique comprend :
• Relations de concepteur de composant
• Editeur de connexions
• Editeur de texte de commande
• Boîte de dialogue Procédure stockée
• Génération d'ensembles de données
• Configuration d'adaptateur de données
• Explorateur de données
Relations de concepteur de composant
1
ANCIENNE IMAGE
NOUVELLE IMAGE
Les principaux éléments des concepteurs de composants de bases de données sont les suivants :
• L'éditeur de connexion permet de définir une connexion dynamique à une source de données
• La fenêtre Editeur de texte de commande permet de construire du texte de commande pour des composants de
commandes.
• La boîte de dialogue de configuration de l'adaptateur de données permet de configurer des commandes pour un
adaptateur de données.
• La boîte de dialogue Procédure stockée permet de visualiser et d'indiquer des valeurs pour les paramètres Input ou
InputOutput à utiliser avec les composants de commandes.
• La boîte de dialogue de génération d'un ensemble de données est utilisée pour construire des ensembles de données
personnalisés.
• L'explorateur de données vous permet de parcourir les objets de schémas spécifiques aux serveurs de bases de données
et d'utiliser le glisser-déplacer pour remplir automatiquement de données une source de données de votre projet Delphi pour
.NET.
Editeur de connexions
L'éditeur de connexion gère les chaînes de connexion et les options de connexion propres aux bases de données. Au moyen
de l'éditeur de connexions, vous pouvez ajouter, retirer, supprimer, renommer et tester vos connexions de bases de données.
Les modifications apportées aux informations de connexion sont enregistrées dans le fichier ADoDbxConnections.xml, où
elles sont accessibles dès que vous devez créer un nouvel objet de connexion. Lorsque vous avez choisi une connexion
particulière, l'éditeur de connexions génère la chaîne de connexion ainsi que toutes les options de connexion, puis les affecte
respectivement aux propriétés ConnectionString et ConnectionOptions.
Affichez la boîte de dialogue Editeur de connexions en faisant glisser le composant TAdoDbxConnection de la palette d'outils
vers la fiche, puis en cliquant sur le verbe du concepteur de composants dans le bas de l'inspecteur d'objets.
22
1.1 Développement d'applications de
RAD Studio pour .NET
Concepteurs de composants ADO.NET
Editeur de texte de commande
L'éditeur de texte de commande peut être utilisé pour construire le texte de commande pour les composants commande qui
possèdent une propriété CommandText. Un contrôle d'édition multiligne de l'éditeur vous permet d'éditer manuellement la
commande ou de construire le texte de la commande en sélectionnant des tables ou des colonnes. Affichez la boîte de dialogue
Editeur de texte de commande en faisant glisser le composant TAdoDbxCommand de la palette d'outils vers la fiche, puis en
cliquant sur le verbe du concepteur dans le bas de l'inspecteur d'objets.
L'éditeur de texte de commande est une version simplifiée d'un concepteur SQL capable de générer du code SQL pour une
table unique. Les objets de bases de données sont filtrés par la propriété SchemaName définie dans ISQLSchemaCreate et
seules les tables faisant partie de ce schéma sont utilisées. Si aucune propriété SchemaName n'est listée, tous les objets
disponibles pour l'utilisateur de la connexion en cours sont listés. Le paramètre QuoteObjects de la propriété ConnectionOptions
détermine si les objets sont délimités par le caractère guillemet spécifique aux bases de données. Par exemple, ceci est
important lors de la récupération de tables à partir de bases de données qui autorisent les espaces dans les noms de tables.
Pour remplir les boîtes listes Tables et Colonnes avec des éléments ou construire des instructions SQL, vous devez avoir défini
une connexion TAdoDbxConnection active. Sinon, les données ne sont pas récupérables. L'éditeur de texte de commande
vous permet de choisir des noms de colonne et de table dans la liste des colonnes et des tables disponibles. A l'aide de ces
informations, l'éditeur génère une instruction SQL. Pour générer l'instruction SQL, l'éditeur utilise une instance de la classe
TAdoDbxCommandBuilder. Lorsque vous demandez le SQL optimisé, l'éditeur utilise les informations d'index pour générer la
clause WHERE pour les instructions SELECT, UPDATE et DELETE ; sinon, la clause WHERE est constituée par les colonnes
non BLOB et les colonnes autorisant les recherches.
Lorsque l'instruction SQL est générée, la propriété TAdoDbxCommand. CommandText est définie sur l'instruction SQL générée.
Boîte de dialogue Procédure stockée
La boîte de dialogue Procédure stockée est utilisée pour visualiser et entrer des paramètres Input et InputOutput pour une
procédure stockée et pour exécuter cette procédure. Affichez la boîte de dialogue Procédure stockée en faisant glisser un
composant TAdoDbxCommand de la palette d'outils vers la fiche, en réglant la propriété CommandType du composant
TAdoDbxCommand sur StoredProcedure, puis en cliquant sur le verbe du concepteur Editeur de texte de commande dans la
partie inférieure de l'inspecteur d'objet.
La boîte de dialogue Procédure stockée vous permet de sélectionner une procédure stockée à partir d'une liste des procédures
stockées disponibles, qui est déterminée par le TAdoDbxConnection spécifié dans la propriété Connection pour le composant
TAdoDbxCommand. Lorsque vous sélectionnez une procédure stockée, la boîte de dialogue affiche les paramètres associés à
la procédure stockée et les métadonnées des paramètres pour le paramètre sélectionné. Vous pouvez spécifier des valeurs
pour les paramètres Input ou InputOutput et exécuter la procédure stockée. Si la procédure stockée renvoie des résultats,
comme des paramètres Output, des paramètres InputOutput, des valeurs de retour, un (ou plusieurs) curseur(s) de retour, ils
sont tous remplis dans un DataGrid en bas de la boîte de dialogue lorsque la procédure stockée est exécutée. Après
l'initialisation des propriétés CommandText et Parameters pour TAdoDbxCommand, la procédure stockée peut être exécutée
lors de l'exécution au moyen d'un seul appel à la méthode ExecuteReader or ExecuteNonQuery.
Génération d'ensembles de données
Le concepteur Génération d'un ensemble de données est utilisé pour construire un ensemble de données. L'utilisation de cet
outil a pour résultat un typage strict, un code plus clair et la possibilité d'utiliser l'achèvement de code. Un ensemble de données
dérive d'abord de la classe de base DataSet puis utilise les informations d'un fichier schéma XML (un fichier .xsd) pour générer
une nouvelle classe. Les informations du schéma (tables, colonnes, etc.) sont générées et compilées dans cette nouvelle classe
dataset comme un ensemble de propriétés et d'objets "first-class". Affichez cette boîte de dialogue en faisant glisser un
composant TAdoDbxDataAdapter de la palette d'outils vers la fiche, puis en cliquant sur le verbe du concepteur de composants
dans le bas de l'inspecteur d'objet. Si ce composant n'est pas affiché, choisissez Composants Composants .NET installés
pour l'ajouter à la palette d'outils.
23
1
Concepteurs de composants ADO.NET
RAD Studio pour .NET
1.1 Développement d'applications de
Configuration d'adaptateur de données
Le concepteur de configuration de l'adaptateur de données est utilisé pour générer les instructions SQL SELECT, INSERT,
UPDATE et DELETE. Après une génération SQL réussie, le concepteur Configuration de l'adaptateur de données crée de
nouveaux objets TAdoDbxCommand et les ajoute aux propriétés TAdoDbxDataAdapterSelectCommand, DeleteCommand,
InsertCommand et UpdateCommand.
Après une génération réussie d'une instruction SELECT de SQL, vous pouvez prévisualiser les données et générer un nouveau
DataSet. Vous pouvez également utiliser un DataSet existant pour remplir un nouveau DataTable. Si vous créez un nouveau
DataSet, il sera ajouté automatiquement à l'hôte du concepteur. Vous pouvez également générer des DataSet typés.
Les adaptateurs de données font partie intégrante des fournisseurs ADO.NET managés. Essentiellement, les adaptateurs sont
utilisés pour échanger des données entre une source de données et un ensemble de données. Cela veut dire lire les données
depuis une base de données dans un ensemble de données, et écrire dans la base de données les données modifiées dans
l'ensemble de données. Un adaptateur de données peut déplacer les données entre toute source et un ensemble de données.
Affichez la boîte de dialogue de configuration de l'adaptateur de données en faisant glisser un composant
TAdoDbxDataAdapter de la palette d'outils vers la fiche, puis en cliquant sur le verbe du concepteur de composants dans le
bas de l'inspecteur d'objets.
1
Explorateur de données
L'explorateur de données est un navigateur de base de données hiérarchique et un outil d'édition. L'explorateur de données
est intégré dans l'EDI et peut également être exécuté comme un exécutable autonome. Pour accéder à l'explorateur de
données de l'EDI, choisissez Voir Explorateur de données. Utilisez les menus contextuels de l'explorateur de données
pour effectuer les tâches suivantes :
• Gérer les connexions de base de données — ajouter une nouvelle connexion, modifier, supprimer ou renommer vos
connexions existantes
• Parcourir la structure de la base de données et les données, étendre et ouvrir les noeuds des fournisseurs pour parcourir les
objets de schémas propres aux serveurs de bases de données, notamment les tables, les vues, les définitions de procédures
stockées et les index
• Ajouter et modifier des tables — spécifier la structure des données pour une nouvelle table, ajouter ou supprimer des
colonnes et modifier les informations de colonnes pour une table existante
• Visualiser et tester les paramètres de procédures stockées — spécifier les valeurs pour les paramètres Input ou InputOutput
et exécuter la procédure stockée sélectionnée
• Migrer des données — migrer le schéma des tables et les données d'une ou plusieurs tables d'un fournisseur vers un autre
• Glisser et déplacer des objets de schémas sur des fiches pour simplifier le développement des applications, glisser des tables
ou des procédures stockées sur la fiche de votre application pour le .NET Framework afin d'ajouter des composants de
connexion et de générer automatiquement des chaînes de connexion
L'explorateur de données fournit une connectivité à plusieurs bases de données standard et peut être étendu pour se
connecter à d'autres bases de données courantes. L'explorateur de données utilise l'interface ISQLDataSource pour obtenir
la liste des fournisseurs disponibles, des connexions de bases de données et des objets schéma qui sont pris en charge par
les divers fournisseurs. La liste des fournisseurs disponibles est persistante dans le fichier TAdoDbxDataSources.xml et
les connexions disponibles sont persistantes dans le fichier TAdoDbxConnections.xml. Lorsque vous avez choisi un
fournisseur, l'interface ISQLMetadata est utilisée pour récupérer les métadonnées et afficher une vue arborescente en lecture
seule des objets de bases de données. L'implémentation en cours fournit une liste des tables, vues et procédures stockées
pour toutes les bases de données prises en charge par AdoDbx Client.
L'explorateur de données vous permet de créer de nouvelles tables, de modifier ou déplacer des tables existantes, de migrer
des données à partir de plusieurs tables d'un fournisseur vers un autre et de copier et coller des tables individuelles dans les
bases de données ADO prises en charge. Pour toutes ces opérations, l'explorateur de données appelle l'implémentation
ISQLSchemaCreate du fournisseur.
De plus, l'explorateur de données peut être utilisé pour faire glisser des données depuis une source de données vers n'importe
quel projet RAD Studio pour le .NET Framework. Faire glisser une table sur une fiche ajoute les composants
TAdoDbxConnection et TAdoDbxDataAdapter à votre application et configure automatiquement le TAdoDbxDataAdapter pour
24
1.1 Développement d'applications de
RAD Studio pour .NET
Déploiement d'applications de bases de
la table donnée. Faire glisser une procédure stockée sur une fiche ajoute les composants TAdoDbxConnection et
TAdoDbxCommand à votre application, et affecte la valeur StoredProcedure à la propriété CommandType de l'objet
TAdoDbxCommand.
Voir aussi
Présentation de ADO.NET (
see page 14)
Types de données AdoDbx.NET (
see page 11)
Utilisation du concepteur de texte de commande (
Utilisation du concepteur éditeur de connexion (
see page 135)
see page 136)
Utilisation du concepteur adaptateur de données (
see page 136)
Utilisation de la prévisualisation d'adaptateur de données (
Utilisation du concepteur d'ensemble de données (
Migration de données entre des bases de données (
Création de mappages de tables (
see page 134)
1
see page 141)
see page 122)
see page 119)
1.1.8 Déploiement d'applications de bases de données pour
le .NET Framework
Pour déployer des applications de bases de données avec RAD Studio, copiez les assemblages d'exécution et les DLL de
pilotes pour le déploiement à un emplacement spécifié. Les sections suivantes indiquent le nom des assemblages et des DLL et
l'emplacement où chacun doit être placé.
Déploiement des applications ADO.NET 2.0
Pour de plus amples informations, voir le fichier source Borland.Data.AdoDbxClientProvider.pas.
Déploiement d'applications BDP.NET
Copiez les assemblages d'exécution de bases de données spécifiques à l'emplacement suivant :
Assemblages managés
Fournisseur de données
Emplacement
Borland.Data.Common.dll
Tous
GAC
Borland.Data.Provider.dll
Tous
GAC
Borland.Data.DB2.dll
DB2
GAC
Borland.Data.Interbase.dll
Interbase
GAC
Borland.Data.Mssql.dll
MS SQL/MSDE
GAC
Borland.Data.Oracle.dll
Oracle
GAC
Borland.Data.Msacc.dll
MS Access
GAC
Borland.Data.Sybase.dll
Sybase
GAC
Remarque: Si vous déployez une application de base de données distribuée utilisant les composants distants BDP.NET, tels
que DataHub, DataSync, RemoteConnection et RemoteServer, vous devez installer Borland.Data.DataSync.dll
dans le GAC. Copiez les DLL des pilotes de bases de données non managées à l'emplacement suivant :
25
Déploiement d'applications de bases de
RAD Studio pour .NET
1.1 Développement d'applications de
DLL
Fournisseur de données
Emplacement
bdpint20.dll
Interbase
chemin de recherche
bdpdb220.dll
DB2
chemin de recherche
bdpmss20.dll
MS SQL/MSDE
chemin de recherche
bdpora20.dll
Oracle
chemin de recherche
bdpmsa20.dll
MS Access
chemin de recherche
bdpsyb20.dll
Sybase
chemin de recherche
Déploiement d'applications dbExpress pour .NET
1
Copiez les assemblages d'exécution de bases de données spécifiques à l'emplacement suivant :
Assemblages managés
Fournisseur de données
Emplacement
Borland.VclDbExpress.dll
Tous
GAC
Borland.VclDbCtrls.dll
Tous
GAC
Borland.VclDbxCds.dll
Requis par les applications de bases de données qui GAC
utilisent des ensembles de données client
Borland.Common.Driver.dll
Tous
GAC
Vous pouvez déployer les pilotes dbExpress.NET et les DLL associés avec votre exécutable. Copiez les DLL des pilotes de
bases de données non managées à l'emplacement suivant :
DLL
Fournisseur de données
Emplacement
dbxINT30.dll
InterBase 2007, 7.5.1, 7.1*, 7.0*, 6.5*
chemin de recherche
dbxASA30.dll
Adaptive Sybase Anywhere 9, 8*
chemin de recherche
dbxDB230.dll
DB2 UDB 8.x, 7.x*
chemin de recherche
dbxINF30.dll
Informix 9.x
chemin de recherche
dbxMSS30.dll
MSSQL 2005, 2000
chemin de recherche
dbxMYSA30.dll
MySQL 4.0.24
chemin de recherche
dbxMYS30.dll
MySQL 5.0.27, 4.1.22*
chemin de recherche
dbxora30.dll
Oracle 10g, 9.2.0*, 9.1.0*
chemin de recherche
dbxASE30.dll
Sybase 12.5
chemin de recherche
Midas.dll
Requis par les applications de bases de données qui chemin de recherche
utilisent des ensembles de données client
Remarque: * Le pilote n'est pas totalement certifié pour cette version de la base de données.
Déploiement d'applications dbGo pour .NET
Il n'est pas nécessaire de déployer des assemblages d'exécution ou des pilotes de base de données pour les composants dbGo
utilisés dans des applications VCL.NET. Microsoft Data Access Components (MDAC) version 2.1 ou une version ultérieure est
nécessaire pour exécuter des applications avec des composants dbGo en dehors de l'EDI. Cela s'applique aux applications VCL
Win32, ainsi qu'aux applications VCL.NET. RAD Studio prend en charge MDAC 2.8.
Déploiement d'applications BDE pour .NET
Durant son déploiement, vous devez inclure le BDE avec votre application. Bien que cela augmente la taille de l'application et la
complexité du déploiement, le BDE peut être partagé avec d'autres applications BDE et assurer un support plus large pour la
26
1.1 Développement d'applications de
RAD Studio pour .NET
Fournisseurs de données pour Microsoft
manipulation des bases de données. Même s'il est possible d'utiliser directement l'API du BDE dans votre application, les
composants de la section BDE de la palette d'outils regroupent la plupart de ces fonctionnalités.
Voir aussi
Présentation Borland du déploiement d'applications
Présentation Microsoft du déploiement d'applications
1.1.9 Fournisseurs de données pour Microsoft .NET
En plus de la prise en charge des fournisseurs inclus dans le .NET Framework, RAD Studio inclut les fournisseurs AdoDbxClient
pour Microsoft .NET. AdoDbx Client est une implémentation du .NET Provider et se connecte à un certain nombre de bases de
données courantes.
Cette rubrique comprend :
• Architecture de fournisseur de données
• Avantages de AdoDbx Client
• AdoDbx Client et les composants ADO.NET
• Fournisseurs AdoDbx Client pris en charge
• Types de données AdoDbx Client
• Interfaces AdoDbx Client
Architecture de fournisseur de données
RAD Studio prend en charge les fournisseurs .NET Framework et les fournisseurs AdoDbx Client.
AdoDbx.NET propose une architecture performante pour accéder à des sources de données sans passer par une couche COM
Interop.
L'architecture expose un ensemble d'interfaces pour l'intégration des tiers. Vous pouvez implémenter ces interfaces pour votre
propre base de données dans le but de fournir des outils de conception et l'intégration de l'accès aux données d'exécution au
sein de l'EDI de CodeGear. Les composants gérés par AdoDbx.NET communiquent avec ces interfaces pour accomplir toutes
les fonctionnalités d'accès aux données de base. Ces interfaces étaient implémentées pour encapsuler les bibliothèques client
natives spécifiques aux bases de données par le biais des services Platform Invoke (P/Invoke). Selon la disponibilité des clients
de bases de données gérés, vous pouvez implémenter un fournisseur intégralement géré sous AdoDbx.NET.
27
1
Fournisseurs de données pour Microsoft
RAD Studio pour .NET
1.1 Développement d'applications de
L'implémentation propre à la base de données est encapsulée dans un assemblage et le nom complet de l'assemblage est
transmis au composant AdoDbxConnection en tant que partie de la chaîne de connexion. Selon l'entrée d'assemblage dans la
propriété ConnectionString, AdoDbx.NET charge dynamiquement le fournisseur propre à la base de données et utilise
l'implémentation pour ISQLConnection, ISQLCommand et ISQLCursor. Ceci permet aux applications de permuter d'une base de
données à une autre en modifiant seulement la propriété ConnectionString pour pointer sur un autre fournisseur.
Avantages de AdoDbx.NET
AdoDbx.NET propose de nombreux avantages :
• Un modèle de programmation unifié applicable à plusieurs plates-formes de bases de données
• Une architecture d'accès aux données très performante
• Une architecture ouverte, prenant facilement en charge des bases de données supplémentaires
1
• Un code portable écrit une seule fois et permettant la connexion avec toutes les bases de données gérées.
• Lorsque c'est applicable, un mappage de types de données cohérent entre bases de données.
• Des types de données logiques mappés sur les types .NET natifs.
• A la différence d'OLE DB, pas de nécessité d'une couche COM Interop.
• La possibilité de consulter des données dynamiques pendant la conception de votre application.
• L'extension d'ADO.NET dans le but d'offrir des interfaces pour les services de métadonnées, la création de schémas et la
migration de données.
• Un ensemble complet de concepteurs de composants et d'outils pour accélérer le développement d'applications de bases de
données.
RAD Studio étend .NET pour gérer d'autres plates-formes de bases de données, en proposant une architecture de connexion et
des types de données cohérents.
Composants AdoDbx.NET et ADO.NET
L'ensemble de données est une représentation mémoire d'une ou de plusieurs tables de données (DataTable). Chaque table de
données d'un ensemble de données est constitué de lignes (DataRow) et de colonnes (DataColumn) de données. L'ensemble
de données est généré comme résultat d'une requête SQL que vous procurez au fournisseur. Vous pouvez naviguer dans
l'ensemble de données comme vous le feriez dans n'importe quelle table relationnelle standard. Les fournisseurs AdoDbx.NET
encapsulent les détails de l'implémentation de chaque type de base de données, vous permettant toujours de personnaliser vos
instructions SQL et de gérer les ensembles de résultats avec une souplesse totale.
AdoDbx.NET offre un certain nombre de composants de conception que vous pouvez placer dans un Windows Form ou un Web
Form. Un ensemble de concepteurs est également fourni pour vous aider à construire vos connexions de données, ensembles
de données, relations et autres éléments.
Les composants primaires les plus utiles, tout particulièrement si vous décidez d'implémenter le fournisseur propre à votre base
de données, sont les suivants :
• AdoDbxConnection — établit une connexion de base de données
• AdoDbxCommand — inclut un ensemble de méthodes et de propriétés pour l'exécution du code SQL et des procédures
stockées
• AdoDbxDataReader — récupère les données
• AdoDbxParameter — prend en charge la liaison des paramètres d'exécution
• AdoDbxTransaction — prend en charge le contrôle des transactions
• AdoDbxDataAdapter — fournit et résout les données
• ISQLMetaData — récupère les métadonnées
• ISQLSchemaCreate — inclut des méthodes pour la création, le glissement et la modification des objets de bases de données
Pour plus d'informations, cliquez sur le lien de chaque composant, ou cherchez les composants dans la documentation de
28
1.1 Développement d'applications de
RAD Studio pour .NET
Présentation des procédures stockées
référence de l'API de cette aide.
Fournisseurs AdoDbx.NET pris en charge
AdoDbx.NET comporte des fournisseurs pour un certain nombre de bases de données les plus courantes du marché. Elles sont
présentées dans le tableau suivant, avec leurs espaces de nommage correspondants.
Base de données
Espace de nommage
InterBase
Borland.Data.Interbase
Oracle
Borland.Data.Oracle
IBM DB2
Borland.Data.Db2
Microsoft SQL Server
Borland.Data.Mssql
Microsoft Access
Borland.Data.Msacc
Sybase
Borland.Data.Sybase
1
Les composants AdoDbx.NET, l'accès aux métadonnées et les concepteurs sont définis sous les espaces de nommage
suivants :
• Borland.Data.AdoDbxClientProvider
• Borland.Data.Common
• Borland.Data.Schema
• Borland.Data.Design
Types de données AdoDbx.NET
AdoDbx.NET mappe les types de données SQL en types de données .NET Framework, vous évitant ainsi l'apprentissage d'un
système de types spécifiques aux bases de données. Chaque tentative a été effectuée pour implémenter des mappages de
types cohérents à travers les types de bases de données, vous permettant ainsi d'écrire un ensemble de sources que vous
pouvez exécuter sur de multiples bases de données. Vous pouvez obtenir un effet semblable avec les fournisseurs de données
.NET Framework en communiquant directement avec leurs interfaces et en utilisant des ancêtres non typés. Toutefois, si vous
utilisez des accesseurs fortement typés, votre application devient moins portable. AdoDbx.NET ne prend pas en charge les
accesseurs typés spécifiques aux bases de données. Pour plus d'informations, voir la rubrique Types de données AdoDbx.NET.
Interfaces AdoDbx.NET
Vous pouvez étendre AdoDbx.NET pour gérer d'autres SGBD en implémentant un sous-ensemble de l'interface de fournisseur
.NET. AdoDbx.NET généralise l'essentiel des fonctionnalités nécessaires pour implémenter les fournisseurs de données. Si le
.NET Framework vous donne la possibilité de créer des fournisseurs de données spécifiques pour chaque source de données,
CodeGear a simplifié la tâche en offrant un ensemble de fonctionnalités généralisées. Au lieu de construire des fournisseurs
distincts, avec les objets correspondants DataAdapters, DataReaders, Connection et les autres objets nécessaires, vous pouvez
implémenter un ensemble d'interfaces AdoDbx.NET pour construire vos propres compléments source de données dans le
fournisseur client AdoDbx.
Concevoir un complément est une tâche beaucoup plus aisée que de construire entièrement un nouveau fournisseur. Vous
construisez un assemblage contenant l'espace de nommage de votre fournisseur, ainsi que les classes qui encapsulent les
fonctionnalités propres au fournisseur. L'essentiel des fonctionnalités nécessaires pour se connecter, exécuter des commandes
et récupérer des données dans vos sources de données sont déjà définies dans les interfaces du fournisseur client AdoDbx.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants AdoDbx.NET (
Types de données AdoDbx.NET (
see page 22)
see page 11)
29
Framework dbExpress
RAD Studio pour .NET
1.1 Développement d'applications de
1.1.10 Présentation des procédures stockées
Toutes les bases de données relationnelles présentent certaines caractéristiques communes qui permettent aux applications de
stocker et de manipuler les données. Une procédure stockée est un programme autonome écrit dans le langage propre au
système de base de données utilisé. En général, une procédure stockée gère les tâches très répétitives sur les bases de
données et est particulièrement utile pour les opérations qui s'appliquent à un grand nombre d'enregistrements ou qui utilisent
des fonctions statistiques ou mathématiques. Les procédures stockées se trouvent généralement sur le serveur de bases de
données.
L'appel d'une procédure stockée est similaire à l'appel d'une commande SQL et RAD Studio prend en charge l'utilisation des
procédures stockées de la même façon qu'il prend en charge la modification et l'utilisation du texte de commande SQL.
1
Les procédures stockées peuvent améliorer vos applications de bases de données de l'une des façons suivantes : en améliorant
les performances, la sécurité et la fiabilité de vos applications.
• Performances — les procédures stockées peuvent améliorer les performances d'une application de base de données en
tirant parti de la puissance et la vitesse de traitement généralement supérieures du serveur et en réduisant le trafic réseau en
déplaçant le traitement sur le serveur. De plus, le SQL compilé utilisé dans une procédure stockée s'exécute généralement
plus rapidement que le texte d'une commande SQL standard.
• Sécurité — en créant une couche entre les clients et la base de données, les procédures stockées peuvent améliorer la
sécurité de vos données. Vous n'avez pas besoin d'accorder de permissions de bases de données à des utilisateurs
individuels. A la place, vous pouvez accorder aux utilisateurs la permission d'exécuter une procédure stockée
indépendamment des permissions de tables sous-jacentes.
• Fiabilité — les procédures stockées aident à centraliser le code, ce qui facilite l'isolation et la résolution des problèmes. De
plus, les procédures stockées vous permettent de déplacer la logique métier propre à la base de données dans la base de
données, et de la rendre ainsi accessible à tous les clients indépendamment du langage utilisé.
Lorsque vous utilisez AdoDbx Client, l'éditeur de texte de commande et l'explorateur de données offrent tous deux la
possibilité de visualiser les paramètres de vos procédures stockées, de spécifier les paramètres d'entrée et d'exécuter vos
procédures stockées pendant la conception de votre application.
Voir aussi
Concepteurs de composants ADO.NET (
Fournisseurs pour Microsoft .NET (
see page 22)
see page 27)
1.1.11 Framework dbExpress
Le framework dbExpress (framework DBX) est un ensemble de classes abstraites fournies dans l'unité DBXCommon. Les
applications peuvent s'interfacer avec le framework de différentes façons : en utilisant le framework directement pour les
applications natives et managées, et en utilisant les composants dbExpress VCL disposés en couches au sommet du framework
pour les applications natives et managées.
Bien que de nombreuses applications s'interfacent avec les pilotes dbExpress via les composants dbExpress VCL, le framework
DBX offre une option utile et légère pour communiquer avec un pilote de base de données. Vous pouvez également créer un
pilote de base de données pour dbExpress en étendant les classes de base abstraites DBXCommon du framework. Le
framework DBX fournit les fonctionnalités de pilote de base de données les plus courantes pour une application de base de
données orientée "ensemble", ainsi qu'une interface simple.
Voici quelques fonctionnalités clés du framework DBX :
30
1.1 Développement d'applications de
RAD Studio pour .NET
Framework dbExpress
• Le framework de pilote est écrit entièrement en langage Delphi et permet aux pilotes d'être écrits en Delphi.
• Il utilise l'accès aux données fortement typées au lieu des pointeurs. Par exemple, il utilise les types chaîne à la place des
pointeurs vers des chaînes.
• Le framework de pilote est à source unique. Cela signifie qu'une copie unique du source peut être compilée avec les
compilateurs DCC32 natif et DCCIL managés.
• Le framework a seulement des classes de base abstraites qui sont utilisées pour les pilotes, les connexions, les commandes,
les lecteurs, et ainsi de suite.
• Le framework utilise la gestion des erreurs basée sur les exceptions, plutôt que le renvoi de codes d'erreur.
Capacités
IL existe deux catégories de pilotes qui étendent les classes dans DBXCommon : DBXDynaLink et DBXDirect. Ces pilotes
diffèrent les uns des autres dans la façon dont ils sont chargés et par les capacités qu'ils fournissent à une application. Ces
capacités sont détaillées par la suite.
Vous pouvez également étendre le framework DBX pour écrire des pilotes de délégation qui fournissent une couche
supplémentaire entre l'application et le pilote réel. Les pilotes délégués sont utiles pour le pooling de connexion, le profilage de
pilote, le traçage et l'audit. Une autre application possible de délégation de pilote est la création d'un délégué de pilote adapté
aux threads. Un tel délégué peut fournir un accès synchronisé de thread à toutes les méthodes publiques.
La sécurité de thread absolue est laissée aux applications utilisant dbExpress. Toutefois, certains problèmes de sécurité de
thread sont mieux gérés par le framework dbExpress. Les opérations de sécurité de thread dbExpress incluent le chargement et
le déchargement des pilotes, ainsi que la création de connexions. Comme mentionné plus tôt, un pilote délégué peut être créé
pour rendre l'interface publique entière de dbExpress adaptée aux threads si nécessaire.
Un pilote dbExpress 4 peut lier statiquement ou dynamiquement des pilotes construits en tant que packages Delphi. La meilleure
façon de lier un package de pilote est simplement de l'inclure la clause "uses". Le chargeur de pilote charge également les
packages spécifiés dans un fichier config ou ini à l'aide de la méthode LoadPackage. Cela permet un chargement dynamique
des pilotes qui ne sont jamais spécifiés dans une clause uses d'une des unités de l'application. Notez que l'approche
LoadPackage peut seulement être employée pour les applications construites pour utiliser des packages.
Les auteurs de pilotes dbExpress 4 doivent examiner les sections d'initialisation des unités DBXDynalink et DBXTrace dans le
code source fourni avec dbExpress. Ces sections se recensent elles-mêmes avec une unité singleton appelée le ClassRegistry.
Le ClassRegistry est utilisé par le chargeur de pilote dbExpress 4 pour instancier les classes chargeur de pilote par le nom (une
chaîne). Le ClassRegistry est un mécanisme léger et simple pour le recensement et l'instanciation d'une classe par le nom.
Pilotes DBXDynalink
DBXDynalink est utilisé pour les pilotes dbExpress 3 existants, ainsi que pour les nouveaux pilotes. Il est compilé comme un
package Delphi natif ou un assemblage .NET managé. DBXDynalink charge les pilotes dbExpress natifs qui implémentent une
interface "native" plus primitive appelée DBXExports. L'interface DBXExports est une petite collection de méthodes d'exportation
simples. Le source de DBXExports est inclus avec dbExpress. DBXExports fournit une API plus fortement typée que l'interface
COM de dbExpress 3. Cela permet l'ajout des méthodes dans les générations de produits futures sans casser la compatibilité
avec les anciennes implémentations de l'interface DBXExports.
DBXAdapter est un pilote compatible dbExpress 4 qui adapte l'interface DBXExports à l'ancienne interface COM dbExpress 3.
Les nouveaux pilotes natifs peuvent être écrits en implémentant directement DBXExports.
Puisque l'interface DBXExports a été conçue pour être implémentée au moyen d'un langage natif (Delphi ou C++), elle utilise
une gestion d'erreurs basée sur les exceptions plus primitive. DBXDynalink mappe les codes d'erreur en exception
DBXCommon.
L'unité DBXDynalink contient un pilote dbExpress 4. Ce pilote délègue les pilotes non-Delphi qui implémentent l'interface
d'exportation simple DBXDynalinkExport. DBXTrace est un pilote délégué utilisé pour le traçage. La bibliothèque VCL
DbExpress utilise DBXCommon, DBXDynalink et DbxTrace comme pilotes "par défaut". Toutefois, cela peut être changé pour
les applications liées statiquement sans modifier le code source dbExpress VCL (SQLExpr.pas). SQLExpr.pas utilise l'unité
31
1
Compatibilité du framework dbExpress
RAD Studio pour .NET
1.1 Développement d'applications de
DBXDefaultDrivers. L'unité DBXDefaultDrivers contient seulement une clause uses. La clause uses de DBXDefaultDrivers
contient DBXCommon, DBXDynalink et DBXTrace. DBXCommon doit toujours être utilisé. Toutefois, une application liée
statiquement peut retirer DBXTrace et remplacer DBXDynalink par un pilote différent.
Pilotes DBXDirect
Un pilote DBXDirect est un pilote implémenté en étendant les classes de base abstraites DBXCommon. Ces classes sont écrites
en Delphi pour les implémentations natives. Pour les implémentations managées, elles peuvent être écrites au moyen d'un
langage compatible CLR tel que Delphi, C# ou Visual Basic.NET.
Strictement parlant, tous les pilotes de framework DBX sont une forme de pilote DBXDirect. Toutefois, DBXDynalink et
DBXRemote fournissent une liaison plus "indirecte" aux implémentations de pilotes.
Voir aussi
1
Compatibilité du framework de pilote de base de données dbExpress (
see page 33)
Déploiement d'applications de bases de données dbExpress
1.1.12 Compatibilité du framework dbExpress
Certains logiciels dbExpress développés avant le framework de pilote dbExpress (framework de pilote DBX) ont été modifiés
pour fonctionner avec le framework de pilote DBX. A cause de ces modifications, certains problèmes de compatibilité se
produisent.
Général
Les pilotes dbExpress 2.5 ne peuvent pas être utilisés avec le framework DBX.
Le framework dbExpress n'offre pas une compatibilité à 100% avec dbExpress 3.
Les pilotes dbExpress 3 peuvent être utilisés avec le framework DBX. Le chargeur du framework de pilote DBX détecte
automatiquement les pilotes dbExpress 3 et utilise le pilote DBXAdapter (dbxadapter30.dll) afin qu'un pilote dbExpress 3
ressemble à un pilote dbExpress 4.
Voici la liste des problèmes de compatibilité connus :
• Liaison de pilotes statique. Vous ne pouvez pas lier de façon statique des pilotes dbExpress dans un exécutable.
• SqlExpr.TSQLConnection fournissait un accès protégé au membre Connection qui était de type TISQLConnection seulement
dans la version native de SqlExpr.pas. Cela a été omis dans la version managée en raison de la complexité de l'utilisation de
PInvoke dans la version managée de la VCL dbExpress. SqlExpr.TSQLConnection fournit maintenant à la place un accès
protégé à un TDBXConnection. Cette connexion protégée est accessible aux applications natives et managées.
• L'événement du contrôle des traces est légèrement différent car il est basé sur le framework de pilote DBX.
• Le pilote DBXadapter peut adapter les pilotes dbExpress 3 à dbExpress 4, mais pas les pilotes dbExpress 2.5.
Problèmes VCL
La plupart des applications utilisant des composants VCL dbExpress devraient fonctionner sans modification. Toutefois, des
modifications localisées sont apportées aux composants VCL en raison de la VCL s'interfaçant maintenant sur le framework de
pilote DBX orienté objet au lieu de l'interface de pilote dbExpress 3 basée sur COM C-like.
En outre, l'API a été légèrement modifiée pour les deux composants VCL suivants : TSQLConnection et TSQLDataSet.
Certaines structures de données ont également été modifiées. Vous trouverez ci-après un résumé des changements de l'API.
Remarque: A cause des modifications apportées à l'API, vous devez recompiler SqlExpr.pas qui est livré avec le produit.
L'unité DBXpress a été dépréciée.
• TSQLConnection. La méthode Commit a été dépréciée en faveur de la nouvelle méthode CommitFreeAndNil. La méthode
32
1.1 Développement d'applications de
RAD Studio pour .NET
Introduction à InterBase Express
Rollback a été dépréciée en faveur des nouvelles méthodes RollbackFreeAndNil et RollbackIncompleteFreeAndNil. La
méthode SetTraceCallbackEvent a été remplacée par SetTraceEvent. La méthode StartTransaction a été dépréciée en faveur
de la nouvelle méthode BeginTransaction. La propriété MetaData contient une instance de la nouvelle classe
TDBXDatabaseMetaData au lieu de TISQLMetaData. La propriété SQLConnection a été remplacée par DBXConnection, qui
contient une instance de la nouvelle classe TDBXConnection. La propriété TraceCallbackEvent contient maintenant un
TDBXTraceEvent.
• TSQLDataSet. La nouvelle propriété DbxCommandType a été ajoutée. Elle contient une des chaînes constante de la classe
TDBXCommandTypes.
• Structures de données. TTransactionItem a été dépréciée et remplacée par la nouvelle classe TDBXTransaction.
TSQLDriverOption, TSQLConnectionOption, TSQLCommandOption, TSQLCursorOption, TSQLMetaDataOption et
TSQLObjectType sont obsolètes. TSTMTParamType a été remplacée par la classe TDBXParameterDirections.
TSQLTraceFlag a été remplacée par TDBXTraceFlags. SQLTRACEDesc a été remplacée par TDBXTraceInfo.
Voir aussi
1
Framework dbExpress
Déploiement du framework dbExpress
1.1.13 Introduction à InterBase Express
InterBase Express (IBX) est un ensemble de composants d'accès aux données qui permet d'accéder à des données de bases
de données InterBase. Les composants Administration InterBase, qui requièrent InterBase 6, sont décrits après les composants
d'accès aux données InterBase.
Composants IBX
Les composants suivants sont situés sur l'onglet InterBase de la palette des composants.
Icône
Nom du
composant
Description
TIBTable
Un composant ensemble de données qui encapsule une table de
base de données.
TIBQuery
Exécute une instruction SQL InterBase.
TIBStoredProc
Encapsule une procédure stockée sur un serveur de base de
données.
TIBDatabase
Encapsule une connexion à une base de données InterBase.
TIBTransaction
Fournit un contrôle discret des transactions sur une ou plusieurs
connexions de base de données dans une application de base de
données.
TIBUpdateSQL
Fournit un objet pour mettre à jour des ensembles de données en
lecture seule lorsque les mises à jour en mémoire cache sont
activées.
TIBDataSet
Exécute des instructions SQL InterBase.
TIBSQL
Fournit un objet pour l'exécution d'une instruction SQL InterBase
avec une charge système minimale.
TIBDatabaseInfo
Renvoie des informations sur la base de données liée.
TIBSQLMonitor
Suit le SQL dynamique passé au serveur InterBase.
TIBExtract
Récupère des métadonnées à partir d'un serveur InterBase.
33
Introduction à InterBase Express
RAD Studio pour .NET
1.1 Développement d'applications de
TIBCustomDataSet La classe de base de tous les ensembles de données
représentant les données lues à l'aide d'InterBase Express.
Bien que leurs noms soient similaires à ceux des composants BDE, les composants IBX sont quelque peu différents. Les
sections ci-dessous présentent ces différences pour les composants ayant un équivalent BDE.
Il n'existe pas de migration simple d'applications BDE vers des applications IBX. Vous devrez généralement remplacer les
composants BDE par les composants IBX comparables, puis recompiler vos applications. Toutefois, la vitesse gagnée et les
puissantes fonctionnalités InterBase auxquelles vous pouvez alors accéder justifient pleinement la migration.
IBDatabase
Utilisez un composant TIBDatabase pour établir des connexions à des bases de données susceptibles d'impliquer une ou
plusieurs transactions simultanées. A la différence de BDE, IBX possède un composant transaction distinct qui permet de
séparer les transactions des connexions de base de données.
1
Pour définir une connexion de base de données :
1. Déposez un composant IBDatabase sur une fiche ou un module de données.
2. Initialisez la propriété DatabaseName. Pour une connexion locale, il s'agit du lecteur, du chemin et du nom du fichier de la
base de données. Initialisez la propriété Connected à true.
3. Entrez un nom d'utilisateur et un mot de passe corrects puis cliquez sur OK pour établir la connexion à la base de données.
Avertissement: Astuce : Vous pouvez stocker le nom de l'utilisateur et son mot de passe dans la propriété Params du
composant IBDatabase en initialisant la propriété LoginPrompt à false après l'ouverture de la session. Par exemple, après
avoir ouvert une session en tant qu'administrateur système et avoir initialisé la propriété LoginPrompt à false, vous pourrez
voir les informations suivantes en éditant la propriété Params :
user_name=sysdba
password=masterkey
IBTransaction
A la différence de Borland Database Engine, IBX contrôle les transactions avec un composant séparé, TIBTransaction. Cette
fonctionnalité puissante vous permet de séparer les transactions des connexions de base de données pour pouvoir bénéficier du
mécanisme de validation à deux phases d'InterBase (les transactions s'étendant sur plusieurs connexions) et de plusieurs
transactions simultanées utilisant la même connexion.
Utilisez un composant IBTransaction pour gérer les contextes de transactions, qui peuvent mettre en jeu une ou plusieurs
connexions de base de données. Dans la plupart des cas, un modèle simple avec une base de données et une transaction fera
l'affaire.
Pour définir une transaction :
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Déposez un composant IBTransaction sur la fiche ou le module de données.
3. Affectez à la propriété DefaultDatabase le nom de votre composant IBDatabase.
4. Initialisez la propriété Active à true pour démarrer la transaction.
Composants ensemble de données IBX
Il existe plusieurs composants ensembles de données parmi lesquels vous pouvez faire votre choix avec IBX ; chacun possède
ses caractéristiques propres et est adapté à des tâches particulières :
IBTable
Utilisez un composant TIBTable pour définir un ensemble de données dynamique sur une table ou une vue sans avoir à entrer
d'instructions SQL.
34
1.1 Développement d'applications de
RAD Studio pour .NET
Introduction à InterBase Express
Les composants IBTable sont faciles à configurer :
1. Ajoutez un composant IBTable à votre fiche ou votre module de données.
2. Spécifiez les composants base de données et transaction associés.
3. Spécifiez le nom de la relation à partir de la liste déroulante TableName.
4. Initialisez la propriété Active à true.
IBQuery
Utilisez un composant TIBQuery pour exécuter n'importe quelle instruction DSQL InterBase, restreindre votre ensemble de
résultats à certaines colonnes et certaines lignes, utiliser des fonctions d'agrégation et effectuer des jointures entre plusieurs
tables.
Les composants IBQuery fournissent un ensemble de données en lecture seule et s'adaptent bien à l'environnement
client-serveur d'InterBase. Pour définir un composant IBQuery :
1
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Définissez une connexion IBTransaction comme décrit ci-dessus.
3. Ajoutez un composant IBQuery à votre fiche ou votre module de données.
4. Spécifiez les composants base de données et transaction associés.
5. Entrez dans l'éditeur de listes de chaînes une instruction SQL valide pour la propriété SQL du composant IBQuery.
6. Initialisez la propriété Active à true.
IBDataSet
Utilisez un composant TIBDataSet pour exécuter n'importe quelle instruction DSQL InterBase, restreindre votre ensemble de
résultats à certaines colonnes et certaines lignes, utiliser des fonctions d'agrégation et effectuer des jointures entre plusieurs
tables. Les composants IBDataSet sont similaires aux composants IBQuery, mis à part qu'ils prennent en charge les
ensembles de données dynamiques sans nécessiter un composant IBUpdateSQL.
L'exemple suivant fournit un ensemble de données dynamique pour la table COUNTRY dans employee.gdb :
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Spécifiez les composants base de données et transaction associés.
3. Ajoutez un composant IBDataset à votre fiche ou votre module de données.
4. Entrez des instructions SQL pour les propriétés suivantes : SelectSQL, RefreshSQL, ModifySQL, DeleteSQL, InsertSQL.
Consultez le tableau suivant pour des exemples d'instructions SQL.
5. Initialisez la propriété Active à true.
Exemples d'instructions SQL
Propriété
Instruction SQL
SelectSQL
SELECT Country, Currency FROM Country
RefreshSQL
SELECT Country, Currency FROM Country WHERE Country = :Country
ModifySQL
UPDATE Country SET Country = :Country, Currency = :Currency WHERE Country =
:Old_Country
DeleteSQL
DELETE FROM Country WHERE Country = :Old_Country
InsertSQL
INSERT INTO Country (Country, Currency) VALUES (:Country, :Currency)
Remarque: Remarque : Les paramètres et les champs transmis aux fonctions sont sensibles à la casse dans le dialecte 3.
Par exemple,
FieldByName(EmpNo)
35
Introduction à InterBase Express
RAD Studio pour .NET
1.1 Développement d'applications de
ne renvoie rien dans le dialecte 3 si le champ est spécifié sous la forme 'EMPNO'.
IBStoredProc
Utilisez TIBStoredProc pour les procédures exécutables InterBase : les procédures qui renvoient au plus une ligne
d'informations. Pour les procédures stockées renvoyant plus d'une ligne de données ou les procédures "Select", utilisez des
composants IBQuery ou IBDataSet.
IBSQL
Utilisez un composant TIBSQL pour les opérations qui doivent être rapides et légères. Des opérations telles que la définition de
données et la copie de données d'une base de données vers une autre sont bien adaptées aux composants IBSQL.
Dans l'exemple suivant, un composant IBSQL est utilisé pour renvoyer la valeur suivante à partir d'un générateur :
1
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Positionnez un composant IBSQL sur la fiche ou le module de données et affectez le nom de la base de données à sa
propriété Database.
3. Ajoutez une instruction SQL dans l'éditeur de listes de chaînes pour la propriété SQL, par exemple :
SELECT GEN_ID(MyGenerator, 1) FROM RDB$DATABASE
IBUpdateSQL
Utilisez un composant TIBUpdateSQL pour mettre à jour des ensembles de données en lecture seule. Vous pouvez mettre à
jour une sortie IBQuery avec un composant IBUpdateSQL :
1. Définissez un composant IBQuery comme décrit ci-dessus.
2. Ajoutez un composant IBUpdateSQL à votre fiche ou votre module de données.
3. Entrez des instructions SQL pour les propriétés suivantes : DeleteSQL, InsertSQL, ModifySQL et RefreshSQL.
4. Affectez le nom du composant IBUpdateSQLà la propriété UpdateObject du composant IBQuery.
5. Initialisez la propriété Active du composant IBQuery à true.
IBSQLMonitor
Utilisez un composant TIBSQLMonitor pour développer des outils de diagnostic permettant de surveiller les communications
entre votre application et le serveur InterBase. Quand les propriétés TraceFlags d'un composant IBDatabase sont activées,
les composants IBSQLMonitor actifs peuvent surveiller l'activité de la connexion et envoyer le résultat vers un fichier ou un
contrôle.
Un bon exemple consisterait à créer une application séparée avec un composant IBSQLMonitor et un contrôle Memo. Lancez
cette deuxième application, puis dans l'application principale, activez les propriétés TraceFlags du composant IBDatabase.
Travaillez avec l'application principale et observez le contrôle Memo de la deuxième application se remplir de données.
IBDatabaseInfo
Utilisez un composant TIBDatabaseInfo pour lire des informations sur une base de données particulière, comme son intervalle
de nettoyage, sa version ODS et les noms des utilisateurs actuellement connectés à cette base de données.
Par exemple, pour définir un composant IBDatabaseInfo affichant les utilisateurs actuellement connectés à la base de données,
procédez comme suit :
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Placez un composant IBDatabaseInfo sur la fiche ou le module de données et affectez à sa propriété Database le nom de la
base de données.
3. Placez un composant Memo sur la fiche.
4. Placez un composant Timer sur la fiche et définissez son intervalle.
5. Double-cliquez sur le champ de l'événement OnTimer du composant Timer et entrez un code de la forme :
Memo1.Text := IBDatabaseInfo.UserNames.Text;
//
Memo1->Text = IBDatabaseInfo->UserNames->Text; //
36
Exemple Delphi
Exemple C++
1.1 Développement d'applications de
RAD Studio pour .NET
Introduction à InterBase Express
IBEvents
Utilisez un composant IBEvents pour demander la notification et traiter de manière asynchrone les événements transmis par un
serveur InterBase.
Pour définir un composant IBEvents :
1. Définissez une connexion IBDatabase comme décrit ci-dessus.
2. Positionnez un composant IBEvents sur la fiche ou le module de données et affectez le nom de la base de données à sa
propriété Database.
3. Entrez des événements dans l'éditeur de listes de chaînes de la propriété Events, par exemple :
IBEvents.Events.Add('EVENT_NAME'); (pour Delphi) ou IBEvents->Events->Add("EVENT_NAME"); (pour C++).
4. 4. Initialisez la propriété Registered à true.
1
Composants Administration InterBase
Si vous avez installé InterBase 6, vous pouvez utiliser les composants Administration InterBase 6, qui vous permettent d'accéder
aux puissants appels à l'API des services InterBase.
Les composants suivants sont situés sur l'onglet d'administration d'InterBase de l'EDI :
TIBConfigService
TIBBackupService
TIBRestoreService
TIBValidationService
TIBStatisticalService
TIBLogService
TIBSecurityService
TIBLicensingService
TIBServerProperties
TIBInstall
TIBUnInstall
Remarque : Pour utiliser ces fonctionnalités, vous devez installer InterBase 6.
IBConfigService
Utilisez un objet TIBConfigService pour configurer les paramètres d'une base de données, y compris les tampons de pages, le
mode asynchrone, l'espace de réserve et l'intervalle de balayage.
IBBackupService
Utilisez un objet TIBBackupService pour effectuer une copie de sauvegarde de votre base de données. Cet objet vous permet
de définir des paramètres tels que le facteur de blocage, le nom du fichier de sauvegarde et les options de sauvegarde de la
base de données.
IBRestoreService
Utilisez un objet TIBRestoreService pour restaurer votre base de données. Cet objet vous permet de définir des options telles
que les tampons de pages, la taille des pages et les options de restauration de la base de données.
IBValidationService
Utilisez un objet TIBValidationService pour valider votre base de données et réconcilier vos transactions de base de données.
37
Introduction à InterBase Express
RAD Studio pour .NET
1.1 Développement d'applications de
Cet objet vous permet de définir l'action de transaction par défaut, de renvoyer des informations sur les transactions limbo et de
définir d'autres options de validation de la base de données.
IBStatisticalService
Utilisez un objet TIBStatisticalService pour afficher les statistiques sur la base de données, par exemple les pages de données,
le journal de la base de données, les pages d'en-tête, les pages d'index et les relations système.
IBLogService
Utilisez un objet TIBLogService pour créer un fichier journal.
IBSecurityService
Utilisez un objet TIBSecurityService pour gérer l'accès des utilisateurs au serveur InterBase. Cet objet vous permet de créer, de
supprimer et de modifier des comptes utilisateur, d'afficher tous les utilisateurs et de définir des groupes de travail en utilisant
des rôles SQL.
1
IBLicensingService
Utilisez un composant TIBLicensingService pour ajouter ou supprimer des certificats d'activation logiciels InterBase.
IBServerProperties
Utilisez un composant TIBServerProperties pour renvoyer des informations sur le serveur, y compris les paramètres de
configuration, les informations relatives à la version et à la licence.
IBInstall
Utilisez un composant TIBInstall pour définir un composant d'installation InterBase, y compris les répertoires d'installation source
et de destination et les composants à installer.
IBUnInstall
Utilisez un composant TIBUnInstall pour définir un composant de désinstallation.
38
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de l'interopérabilité COM dans
1.2 Développement d'applications avec du code
non managé
RAD Studio permet d'exploiter les fonctionnalités .NET supportant le code non managé.
Si vous avez des composants COM ou ActiveX que vous souhaitez utiliser avec le .NET Framework, vous pouvez employer les
possibilités de COM Interop .NET depuis RAD Studio lors de la construction de vos applications.
1
Rubriques
Nom
Description
Utilisation de l'interopérabilité COM dans les applications managées (
page 40)
Utilisation de DrInterop (
see page 45)
COM Interop est un service .NET qui permet une interopérabilité transparente
entre code managé et code non managé. Le service COM Interop est un
intermédiaire dans les deux sens : ll vous permet de réutiliser des serveurs COM
ou des contrôles ActiveX existants dans de nouvelles applications .NET mais
aussi d'exposer des composants .NET dans d'anciennes applications non
managées.
L'EDI RAD Studio offre des outils qui vous aideront à intégrer vos serveurs COM
et contrôles ActiveX existants à des applications managées. Depuis l'EDI, vous
pouvez ajouter à votre projet des références à des DLL non managées puis
parcourir les types qu'elles... suite ( see page 40)
L'outil en ligne de commande drinterop examine un assemblage et vous aide
à le préparer à être utilisé avec COM/Interop par tout un jeu de messages de
diagnostic.
L'outil drinterop se trouve dans le répertoire bin d'installation du produit. Pour
l'appeler, tapez
Déploiement des applications Interop COM (
see page 46)
Utilisation de Platform Invoke avec Delphi pour .NET (
Interfaces de bibliothèques virtuelles (
see
see page 54)
see page 46)
Il faut garder deux choses importantes à l'esprit lors de l'utilisation de
composants non managés. Tout d'abord, n'oubliez pas qu'un assemblage
d'interopérabilité ne remplace pas le serveur COM ; il lui sert de proxy, de
substitut. Les assemblages d'interopérabilité générés par tlbimp et RAD Studio
ne sont pas une transformation du code non managé du composant en code
managé. Chaque fichier nécessité par le composant dans un environnement de
déploiement non managé, doit également être déployé dans un environnement
managé, en plus des assemblages d'interopérabilité. Deuxièmement, les
services d'interopérabilité du .NET Framework n'annulent pas la nécessité de
recenser le serveur... suite ( see page 46)
Cette rubrique décrit les techniques de base de l'utilisation des APIs non
managées. Certaines erreurs et certains pièges courants sont signalés, et des
informations de référence rapide pour la conversion des types de données Delphi
sont fournies. Cette rubrique ne tente pas de présenter les fondements de
platform invoke ou du marshaling de données. Reportez-vous aux liens présents
à la fin de cette rubrique pour plus d'informations sur platform invoke et le
marshaling. Une compréhension des attributs et de la manière dont ils s'utilisent
est aussi fortement recommandée avant de lire ce document.
L'API Win32 est utilisée pour plusieurs exemples.... suite ( see page 46)
Cette rubrique explique comment utiliser une fonctionnalité de Delphi appelée
Interfaces de bibliothèques virtuelles. Les Interfaces de bibliothèques virtuelles
vous permettent de découvrir, de charger et d'appeler du code non managé à
l'exécution, sans utiliser l'attribut DllImport.
1.2.1 Utilisation de l'interopérabilité COM dans les
applications managées
COM Interop est un service .NET qui permet une interopérabilité transparente entre code managé et code non managé. Le
service COM Interop est un intermédiaire dans les deux sens : ll vous permet de réutiliser des serveurs COM ou des contrôles
ActiveX existants dans de nouvelles applications .NET mais aussi d'exposer des composants .NET dans d'anciennes
39
Utilisation de l'interopérabilité COM dans
RAD Studio pour .NET
1.2 Développement d'applications avec du
applications non managées.
L'EDI RAD Studio offre des outils qui vous aideront à intégrer vos serveurs COM et contrôles ActiveX existants à des
applications managées. Depuis l'EDI, vous pouvez ajouter à votre projet des références à des DLL non managées puis parcourir
les types qu'elles contiennent comme pour les assemblages managés. Vous pouvez ajouter des contrôles ActiveX à la palette
d'outils, puis les déposer dans vos fiches comme vous le feriez avec tous les composants .NET.
Cette présentation aborde les sujets suivants :
• Introduction à la terminologie COM Interop. Si vous êtes déjà familiarisé avec ces concepts, vous pouvez passer directement
à la section sur les fonctionnalités et outils de l'EDI RAD Studio pour COM/Interop.
• Introduction à certains des outils du Kit de développement .NET Framework SDK relatifs à COM/Interop.
• Utilisation d'assemblages COM Interop dans l'EDI.
1
Présentation de COM Interop
Une interopérabilité transparente est obtenue via l'utilisation d'objets de remplacement appelé RCW (Runtime Callable
Wrappers). RCW est en fait une couche de communication entre votre application managée et le vrai serveur COM non managé.
Terminologie de l'interopérabilité COM
Le .NET Framework contient un grand nombre de termes et d'acronymes en trois lettres. Cette section vous aide à comprendre
la terminologue que vous rencontrerez en consultant d'autres documents traitant de COM Interop.
Métadonnées
Dans le contexte de .NET et COM, les métadonnées sont les informations de type. Dans COM, les informations de type peuvent
être stockées de diverses manières. Par exemple, un fichier en-tête C++ est un conteneur spécifique à ce langage pour des
informations de type. Une bibliothèque de types est également un conteneur pour des informations de type, mais étant au format
binaire, les bibliothèques de types sont indépendantes du langage. A la différence du modèle de développement COM dans
lequel les bibliothèques de types ne sont pas obligatoires, des métadonnées indépendantes du langage sont obligatoires dans
tous les assemblages .NET. Chaque assemblage est auto-descriptif, ses métadonnées contiennent des informations de type
complètes, y compris pour les types privés et les membres de classe privés.
Attributs personnalisés
Les développeurs balisent fréquemment des entités de programme (comme les classes ou leurs méthodes) avec des attributs
descriptifs comme static, private, protected ou public. Dans le .NET Framework, vous pouvez baliser toute entité, y compris les
classes, les propriétés, les méthodes et même les assemblages avec des attributs dont vous définissez la forme et le sens. Les
attributs sont exprimés dans le code source et sont traités par le compilateur. A la fin du processus de construction, les attributs
personnalisés sont émis dans l'assemblage généré comme toutes les autres métadonnées.
Réflexion
Caractéristique unique du .NET Framework, les informations de type ne sont pas perdues lors du processus de compilation. A la
place, toutes les métadonnées, y compris les attributs personnalisés sont envoyés par le compilateur dans l'assemblage final
généré. Les métadonnées sont disponibles à l'exécution via les services Reflection .NET. Le Kit de développement .NET
Framework SDK propose un outil de réflexion, nommé ildasm, qui permet au développeur d'ouvrir tout assemblage .NET et
d'inspecter les types qui y sont déclarés. De tels outils de réflexion permettent souvent au programmeur de voir directement le
code IL généré par le compilateur. L'EDI RAD Studio contient son propre outil intégré de réflexion, sous la forme de l'outil
40
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de l'interopérabilité COM dans
d'exploration des métadonnées qui apparaît lorsque vous ouvrez un assemblage .NET.
Global Assembly Cache (GAC)
Dans COM, les composants peuvent être déployés n'importe où sur la machine de l'utilisateur. Généralement, le script
d'installation d'un composant stocke son emplacement dans le registre système. Des outils en ligne de commande comme
regsvr32 et tregsvr peuvent également ajouter ou retirer des composants COM du registre. Le recensement des composants est
nécessaire en programmation COM, même si les composants ne sont pas conçus pour être partagés par plusieurs applications.
Le modèle de programmation .NET simplifie radicalement le déploiement des applications et des composants. Dans la
plate-forme .NET, les composants non partagés sont déployés directement dans le répertoire local d'installation de l'application ;
le recensement n'est pas nécessaire. Par ailleurs, un composant non partagé peut être déployé dans un répertoire spécifié dans
le fichier de configuration de l'application. Ici encore, le recensement n'est pas nécessaire dans ce scénario de déploiement.
Les composants partagés sont déployés dans un emplacement spécial, le Global Assembly Cache (cache d'assemblage global)
ou GAC. Le GAC est une évolution du registre système (bien qu'utilisant un mécanisme complètement différent et n'étant
aucunement associé au registre). Le GAC existe dans le système de fichiers dans un répertoire nommé \Windows\Assembly. Le
.NET Framework gère le déploiement simultané ou "côte à côte" de différentes versions d'un même composant. Quand vous
visualisez le dossier Global Assembly Cache en utilisant l'Explorateur Windows, vous examinez en fait le GAC via une extension
spéciale du shell. L'extension du shell affiche tous les assemblages qui ont été installés dans le GAC, avec des informations sur
la version, la culture et la clé publique.
Il y a trois manières d'installer un composant .NET dans le GAC. Vous pouvez premièrement utiliser l'outil en ligne de
commande du Kit de développement nommé gacutil, qui est décrit plus bas. Un autre moyen d'installer un composant dans le
GAC est de vous placer sur le répertoire \Windows\Assembly en utilisant l'Explorateur Windows et d'y déposer simplement
l'assemblage dans le panneau liste des dossiers. Vous pouvez enfin utiliser l'outil de configuration .NET, accessible depuis le
Panneau de configuration Windows.
Noms forts
Le concept de nom fort est similaire à celui de l'identificateur global unique sur 128 bits (GUID) en programmation COM. Un
GUID est un nom dont l'unicité globale est garantie. Chaque assemblage .NET a un nom simple, constitué d'une chaîne de
texte, un numéro de version et des informations facultatives sur la culture. Pour les assemblages partagés installés dans le
GAC, le nom simple seul ne suffit pas à garantir l'unicité de l'identification de l'assemblage. Pour générer un nom globalement
unique, une clé d'encryptage avec des composants public et privé est utilisée pour générer une signature numérique. La
signature est alors appliquée à l'assemblage en utilisant le lieur d'assemblage du Kit de développement .NET Framework SDK
(al.exe) ou en utilisant les attributs de l'assemblage dans le code source.
RCW (Runtime Callable Wrappers) et CCW (COM Callable Wrappers)
L'accès à un composant, que ce soit un composant .NET ou un serveur COM, est largement transparent. C'est-à-dire que si
vous utilisez un serveur COM dans une application .NET, le serveur COM ressemble aux autres composants .NET. De même,
un composant .NET exposé à une application non managée via COM Interop, ressemble à un serveur COM. Cette transparence
est obtenue par des objets proxy ou wrapper agissant "derrière le décor".
Quand vous utilisez un objet COM dans une application managée, le CLR (Common Language Runtime) crée un RCW qui est
l'interface entre code managé et code non managé. La complexité du transfert des données du comptage de références est
gérée par le RCW. En fait, le RCW n'expose même pas les interfaces IUnknown et IDispatch.
Quand vous utilisez un objet .NET dans une application non managée, le système crée un substitut appelé CCW (COM Callable
Wrapper).
Assemblage d'interopérabilité primaire
Dans le modèle de programmation COM, une fois qu'un GUID est attribué à un type, le GUID désigne toujours ce type
spécifique, peu importe où apparaît le type. Par exemple, une même interface peut être définie dans plusieurs bibliothèques,
41
1
Utilisation de l'interopérabilité COM dans
RAD Studio pour .NET
1.2 Développement d'applications avec du
mais chaque bibliothèque de types distincte doit définir l'interface avec le même GUID, la duplication n'est donc pas un
problème. Mais si vous générez des assemblages d'interopérabilité COM pour ces types distincts, un nouvel assemblage distinct
est créé pour chaque bibliothèque de types. Chacun de ces assemblages distincts contient des types distincts (du point de vue
du CLR). Les noms forts et la nature auto-descriptive des assemblages .NET fonctionnent à votre détriment dans ce cas. On
obtient ici un GAC rempli d'assemblages d'interopérabilité contenant tous des RCW pour la même bibliothèque de types. Pire,
pour le CLR chaque assemblage contient des types distincts et incompatibles, car chacun d'eux a un nom fort différent.
Pour éviter cette prolifération d'assemblages et des incompatibilités potentielles de types, l'architecture vous permet de spécifier
un assemblage comme l'assemblage primaire d'interopérabilité d'une bibliothèque de types. Un assemblage primaire
d'interopérabilité est toujours signé avec un nom fort, par l'éditeur d'origine de la bibliothèque de types.
Outils COM Interop du Kit de développement .NET Framework SDK
Certaines fonctionnalités proposées par les outils du Kit de développement .NET Framework SDK sont exposées par
l'environnement de développement. Cette section n'est pas conçue pour proposer une référence complète de ces outils, elle est
juste conçue comme un point de départ pour une exploration plus poussée du Kit de développement .NET Framework SDK, et
afin de vous aider à mieux comprendre l'intégration de la technologie COM dans l'EDI.
1
Importation et exportation de bibliothèques de types
Tlbimp est un outil en ligne de commande que vous pouvez utiliser pour générer un assemblage .NET à partir d'une
bibliothèque de types. Tlbimp agit directement sur une bibliothèque de types ou sur une DLL non managée qui contient une
bibliothèque de types comme ressource incorporée. Comprenez bien que l'assemblage généré par tlbimp ne contient que le
code du RCW pas celui de l'objet COM d'origine. Il est donc toujours nécessaire de déployer et de recenser l'objet COM sur la
machine de l'utilisateur final. L'assemblage contient également les types décrits dans la bibliothèque de types, exprimés sous
forme de métadonnées. Tlbimp utilise un commutateur de la ligne de commande pour générer un assemblage primaire
d'interopérabilité.
Le Kit de développement .NET Framework SDK contient un autre outil en ligne de commande, nommé tlbexp, qui permet de
créer une bibliothèque de types pour un assemblage .NET. La bibliothèque de types ainsi générée peut servir à exposer le
composant .NET comme serveur COM, utilisable dans une application non managée.
Importation de bibliothèque de contrôles ActiveX
Aximp est un outil en ligne de commande permettant de générer l'assemblage encapsulant un contrôle ActiveX. Cet
assemblage est nécessaire pour pouvoir utiliser le contrôle ActiveX dans un Windows Form. Un utilitaire spécial est nécessaire,
car un Windows Form ne peut accueillir que des contrôles dérivés de la classe System.Windows.Forms.Control, et l'utilitaire
tlbimp ne crée pas un wrapper dérivé de cette classe.
L'outil aximp génère à la fois les assemblages d'interopérabilité (comme pour tlbimp cela inclut des assemblages dépendants)
et l'assemblage wrapper ActiveX. Comme tlbimp, aximp a des commutateurs de ligne de commande pour signer les
assemblages générés avec un nom fort. A la différence de tlbimp, aximp ne peut générer un assemblage primaire
d'interopérabilité.
Génération de noms forts
Si vous déployez un composant .NET dans le GAC, vous devez signer votre assemblage avec une clé de nom fort. Cela
s'effectue en utilisant l'outil en ligne de commande sn du Kit de développement .NET Framework SDK. Un assemblage est signé
avec un nom fort de l'une des trois manières suivantes :
• En spécifiant le nom du fichier clé de nom fort dans la ligne de commande du lieur d'assemblage (al).
• En balisant l'assemblage avec l'attribut AssemblyKeyFile.
• En utilisant une technique nommée "signature retardée".
Si la signature retardée est utilisée, lors de la construction l'assemblage est signé avec la partie clé publique du fichier clé. Avant
de distribuer l'assemblage, l'outil sn est utilisé à nouveau pour signer l'assemblage avec la clé privée.
42
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de l'interopérabilité COM dans
Déploiement d'un composant .NET dans le Global Assembly Cache
L'utilitaire gacutil du Kit de développement .NET Framework SDK est un programme en ligne de commande utilisé pour
installer, supprimer et afficher les composants du GAC. La commande gacutil est utilisable dans des scripts d'installation ou
dans des fichiers batch. La commande gacutil gère l'installation ou la suppression d'assemblages partagés avec ou sans
utilisation du décompte des références. Il est recommandé d'utiliser les commutateurs de commande sans décompte des
références uniquement lors du développement. Les scripts d'installation qui utilisent gacutil pour installer des composants
partagés doivent toujours utiliser les commutateurs de ligne de commande avec décompte des références.
Utilisation d'assemblages COM Interop dans l'EDI
Toutes les fonctionnalités offertes par les outils en ligne de commande du Kit de développement .NET Framework SDK sont en
fait exposées par la bibliothèque de classes .NET Framework. L'EDI RAD Studio utilise également les classes .NET pour
exposer des fonctionnalités d'interopérabilité. L'EDI offre cependant davantage que les outils en ligne de commande ce qui
simplifie davantage l'interopérabilité avec des composants non managés.
Bibliothèques de types et assemblages d'interopérabilité
L'EDI démarre la création d'assemblages d'interopérabilité via le gestionnaire de projet. Quand vous ajoutez dans votre projet
une référence à une DLL, vous pouvez sélectionner des bibliothèques de types recensées et des DLL non managées, ou vous
pouvez choisir un composant non managé.
L'EDI crée un assemblage d'interopérabilité pour chaque bibliothèque de types ou DLL importée. Les assemblages sont
nommés Interop.NomBibliothèque.dll, où NomBibliothèque est le nom de la bibliothèque de types. Le nom de la bibliothèque est
celui spécifié dans l'instruction library du code source IDL, le nom de fichier de l'assemblage généré peut dont être différent de
celui de la DLL ou de la bibliothèque de types d'origine. Chaque assemblage d'interopérabilité (et tous ses assemblages
dépendants) sont ajoutés à votre projet comme assemblages référencés. Les types contenus dans l'assemblage
d'interopérabilité sont ajoutés à un espace de nommage portant le même nom que la bibliothèque de types ; ici encore, il est
dérivé de l'instruction library du code source IDL.
Si l'assemblage que vous référencez a un assemblage d'interopérabilité primaire, l'EDI le reconnaît et évite de générer un
nouvel assemblage d'interopérabilité. Dans ce cas, l'EDI ajoute une référence à l'assemblage d'interopérabilité primaire dans le
GAC, et il ne copie pas l'assemblage dans le répertoire local de votre projet.
Importation de contrôles ActiveX
Pour utiliser un contrôle ActiveX dans votre application managée, vous devez commencer par ajouter le contrôle à la palette
d'outils. Cela crée à la fois un assemblage d'interopérabilité et un assemblage ActiveX avec une classe wrapper dérivée de
System.Windows.Forms.AxHost. L'assemblage wrapper ActiveX est nommé AxInterop.NomBibliothèque.dll, où
NomBibliothèque est le nom de la bibliothèque de types. Si vous faites glisser le contrôle depuis la palette dans un Windows
Form, cela ajoute automatiquement à votre projet des références aux deux assemblages.
Une fois dans la fiche, le contrôle ActiveX peut être traité comme tous les autres composants .NET. Vous pouvez sélectionner le
contrôle et définir ses propriétés et ses gestionnaires d'événements dans l'inspecteur d'objets. Le wrapper du contrôle ActiveX
expose les propriétés de la classe Windows.Forms.Control, et les propriétés exposées par le contrôle ActiveX sont regroupées
dans la catégorie Divers.
Assemblages d'interopérabilité et gestionnaire de projet
Les assemblages d'interopérabilité (y compris les assemblages wrapper de contrôle ActiveX) générés par l'EDI sont conservés
dans un dossier séparé nommé COMImports, sous votre projet. Chaque assemblage généré a sa propriété "Copie Locale"
définie, ce qui signifie que lors de la construction du projet, l'assemblage est copié dans le dossier où est conservée la cible de
construction finale du projet. Les exceptions à cette règle sont les assemblages primaires d'interopérabilité, qui sont déployés
dans le GAC. Quand vous ajoutez une référence à un assemblage primaire d'interopérabilité, l'EDI ne copie pas l'assemblage
dans le dossier COMImports. L'assemblage reste affiché dans le gestionnaire de projet, mais si vous cliquez avec le bouton
43
1
Utilisation de DrInterop
RAD Studio pour .NET
1.2 Développement d'applications avec du
droit pour afficher ses propriétés, vous remarquerez que le paramètre "Copie locale" est désactivé.
La liste des assemblages référencés (y compris ceux qui ne sont pas des assemblages d'interopérabilité) est un attribut de votre
projet. Si le dossier COMImports (ou l'un des assemblages d'interopérabilité contenus dedans) n'existe pas lors de l'ouverture
d'un projet, l'EDI tente de les recréer. Si l'EDI ne peut recréer un assemblage d'interopérabilité, il est toujours affiché comme
assemblage référencé dans le gestionnaire de projet ; l'EDI met en évidence un tel assemblage afin de vous indiquer qu'il
n'existe pas actuellement (ou qu'il n'est pas recensé) sur la machine.
Voir aussi
Ajout d'une référence à un serveur COM (
see page 148)
Ajout d'un contrôle ActiveX à la palette des outils
Utilisation de Platform Invoke avec Delphi (
1
Interfaces de bibliothèques virtuelles (
see page 46)
see page 54)
1.2.2 Utilisation de DrInterop
L'outil en ligne de commande drinterop examine un assemblage et vous aide à le préparer à être utilisé avec COM/Interop
par tout un jeu de messages de diagnostic.
L'outil drinterop se trouve dans le répertoire bin d'installation du produit. Pour l'appeler, tapez
drinterop assembly
Message
Cause
L'attribut ComVisible de l'assemblage a la valeur L'attribut [assembly:ComVisible(bool)] a la valeur true ou est
true alors qu'il devrait avoir la valeur false.
absent.
Les assemblages doivent être masqués au COM pour réduire les
encombrements de registre.
Donnez à l'attribut ComVisible la valeur false et exposez les
classes et les interfaces de manière sélective.
L'assemblage, la classe ou l'interface est exposé à L'attribut ComVisible de l'assemblage, la classe ou l'interface a la
COM mais ne contient pas l'attribut Guid.
valeur true mais ne contient pas d'attribut Guid.
Il faut générer et enregistrer une bibliothèque de types Ce message est généré quand une bibliothèque de types est
pour assemblage.
introuvable dans le répertoire de l'assemblage.
L'assemblage
ne
TypeLibVersion.
44
contient
pas
[assembly:
l'attribut L'assemblage
ne
contient
pas
l'attribut
TypeLibVersion(x,y)].
Par défaut, la génération des numéros de version des bibliothèques
de types n'utilise que les deux premiers numéros de la version de
l'assemblage. L'utilisation de l'attribut TypeLibVersion peut aider à
éviter les problèmes dans les cas où deux assemblages produiraient
la même bibliothèque de types parce que les deux premiers chiffres
de leurs numéros de version respectifs seraient identiques.
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de Platform Invoke avec Delphi
Pour réduire la taille du registre, ajoutez l'attribut La classe ne contient pas l'attribut ClassInterface.
[ClassInterface(ClassInterfaceType.None)] Par défaut, chaque classe entraîne la création de l'interface
à la classe.
correspondante, où le nom de la classe est précédé d'un caractère
de soulignement. Aucune méthode n'est associée à cette interface.
Pour réduire la taille et l'encombrement du registre, ajoutez l'attribut
[ClassInterface(ClassInterfaceType.None)] à la classe.
Remarque: L'outil drinterop
n'imprime aucun message s'il ne trouve aucune des conditions ci-dessus.
1
1.2.3 Déploiement des applications Interop COM
Il faut garder deux choses importantes à l'esprit lors de l'utilisation de composants non managés. Tout d'abord, n'oubliez pas
qu'un assemblage d'interopérabilité ne remplace pas le serveur COM ; il lui sert de proxy, de substitut. Les assemblages
d'interopérabilité générés par tlbimp et RAD Studio ne sont pas une transformation du code non managé du composant en
code managé. Chaque fichier nécessité par le composant dans un environnement de déploiement non managé, doit également
être déployé dans un environnement managé, en plus des assemblages d'interopérabilité. Deuxièmement, les services
d'interopérabilité du .NET Framework n'annulent pas la nécessité de recenser le serveur COM sur la machine de l'utilisateur
final. Sachez que l'obligation de recensement vaut également lors du développement de votre application managée.
Comme pour tous les autres assemblages .NET, un assemblage d'interopérabilité peut être déployé avec l'exécutable managé
dans le dossier d'installation ou il peut être déployé dans le GAC. Si vous déployez l'assemblage d'interopérabilité dans le GAC,
vous devez lui donner un nom fort lors du développement. Les assemblages primaires d'interopérabilité sont toujours déployés
dans le GAC ; mais ce n'est pas parce qu'un assemblage est déployé dans le GAC que cela en fait automatiquement un
assemblage primaire d'interopérabilité. Un assemblage primaire d'interopérabilité est conçu comme assemblage primaire
d'interopérabilité en utilisant l'option de ligne de commande /primary de l'utilitaire tlbimp. Actuellement l'EDI n'a pas de gestion
intégrée de la création d'assemblages primaires d'interopérabilité. Les serveurs COM non managés peuvent être déployés
n'importe où sur la machine de l'utilisateur final, mais comme indiqué précédemment, vous devez toujours recenser les
composants non managés lors de l'installation de votre application.
Voir aussi
Présentation CodeGear du déploiement d'applications
Présentation Microsoft du déploiement d'applications
1.2.4 Utilisation de Platform Invoke avec Delphi pour .NET
Cette rubrique décrit les techniques de base de l'utilisation des APIs non managées. Certaines erreurs et certains pièges
courants sont signalés, et des informations de référence rapide pour la conversion des types de données Delphi sont fournies.
Cette rubrique ne tente pas de présenter les fondements de platform invoke ou du marshaling de données. Reportez-vous aux
liens présents à la fin de cette rubrique pour plus d'informations sur platform invoke et le marshaling. Une compréhension des
attributs et de la manière dont ils s'utilisent est aussi fortement recommandée avant de lire ce document.
L'API Win32 est utilisée pour plusieurs exemples. Pour plus de détails sur les fonctions d'API mentionnées, consultez la
documentation du SDK Windows Platform.
Cette section aborde les sujets suivants :
45
Utilisation de Platform Invoke avec Delphi
RAD Studio pour .NET
1.2 Développement d'applications avec du
• Appel de fonctions non managées
• Structures
• Fonctions de callback
• Transmission de références d'objets
• Utilisation d'interfaces COM
Appel de fonctions non managées
Pour l'appel de fonctions non managées, il est nécessaire de créer une déclaration managée de la fonction qui représentera les
types non managés. Les fonctions acceptent souvent des pointeurs sur des données qui peuvent être de types variables. C'est,
par exemple, le cas d'une fonction de l'API Win32 SystemParametersInfo qui est déclarée comme suit :
BOOL SystemParametersInfo(
UINT uiAction, // paramètre
UINT uiParam,
// dépend de
PVOID pvParam, // dépend de
UINT fWinIni
// option de
);
1
système à lire ou à écrire
l'action à entreprendre
l'action à entreprendre
mise à jour du profil utilisateur
Selon la valeur de uiAction, pvParam peut être une structure parmi plusieurs dizaines de structures différentes ou de types
de données simples. Comme il n'est pas possible de représenter cela au moyen d'une déclaration managée unique, il est
nécessaire de déclarer plusieurs versions surchargées de la fonction (voir Borland.Vcl.Windows.pas), où chaque surcharge
couvre un cas particulier. Le paramètre pvParam peut aussi recevoir la déclaration générique IntPtr. La charge du marshaling
repose ainsi sur l'appelant au lieu de reposer sur le marshaler intégré. Notez que les types de données utilisés dans une
déclaration managée d'une fonction non managée doivent être de types pris en charge par le marshaler par défaut. Sinon,
l'appelant doit déclarer le paramètre IntPtr et prendre la responsabilité du marshaling des données.
Types de données
La plupart des types de données n'ont pas besoin d'être modifiés, à l'exception des types pointeurs et chaînes. Le tableau
suivant montre des types de données couramment utilisés, ainsi que la manière de les convertir pour du code managé :
Type de données non managé
Type de données managé
Paramètre d'entrée
Paramètre de sortie
Pointeur sur chaîne (PChar)
String
StringBuilder
Paramètre/tampon non typé
TBytes
TBytes
Pointeur sur structure (PRect)
const TRect
var TRect
Pointeur sur type simple (PByte)
const Byte
var Byte
Pointeur sur tableau (PInteger)
array of Integer
array of Integer
Pointeur sur type pointeur (^PInteger)
IntPtr
IntPtr
IntPtr peut aussi représenter tous les types pointeurs et chaînes, auquel cas vous devez effectuer manuellement le marshalling
des données en utilisant la classe Marshal. Avec les fonctions recevant un tampon de texte, la solution la plus simple consiste à
utiliser la classe StringBuilder. L'exemple suivant montre comment utiliser un StringBuilder pour recevoir un tampon de texte :
function GetText(Window: HWND; BufSize: Integer = 1024): string;
var
Buffer: StringBuilder;
begin
Buffer := StringBuilder.Create(BufSize);
GetWindowText(Window, Buffer, Buffer.Capacity);
Result := Buffer.ToString;
end;
La classe StringBuilder est automatiquement marshalée en tampon non managé et inversement. Dans certains cas, il peut être
46
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de Platform Invoke avec Delphi
pratique ou possible d'utiliser un StringBuilder. Les exemples suivants montrent comment marshaler des données et lire des
chaînes en utilisant SendMessage :
procedure SetText(Window: HWND; Text: string);
var
Buffer: IntPtr;
begin
Buffer := Marshal.StringToHGlobalAuto(Text);
try
Result := SendMessage(Window, WM_SETTEXT, 0, Buffer);
finally
Marshal.FreeHGlobal(Buffer);
end;
end;
Un tampon non managé est alloué, et la chaîne y est copiée au moyen d'un appel à StringToHGlobalAuto. Le tampon doit
être libéré lorsqu'il n'est plus nécessaire. Pour marshaler un pointeur sur une structure, utilisez la méthode Marshal.
StructureToPtr afin de copier le contenu de la structure dans le tampon mémoire non managé.
L'exemple suivant montre comment recevoir un tampon de texte et marshaler les données dans une chaîne :
function GetText(Window: HWND; BufSize: Integer = 1024): string;
var
Buffer: IntPtr;
begin
Buffer := Marshal.AllocHGlobal(BufSize * Marshal.SystemDefaultCharSize);
try
SendMessage(Window, WM_GETTEXT, BufSize, Buffer);
Result := Marshal.PtrToStringAuto(Buffer);
finally
Marshal.FreeHGlobal(Buffer);
end;
end;
Il importe de s'assurer que le tampon soit d'une taille suffisante, et l'utilisation de la méthode SystemDefaultCharSize garantira
que le tampon peut contenir BufSize caractères sur n'importe quel système.
Techniques avancées
Lors de l'utilisation d'API non managées, il est courant de transmettre des paramètres, soit comme pointeurs, soit avec la valeur
NULL. Etant donné que les traductions d'API managées n'utilisent pas les types pointeurs, il peut être nécessaire de créer une
version surchargée supplémentaire de la fonction, avec le paramètre pouvant valoir NULL déclaré IntPtr.
Cas spéciaux
Il existe des cas où une classe StringBuilder et même la classe Marshal seront incapables de traiter correctement les données
qui doivent être transmises à une fonction non managée. C'est par exemple le cas lorsque la chaîne que vous devez transmettre
ou recevoir contient plusieurs chaînes séparées par des caractères NULL. Etant donné que le marshaler par défaut considérera
le premier NULL comme fin de la chaîne, les données seront tronquées (cela s'applique également aux méthodes
StringToHGlobalXXX et PtrToStringXXX). Dans cette situation, des TBytes peuvent être utilisés (avec les fonctions
PlatformStringOf et PlatformBytesOf de Borland.Delphi.System pour convertir le tableau d'octets vers/à partir d'une
chaîne). Notez que ces fonctions utilitaires n'ajoutent et ne suppriment pas de caractères NULL de terminaison.
Lors de l'utilisation d'interfaces COM, l'énumération UnmanagedType (utilisée par la classe MarshalAsAttribute) a une valeur
spéciale, LPStruct. Cette valeur n'est valide qu'avec une classe System.Guid, provoquant la conversion par le marshaler du
paramètre en une structure Win32 GUID. La fonction CoCreateInstance déclarée dans Delphi 7 sous la forme :
function CoCreateInstance([MarshalAs(UnmanagedType.LPStruct)] clsid: TCLSID;
[MarshalAs(UnmanagedType.IUnknown)] unkOuter: TObject;
dwClsContext: Longint;
[MarshalAs(UnmanagedType.LPStruct)] iid: TIID;
[MarshalAs(UnmanagedType.Interface)] out pv
): HResult;
47
1
Utilisation de Platform Invoke avec Delphi
RAD Studio pour .NET
1.2 Développement d'applications avec du
Il s'agit actuellement de la seule utilisation documentée de UnmanagedType.LPStruct.
Structures
La différence la plus importante entre l'appel de fonctions non managées et la transmission de structures à des fonctions non
managées réside dans le fait que le marshaler par défaut présente des restrictions majeures lors de l'utilisation de structures. La
plus importante d'entre elles est que les tableaux dynamiques, les tableaux de structures et la classe StringBuilder ne peuvent
pas être utilisés dans les structures. Dans ces situations, IntPtr est nécessaire (même si dans certains cas il est possible
d'utiliser string couplé à différents attributs de marshaling pour les chaînes).
Types de données
Le tableau suivant montre des types de données couramment utilisés, ainsi que la manière de les "traduire" pour du code
managé :
1
Type de données non managé
Type de données
managé
Paramètre d'entrée
Paramètre de sortie
Pointeur sur chaîne (PChar)
String
IntPtr
Tableau de caractères (array[a..b] of Char)
String
Tableau de type valeur (array[a..b] of Byte)
array[a..b]
Byte
Tableau dynamique (array[0..0] of type)
IntPtr
IntPtr
Tableau de struct (array[1..2] of TRect)
IntPtr ou flatten
IntPtr ou flatten
Pointeur sur structure (PRect)
IntPtr
IntPtr
Pointeur sur type simple (PByte)
IntPtr
IntPtr
Pointeur sur tableau (PInteger)
IntPtr
IntPtr
Pointeur sur type pointeur (^PInteger)
IntPtr
IntPtr
String
of array[a..b]
Byte
of
Lors de l'utilisation de tableaux et de chaînes dans les structures, l'attribut MarshalAs permet de décrire des informations
supplémentaires sur le type de données pour le marshaler par défaut. Un enregistrement déclaré dans Delphi 7, par exemple :
type
TMyRecord = record
IntBuffer: array[0..31] of Integer;
CharBuffer: array[0..127] of Char;
lpszInput: LPTSTR;
lpszOutput: LPTSTR;
end;
serait déclaré comme suit dans RAD Studio :
type
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
TMyRecord = record
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
IntBuffer: array[0..31] of Integer;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
CharBuffer: string;
[MarshalAs(UnmanagedType.LPTStr)]
lpszInput: string;
lpszOutput: IntPtr;
end;
Les déclarations ci-dessus supposent que les chaînes contiennent des TChar dépendants de la plate-forme (tels qu'ils sont
couramment utilisés par l'API Win32). Il importe de noter que pour recevoir un texte dans lpszOutput, il est nécessaire
d'appeler la méthode Marshal. AllocHGlobal avant de transmettre la structure à une fonction d'API.
48
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de Platform Invoke avec Delphi
Une structure peut contenir des structures, mais pas de pointeurs sur des structures. Dans ces situations, il est nécessaire de
déclarer un IntPtr et d'utiliser la méthode Marshal. StructureToPtr pour transférer les données de la structure managée vers la
mémoire non managée. Notez que StructureToPtr n'alloue pas la mémoire nécessaire (cette opération doit être effectuée
séparément). Assurez-vous d'utiliser Marshal. SizeOf pour déterminer la quantité de mémoire nécessaire, car la méthode SizeOf
de Delphi n'a pas connaissance de l'attribut MarshalAs (dans l'exemple ci-dessus, CharBuffer occuperait 4 octets avec la
méthode SizeOf de Delphi alors qu'il devrait en fait occuper 128 octets sur un système à un octet). Les exemples suivants
montrent comment envoyer des messages qui transmettent des pointeurs à une structure :
procedure SetRect(Handle: HWND; const Rect: TRect);
var
Buffer: IntPtr;
begin
Buffer := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TRect)));
try
Marshal.StructureToPtr(TObject(Rect), Buffer, False);
SendMessage(Handle, EM_SETRECT, 0, Buffer);
finally
Marshal.DestroyStructure(Buffer, TypeOf(TRect));
end;
end;
1
procedure GetRect(Handle: HWND; var Rect: TRect);
var
Buffer: IntPtr;
begin
Buffer := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TRect)));
try
SendMessage(Handle, EM_GETRECT, 0, Buffer);
Rect := TRect(Marshal.PtrToStructure(Buffer, TypeOf(TRect)));
finally
Marshal.DestroyStructure(Buffer, TypeOf(TRect));
end;
end;
Il est important d'appeler DestroyStructure plutôt que FreeHGlobal si la structure contient des champs avec lesquels la couche
de marshaling doit libérer des tampons supplémentaires (voir la documentation de DestroyStructure pour plus de détails).
Rubriques avancées
En utilisant des API non managées, il n'est pas rare de devoir convertir un tableau d'octets en structure (ou de récupérer un ou
plusieurs champs d'une structure contenue dans un tableau d'octets) ou vice versa. Bien que la classe Marshal contienne une
méthode permettant d'obtenir le décalage d'un champ donné, elle est extrêmement lente et devrait être évitée dans la plupart
des situations. Des tests de performances informels montrent que pour une structure avec huit ou neuf champs numériques, il
est beaucoup plus rapide d'allouer un bloc de mémoire non managée, de copier le tableau d'octets dans la mémoire non
managée puis d'appeler PtrToStructure plutôt que de trouver la position d'un champ seulement en utilisant Marshal. OffsetOf
puis de convertir les données à l'aide de la classe BitConverter. Borland.Vcl.WinUtils contient des fonctions utilitaires pour
effectuer des conversions entre tableaux d'octets et structures (voir StructureToBytes et BytesToStructure).
Cas spéciaux
Il existe des cas où un traitement personnalisé est nécessaire, comme par exemple l'envoi d'un message avec un pointeur sur
un tableau d'entiers. Pour de telles situations, la classe Marshal fournit des méthodes pour copier directement les données dans
le tampon non managé, à des décalages spécifiés (pour vous permettre de construire un tableau de type de données
personnalisé après avoir alloué un tampon). L'exemple suivant montre comment envoyer un message où LParam est un
pointeur sur un tableau d'Integer :
function SendArrayMessage(Handle: HWND; Msg: UINT; WParam: WPARAM;
LParam: TIntegerDynArray): LRESULT;
var
Buffer: IntPtr;
begin
49
Utilisation de Platform Invoke avec Delphi
RAD Studio pour .NET
1.2 Développement d'applications avec du
Buffer := Marshal.AllocHGlobal(Length(LParam) * SizeOf(Integer));
try
Marshal.Copy(LParam, 0, Buffer, Length(LParam));
Result := SendMessage(Handle, Msg, WParam, Buffer);
finally
Marshal.FreeHGlobal(Buffer);
end;
end;
Fonctions de callback
Lors de la transmission d'un pointeur de fonction managée à une API non managée, il est nécessaire de maintenir une référence
sur le délégué, faute de quoi il sera éliminé par le nettoyage de la mémoire. Si vous transmettez directement un pointeur à votre
fonction managée, un délégué temporaire sera créé, et dès qu'il sortira de la portée (à la fin de MyFunction dans l'exemple
ci-après), il sera soumis au nettoyage de la mémoire. Considérez le code Delphi 7 suivant :
1
function MyFunction: Integer;
begin
...
RegisterCallback(@MyCallback);
...
end;
Pour fonctionner dans un environnement managé, ce code devra prendre la forme suivante :
const
MyCallbackDelegate: TFNMyCallback = @MyCallback;
function MyFunction: Integer;
begin
...
RegisterCallback(MyCallbackDelegate);
...
end;
Cela garantira que le callback pourra être appelé dès lors que MyCallbackDelegate sera dans la portée.
Types de données
Les mêmes règles s'appliquent aux callbacks comme à toute autre fonction d'API non managée.
Cas spéciaux
Tout paramètre utilisé dans un processus asynchrone doit être déclaré IntPtr. Le marshaler libérera la mémoire qu'il a allouée
pour les types non managés au retour de l'appel de la fonction. Si vous utilisez un IntPtr, il est de votre responsabilité de libérer
tout espace mémoire alloué.
Transmission de références d'objets
Lorsque vous utilisez, par exemple, l'API Windows, des références d'objets sont quelquefois transmises à l'API pour être
stockées puis retransmises à l'application pour le traitement habituellement associé à un événement donné. Cela peut toujours
s'effectuer dans .NET, mais il est nécessaire d'accorder une attention spéciale au fait qu'une référence soit conservée sur tous
les objets (sinon, ils pourront être et seront éliminés par le nettoyage de la mémoire).
Types de données
Types de données non managés
Pointeur (référence d'objet, données utilisateur)
50
Type de données managé
Fournir des données
Recevoir
données
GCHandle
GCHandle
des
1.2 Développement d'applications avec du
RAD Studio pour .NET
Utilisation de Platform Invoke avec Delphi
GCHandle offre le principal moyen pour transmettre les références d'un objet sur le code non managé et faire en sorte que le
nettoyage de la mémoire n'ait pas lieu. Un GCHandle doit être alloué, puis libéré par la suite lorsqu'il n'est plus nécessaire. Il
existe plusieurs types de GCHandle, GCHandleType.Normal étant le plus utile lorsqu'un client non managé conserve la seule
référence. Pour transmettre un GCHandle à une fonction d'API après son allocation, transtypez-le en IntPtr (puis éventuellement
en LongInt, selon la déclaration non managée). Le IntPtr peut être par la suite retranstypé en GCHandle. Notez que IsAllocated
doit être appelée avant d'accéder à la propriété Target, comme illustré ci-dessous :
procedure MyProcedure;
var
Ptr: IntPtr;
Handle: GCHandle;
begin
...
if Ptr <> nil then
begin
Handle := GCHandle(Ptr);
if Handle.IsAllocated then
DoSomething(Handle.Target);
end;
...
end;
1
Techniques avancées
L'utilisation d'un GCHandle, même si elle est relativement simple, est plutôt coûteuse en termes de performances. Elle ouvre
également la porte à des pertes de ressources si les handles ne sont pas libérés correctement. Si des références d'objets sont
maintenues dans le code managé, il est possible de transmettre à l'API non managée un index unique, par exemple le code de
hachage renvoyé par la méthode GetHashCode, à la place d'une référence d'objet. Il est possible de maintenir une table de
hachage du côté managé pour faciliter la lecture d'une instance d'objet à partir d'une valeur de hachage si nécessaire. Vous
trouverez un exemple d'utilisation de cette technique dans la classe TTreeNodes (dans Borland.Vcl.ComCtrls).
Utilisation d'interfaces COM
Lors de l'utilisation d'interfaces COM, une approche similaire est entreprise lors de l'utilisation d'API non managées. L'interface
doit être déclarée au moyen d'attributs personnalisés pour décrire l'interface de type et le GUID. Les méthodes sont ensuite
déclarées en utilisant la même approche que pour les API non managées. L'exemple suivant utilise l'interface IAutoComplete,
définie comme suit dans Delphi 7 :
IAutoComplete = interface(IUnknown)
['{00bb2762-6a77-11d0-a535-00c04fd7d062}']
function Init(hwndEdit: HWND; punkACL: IUnknown;
pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall;
function Enable(fEnable: BOOL): HRESULT; stdcall;
end;
Dans RAD Studio, elle est déclarée comme suit :
[ComImport, GuidAttribute('00BB2762-6A77-11D0-A535-00C04FD7D062'),
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
IAutoComplete = interface
function Init(hwndEdit: HWND; punkACL: IEnumString;
pwszRegKeyPath: IntPtr; pwszQuickComplete: IntPtr): HRESULT;
function Enable(fEnable: BOOL): HRESULT;
end;
Notez les attributs personnalisés utilisés pour décrire le GUID et le type d'interface. Il est aussi essentiel d'utiliser la classe
ComImportAttribute. Il convient de noter plusieurs points importants lors de l'importation d'interfaces COM. Il n'est pas
nécessaire d'implémenter les méthodes IUnknown/IDispatch, et l'héritage n'est pas pris en charge.
51
Utilisation de Platform Invoke avec Delphi
RAD Studio pour .NET
1.2 Développement d'applications avec du
Types de données
Les mêmes règles que pour les fonctions non managées s'appliquent à la plupart des types de données, avec les ajouts
suivants :
Type de données non managé
1
Type de données managé
Fournir des données
Recevoir des données
GUID
System.Guid
System.Guid
IUnknown
TObject
TObject
IDispatch
TObject
TObject
Interface
TObject
TObject
Variant
TObject
TObject
SafeArray (of type)
array of <type>
array of <type>
BSTR
String
String
L'utilisation de l'attribut personnalisé MarshalAsAttribute est nécessaire pour certaines utilisations ci-dessus de TObject, en
spécifiant le type non managé exact (tel que UnmanagedType.IUnknown, UnmanagedType.IDispatch ou
UnmanagedType.Interface). C'est également vrai de certains types de tableaux. Parmi les exemples de spécification explicite du
type non managé figure la méthode Next de l'interface IEnumString. L'API Win32 déclare Next comme suit :
HRESULT Next(
ULONG celt,
LPOLESTR * rgelt,
ULONG * pceltFetched
);
Dans RAD Studio, la déclaration serait :
function Next(celt: Longint;
[out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex =
0)]
rgelt: array of string;
out pceltFetched: Longint
): Integer;
Techniques avancées
Lors de l'utilisation de safearrays, la couche marshal convertit automatiquement (par exemple) un tableau d'octets en type
safearray correspondant. La couche marshal est très sensible aux différences de types lors de la conversion de safearrays. Si le
type du safearray ne correspond pas exactement au type du tableau managé, une exception est déclenchée. Certains
safearrays Win32 ne définissent pas le type du safearray correctement à la création du tableau, ce qui conduit à une différence
de types dans la couche marshal lors d'une utilisation à partir de .NET. Les solutions consistent soit à faire en sorte que le
safearray soit créé correctement, soit à outrepasser la conversion automatique de la couche marshal. La deuxième solution peut
être risquée (mais elle sera peut-être la seule solution possible si vous n'avez pas la possibilité de changer le serveur COM
fournissant les données). Considérez la déclaration suivante :
function AS_GetRecords(const ProviderName: WideString; Count: Integer;
out RecsOut: Integer; Options: Integer; const CommandText: WideString;
var Params: OleVariant; var OwnerData: OleVariant): OleVariant;
Si la valeur renvoyée est toujours un safearray (qui ne décrit pas son type correctement) enveloppé dans un variant, nous
pouvons changer la déclaration comme suit :
type
TSafeByteArrayData = packed record
52
1.2 Développement d'applications avec du
RAD Studio pour .NET
Interfaces de bibliothèques virtuelles
VType: Word;
Reserved1: Word;
Reserved2: Word;
Reserved3: Word;
VArray: IntPtr; { Pointeur sur le SafeArray réel }
end;
function AS_GetRecords(const ProviderName: WideString; Count: Integer;
out RecsOut: Integer; Options: Integer; const CommandText: WideString;
var Params: OleVariant; var OwnerData: OleVariant): TSafeByteArrayData;
Sachant qu'un OleVariant est un enregistrement, l'enregistrement TSafeByteArrayData peut être extrait du TVarData de Delphi 7
(comme dans le cas où le type de données est varArray). L'enregistrement permettra d'accéder au pointeur brut sur le safearray,
à partir duquel des données pourront être extraites. En utilisant une structure à la place d'un OleVariant, la couche marshal ne
tentera pas d'interpréter le type de données du tableau. Vous aurez toutefois la charge d'extraire les données du safearray réel.
Cas spéciaux
Bien qu'il soit préférable d'utiliser Activator.CreateInstance lors de la création d'une instance, celle-ci n'est pas totalement
compatible avec CoCreateInstanceEx. Lors de l'utilisation de serveurs distants, CreateInstance tentera toujours d'invoquer le
serveur localement, avant de tenter d'invoquer le serveur sur la machine distante. Le seul contournement actuellement connu
consiste à utiliser CoCreateInstanceEx.
Comme l'héritage n'est pas pris en charge, une interface descendante doit déclarer les méthodes de l'ancêtre. Voici l'interface
IAutoComplete2, qui étend IAutoComplete.
[ComImport, GuidAttribute('EAC04BC0-3791-11d2-BB95-0060977B464C'),
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
IAutoComplete2 = interface(IAutoComplete)
// Méthodes IAutoComplete
function Init(hwndEdit: HWND; punkACL: IEnumString;
pwszRegKeyPath: IntPtr; pwszQuickComplete: IntPtr): HRESULT;
function Enable(fEnable: BOOL): HRESULT;
//
function SetOptions(dwFlag: DWORD): HRESULT;
function GetOptions(var dwFlag: DWORD): HRESULT;
end;
Voir aussi
Marshaling de données avec Platform Invoke
Utilisation de l'interopérabilité COM dans les applications managées (
Interfaces de bibliothèques virtuelles (
see page 40)
see page 54)
1.2.5 Interfaces de bibliothèques virtuelles
Cette rubrique explique comment utiliser une fonctionnalité de Delphi appelée Interfaces de bibliothèques virtuelles. Les
Interfaces de bibliothèques virtuelles vous permettent de découvrir, de charger et d'appeler du code non managé à l'exécution,
sans utiliser l'attribut DllImport.
PInvoke standard
Pour appeler une fonction non managée à partir d'un code managé, vous devez utiliser un service .NET appelé Platform Invoke
ou PInvoke. Le service Platform Invoke nécessite de déclarer dans le code source un prototype pour chaque fonction non
managée que vous souhaitez appeler. Vous pouvez effectuer cette opération dans une classe .NET existante ou créer une
classe totalement nouvelle pour organiser les prototypes. Vous devez également baliser chaque déclaration de prototype non
managé au moyen de l'attribut DllImport.
53
1
Interfaces de bibliothèques virtuelles
RAD Studio pour .NET
1.2 Développement d'applications avec du
L'attribut DllImport nécessite de spécifier le nom de la DLL dans laquelle la fonction non managée réside. Comme le
prototype non géré est balisé avec l'attribut DllImport au moment de la compilation, la recherche dynamique de DLL et leurs
fonctions non managées exportées est difficile. De plus, si la fonction non managée n'est pas réellement exportée à partir de la
DLL nommée dans l'attribut DllImport, une erreur d'exécution se produira. Pour éviter une erreur d'exécution, vous devez
utiliser LoadLibrary pour charger la DLL exacte requise, puis appeler GetProcAddress pour vérifier l'existence de la
fonction non managée. Malgré cela, vous ne pourrez pas appeler la fonction directement en utilisant le pointeur renvoyé par
GetProcAddress. A la place, vous devrez passer le pointeur à une fonction dans une autre DLL non managée. Cette fonction
utilisera alors le pointeur pour effectuer l'appel.
Utilisation de Interfaces de bibliothèques virtuelles
Les Interfaces de bibliothèques virtuelles doivent encore utiliser le service Platform Invoke pour appeler du code non managé.
Toutefois, au lieu d'utiliser l'attribut DllImport, les Interfaces de bibliothèques virtuelles créent une interface sur la DLL non
managée à l'exécution, en utilisant des méthodes de l'espace de nommage .NET System.Reflection.Emit.
1
L'utilisation des Interfaces de bibliothèques virtuelles nécessite d'effectuer les trois opérations suivantes :
• Ajouter Borland.Vcl.Win32 à la clause uses.
• Déclarer une interface contenant les fonctions exportées et non managées que vous souhaitez appeler.
• Appeler la fonction Supports pour vérifier que la DLL non managée existe et que les fonctions dans la déclaration d'interface
sont vraiment exportées.
Si la fonction Supports renvoie True, la DLL prend en charge toutes les fonctions nommées dans la déclaration de l'interface, et
vous savez donc que leur appel est sans danger. Dans la déclaration de l'interface, il n'est pas nécessaire d'utiliser l'attribut
DllImport sur les prototypes.
Par exemple, si vous disposez d'une DLL appelée MyFunctions.dll, contenant les fonctions exportées suivantes :
function AFunction
: Boolean;
function AnotherFunction : Boolean;
Pour appeler ces fonctions à partir d'un code managé, ajoutez l'unité Borland.Vcl.Win32 à la clause uses et déclarez une
interface dans Delphi :
uses Borland.Vcl.Win32, ...;
...
type
IMyFunctions = interface
['Votre GUID'] // Pas vraiment nécessaire, mais conseillé
function AFunction
: Boolean;
function AnotherFunction : Boolean;
end;
La signature de la fonction Supports est :
function Supports(ModuleName: string; Source: System.Type; var Instance) : Boolean;
Pour appeler les fonctions non managées, appelez d'abord Supports pour charger la DLL, puis créez l'interface sur la DLL :
var
MyFunctions : IMyFunctions;
begin
if Supports("MyFunctions.dll", IMyFunctions, MyFunctions) then
if MyFunctions.AFunction then
begin
...
end;
end;
end;
Les Interfaces de bibliothèques virtuelles ont les mêmes limitations en matière de types de paramètres natifs compatibles et de
leur mappage sur des types .NET. En outre, toutes les fonctions non managées sont censées utiliser la convention d'appel
stdcall.
54
1.2 Développement d'applications avec du
RAD Studio pour .NET
Interfaces de bibliothèques virtuelles
Voir aussi
Utilisation de l'interopérabilité COM dans les applications managées (
Utilisation de Platform Invoke avec Delphi (
see page 40)
see page 46)
1
55
Présentation de la visualisation de code
RAD Studio pour .NET
1.3 Modélisation
1.3 Modélisation
Rubriques
Nom
Présentation de la visualisation de code (
Description
see page 57)
La fonctionnalité de visualisation de code est disponible à la fois dans les
versions Entreprise et Architecte de RAD Studio. Tous les autres outils de
modélisation et informations relatives à la modélisation ne s'appliquent qu'à la
version Architecte de RAD Studio.
1
1.3.1 Présentation de la visualisation de code
La fonctionnalité de visualisation de code est disponible à la fois dans les versions Entreprise et Architecte de RAD Studio. Tous
les autres outils de modélisation et informations relatives à la modélisation ne s'appliquent qu'à la version Architecte de RAD
Studio.
Diagrammes de structure statique UML et de visualisation du code
Le diagramme de visualisation de code RAD Studio présente une représentation graphique du code source qui reflète
directement le code source même. Quand vous modifiez le code source, la représentation graphique du diagramme est
actualisée automatiquement. Le diagramme visualisation du code correspond à un diagramme de structure statique UML. Une
vue structurelle de votre projet se concentre sur les packages UML, les types de données, comme les classes ou les interfaces,
et leurs attributs, propriétés et opérations. Un diagramme de structure statique montre également les relations existant entre ces
entités.
Cette section explique la relation entre le code source et le diagramme de visualisation de code.
Remarque: La visualisation de code et les outils de modélisation UML intégrés sont deux caractéristiques séparées et
distinctes de RAD Studio. La visualisation de code désigne la possibilité d'analyser un ensemble arbitraire de codes source et de
faire correspondre les déclarations de ce code à une notation UML. Le diagramme résultant est "dynamique", en ce sens qu'il
reflète toujours l'état actuel du code source, mais vous ne pouvez pas apporter directement de modifications au diagramme de
visualisation de code. Les outils UML pilotés par modèle de RAD Studio vont au-delà en permettant de concevoir l'application
dans l'espace du diagramme. Même si ces deux fonctionnalités du logiciel sont basées sur les technologies de CodeGear
Together, elles utilisent des mécanismes sous-jacents différents pour produire et manipuler le diagramme. La surface de
conception du modèle intégré est conçue autour des fonctionnalités à la conception de l'architecture CodeGear ECO (Enterprise
Core Objects). Ce document couvre seulement la visualisation du code. Pour de plus amples informations sur la construction
des applications avec ECO framework et l'utilisation des experts et des outils de modélisation avec les applications ECO, voir
l'aide en ligne ECO distincte.
Relation entre code source et visualisation du code
Les outils de visualisation de code RAD Studio utilisent la notation et les conventions UML pour représenter graphiquement les
éléments déclarés dans le code source. Le diagramme de visualisation de code vous montre les relations logiques, en termes
UML la structure statique, des classes, interfaces et des autres types définis dans votre projet. L'EDI crée le diagramme de
visualisation de code en associant certaines constructions du code source (comme les déclarations de classes et les
implémentations d'interfaces) à leur équivalent UML, qui sont alors affichés dans le diagramme.
Organisation de niveau supérieur : projets, packages UML et espaces de nommage .NET
A la base, la visualisation de code est constituée par le travail conjoint de deux parties de l'EDI : la fenêtre Vue modèle et le
diagramme visualisation de code. La fenêtre Vue modèle illustre la structure logique de vos projets sous la forme d'une
56
1.3 Modélisation
RAD Studio pour .NET
Présentation de la visualisation de code
arborescence, par opposition à la vue, organisée autour des fichiers, de la fenêtre gestionnaire de projet. Chaque projet d'un
groupe de projets est un noeud de niveau supérieur dans l'arborescence de la Vue modèle.
Imbriqués dans chaque noeud d'arborescence projet, il y a des packages UML. Chaque package UML correspond à une
déclaration d'espace de nommage .NET dans votre code source (les espaces de nommage .NET peuvent correspondre à
plusieurs fichiers source). Il est possible de développer un package UML pour afficher les types déclarés dedans.
Héritage et implémentation des interfaces
Le terme UML désignant la relation entre une classe qui hérite d'une autre classe est le mot généralisation. Quand l'EDI voit une
relation d'héritage dans le code source, il crée un lien de généralisation dans le noeud classe enfant de l'arborescence de la Vue
modèle. Dans le diagramme de visualisation de code, le lien de généralisation est affiché en utilisant la notation UML
standard, une ligne continue avec une pointe vide orientée vers la superclasse.
Le terme UML pour l'implémentation d'interface est réalisation. Comme pour l'héritage, l'EDI crée un lien de réalisation quand
une déclaration de classe implémentant une interface est détectée. Le lien de réalisation apparaît dans la classe
d'implémentation dans l'arborescence Vue modèle et dans le diagramme sous la forme d'un trait pointillé avec une pointe vide
orientée vers l'interface. Il y a un lien de réalisation pour chaque interface implémentée par la classe.
Associations
En UML, une association est un lien de navigation produit quand une classe contient une référence vers une autre classe (par
exemple sous la forme d'un attribut ou d'une propriété). La visualisation de code crée des liens d'association quand une classe
contient un attribut ou une propriété qui est d'un type de données non primitif. Dans le diagramme, le lien d'association existe
entre la classe contenant le membre non primitif et le type de données de ce membre.
Membres de classe : attributs, opérations, propriétés et types imbriqués
La visualisation de code peut également associer la déclaration des membres de classe et d'interface à leur équivalent UML.
Dans les éléments du diagramme de visualisation de code, les membres sont regroupés en quatre catégories distinctes :
• Champs : contiennent les déclarations de champs. Le type et l'éventuelle affectation d'une valeur par défaut sont illustrés
dans le diagramme.
• Méthodes: contiennent les déclarations de méthodes. La visibilité, la portée et la valeur de retour sont indiquées.
• Propriétés : Contiennent les déclarations de propriétés Delphi. Le type de la propriété est affiché.
• Classes : Contiennent les déclarations de type classe imbriquées.
La syntaxe UML standard est utilisée pour afficher les déclarations UML des attributs, des opérations et des propriétés. Chacune
des quatre catégories peut être séparément développée ou réduite pour afficher ou masquer les membres qu'elle contient.
Voir aussi
Fonctionnalités UML dans Delphi pour .NET (SKU Architecte uniquement)
Présentation des outils de modélisation intégrés (SKU Architecte uniquement)
Importation et exportation d'un modèle avec XMI (SKU Architecte uniquement) (
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code (
Utilisation de la fenêtre Vue globale (
see page 151)
see page 152)
see page 153)
57
1
Utilisation de Rave Reports dans RAD
RAD Studio pour .NET
1.4 Développement d'états pour les
1.4 Développement d'états pour les applications
.NET
RAD Studio est livré avec Rave Reports de Nevrona. A l'aide des composants d'états, vous pouvez construire des états
complets pour vos applications. Vous pouvez construire des solutions incluant des fonctionnalités de génération d'états, qui
pourront être utilisées et personnalisées par vos clients.
1
Rubriques
Nom
Utilisation de Rave Reports dans RAD Studio (
Description
see page 59)
L'environnement RAD Studio gère l'intégration d'objets états dans vos
applications. Cette intégration vous permet de créer un état en utilisant le
concepteur Rave Reports, ou d'ajouter directement des composants ActiveX
Rave Reports sur vos fiches Web dans le concepteur RAD Studio. Les
utilisateurs de votre application peuvent créer et afficher leurs propres états ou
afficher des états existants. L'intégration de RAD Studio avec Rave Reports vous
permet de :
• Inclure de nouveaux objets état dans les projets.
• Ajouter des objets ActiveX Rave Reports sur des fiches
Web.
1.4.1 Utilisation de Rave Reports dans RAD Studio
L'environnement RAD Studio gère l'intégration d'objets états dans vos applications. Cette intégration vous permet de créer un
état en utilisant le concepteur Rave Reports, ou d'ajouter directement des composants ActiveX Rave Reports sur vos fiches Web
dans le concepteur RAD Studio. Les utilisateurs de votre application peuvent créer et afficher leurs propres états ou afficher
des états existants. L'intégration de RAD Studio avec Rave Reports vous permet de :
• Inclure de nouveaux objets état dans les projets.
• Ajouter des objets ActiveX Rave Reports sur des fiches Web.
Création de nouveaux états dans RAD Studio
Vous pouvez inclure des états Rave dans RAD Studio exactement comme vous le feriez avec d'autres composants tiers. L'état
est stocké comme objet Rave Report distinct. Vous pouvez référencer l'état dans d'autres applications ayant besoin d'appeler ou
de générer cet état. Lorsque vous créez une nouvelle application, vous pouvez inclure l'objet état en y ajoutant une référence
dans le gestionnaire de projets. Rave Reports offre aussi la capacité de connecter votre objet état à une source de données,
ce qui permet à votre application de construire l'état dynamiquement sur la base d'informations de base de données actuelles.
Utilisation de composants ActiveX Rave Reports
Vous pouvez ajouter n'importe quel objet ActiveX Rave Reports à vos applications. La palette d'outils de RAD Studio propose
une liste de tous les objets ActiveX disponibles. Lors de la conception, faites glisser les objets voulus sur une Windows Form ou
une Web Form. Renseignez les propriétés appropriées et modifiez le code dans l'éditeur de code. Il peut être nécessaire de
réinitialiser vos composants .NET et de sélectionner les composants ActiveX dans la boîte de dialogue Composants .NET
installés.
Voir aussi
Méthode de conception d'un état
58
1.5 Développement d'applications avec
RAD Studio pour .NET
1.5 Développement d'applications avec des
composants VCL.NET
VCL.NET est un ensemble étendu des composants VCL qui permettent de construire rapidement des applications avancées
dans Delphi. Avec VCL.NET, vous pouvez fournir vos applications et composants VCL Delphi aux utilisateurs de Microsoft .NET
Framework. Grâce à RAD Studio, vous disposez des avantages du .NET Framework, mais aussi de la convivialité et de la
puissance des outils Delphi de développement d'applications orientées composants.
RAD Studio fournit différents types d'applications : vous pouvez créer des applications Fiche VCL.NET exécutables sur le .NET
Framework, qui utilisent des composants et des contrôles VCL.NET ; vous pouvez créer des applications .NET qui utilisent les
contrôles .NET Framework et .NET sous-jacents tout en proposant du code RAD Studio sous-jacent ; vous pouvez créer de
puissantes applications ASP.NET qui utilisent les contrôles .NET Framework, ASP.NET sous-jacents et offrent aussi du code
RAD Studio sous-jacent. Les rubriques suivantes fournissent de plus amples informations sur les nouvelles fonctionnalités
VCL.NET prises en charge dans RAD Studio.
Rubriques
Nom
Description
Modifications requises en raison du support 64 bits .NET 2.0 (
see page 62)
Des changements ont été apportés afin de prendre en charge .NET 2.0 64 bits.
Ces changements peuvent nécessiter des modifications de code mineures afin
que les applications existantes fonctionnent correctement. Voir Modifications
requises en raison du support 64 bits .NET 2.0 ( see page 167) pour obtenir
des informations détaillées sur les modifications spécifiques requises.
Problèmes de langage au sujet du portage d'applications VCL vers RAD Studio
( see page 63)
La VCL de RAD Studio a été créée avec la compatibilité ascendante pour objectif
principal. Cependant, il y a certaines fonctions pour lesquelles l'environnement
managé de .NET impose des différences dans la façon dont les applications VCL
doivent travailler. Ce document décrit la plupart de ces différences, et indique
certaines des étapes que vous devrez entreprendre pour porter une application
VCL vers l'environnement .NET.
Ce document n'a pas pour but de décrire les nouvelles extensions du langage
Delphi. Il se limite à la façon dont le code Delphi existant est mappé avec le
nouveau langage RAD Studio et le framework... suite ( see page 63)
Portage d'applications VCL (
Lors du portage d'applications VCL de Delphi 7 vers RAD Studio, vous devez
prendre en compte certains problèmes. En plus des éléments de base du
langage à remplacer ou à modifier, vous devez suivre certaines stratégies pour
être sûr de porter vos applications totalement et d'une manière fiable.
Cette rubrique comprend les éléments suivants :
see page 74)
• Problèmes généraux de langage
• Renommage des packages
• Nouvelles fonctionnalités du langage
• Portage des applications client de services Web
Présentation de VCL pour .NET (
see page 76)
La VCL pour .NET est l'infrastructure de programmation pour la construction
d'applications RAD Studio à l'aide de composants VCL. RAD Studio et VCL pour
.NET ont été conçus pour aider les utilisateurs à exploiter la puissance de Delphi
lors de l'écriture de nouvelles applications, ainsi que pour migrer des applications
Win32 existantes vers le .NET Framework.
Ces technologies permettent à un développeur Delphi de migrer vers .NET, en
utilisant ses compétences Delphi et une grande partie de son code source Delphi
existant. RAD Studio prend en charge le développement Microsoft .NET
Framework avec le langage Delphi et la VCL pour... suite ( see page 76)
59
1
Modifications requises en raison du
Portage de clients de services Web (
see page 79)
RAD Studio pour .NET
1.5 Développement d'applications avec
Les services Web RAD Studio utilisent le .NET Framework comme couche de
services. En conséquence, toutes les applications existantes qui sont clientes de
services Web Delphi 7 ou antérieures doivent être modifiées pour utiliser le .NET
Framework.
Cette rubrique comprend :
• Modifications et ajouts à vos applications
• Remarques d'implémentation
1
1.5.1 Modifications requises en raison du support 64 bits
.NET 2.0
Des changements ont été apportés afin de prendre en charge .NET 2.0 64 bits. Ces changements peuvent nécessiter des
modifications de code mineures afin que les applications existantes fonctionnent correctement. Voir Modifications requises en
raison du support 64 bits .NET 2.0 ( see page 167) pour obtenir des informations détaillées sur les modifications spécifiques
requises.
Modifications en raison du support 64 bits
Ce document décrit les modifications requises pour les applications VCL.NET existantes afin d'assurer leur bon fonctionnement
avec les modifications effectuées pour le support .NET 2.0 64 bits.
Pour fournir un support d'exécutable unique, à source unique, pour les deux plates-formes 32 bits et 64 bits, les types de handle
sont passés de LongWord à IntPtr. IntPtr est un type integer de la taille d'un pointeur sur la plate-forme sous-jacente, qui
est implémenté comme une structure dans .NET. Il ne supporte pas les opérations d'affectation, de comparaison et
arithmétiques généralement effectuées sur les handles de la VCL. Pour fournir une compatibilité descendante, une assistance
d'enregistrement a été créée pour supporter les opérations les plus courantes à travers la surcharge des opérateurs.
La plupart du code ne nécessite pas de modification pour s'exécuter sur les deux plates-formes x86 et x64, mais certains cas
requièrent des modifications mineures.
Avertissement: Ces modifications sont nécessaires en raison des changements apportés pour la prise en charge des
systèmes 64 bits. Elles doivent être effectuées pour les applications conçues pour les systèmes 32 bits et 64 bits.
Patterns de code modifiés
Les patterns de code sont sujets à modification dans les zones suivantes :
• Instructions case
• Transtypage en enumérations
• Utilisation de handles avec des ensembles
• Indexation dans les tableaux
• Adoption d'une taille de handle spécifique
• Transtypage en enumérations
Déclarations de l'API Windows
Un certain nombre de déclarations ont été modifiées pour supporter correctement les exécutables uniques pour les deux
plates-formes x86 et x64. Dans la plupart de ces cas, le type d'un paramètre de fonction ou d'un champ de structure a été
modifié, et le compilateur fournit des informations permettant de corriger facilement le code affecté. Les modifications où la
correction est moins évidente sont les changements de types des fonctions callback et les modifications des enregistrements
Variant. Dans ces situations, la liste des enregistrements et des callbacks affectés a été fournie dans Modifications requises en
raison du support 64 bits .NET 2.0 ( see page 167).
60
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
Callbacks modifiés
Les paramètres de quelques callbacks ont été modifiés, ainsi chacune de leurs occurrences doit être modifiée.
Enregistrements Variant modifiés
Les enregistrements Variant sont implémentés dans Delphi.NET comme des enregistrements avec des dispositions de champs
explicites (à l'inverse des dispositions séquentielles représentant la valeur par défaut de .NET Framework). Cela permet à
plusieurs champs d'être "superposés" au même offset de champ, ce qui provoque des déclarations incorrectes lors de
l'exécution sur les plates-formes 64 bits quand la structure contient un champ de taille variable (comme IntPtr). Les
enregistrements Variant avec de tels champs ont été modifiés afin de contenir un seul cas "variant". Les champs restants ont été
changés en propriétés pour obtenir une compatibilité descendante. Dans la plupart des cas, le code source n'est pas affecté par
ces modifications. Toutefois, le passage d'un champ en tant que paramètre var qui est maintenant déclaré comme une
propriété ne nécessite pas de changement de code.
Voir aussi
Modifications requises en raison du support 64 bits .NET 2.0 (
see page 167)
1.5.2 Problèmes de langage au sujet du portage
d'applications VCL vers RAD Studio
La VCL de RAD Studio a été créée avec la compatibilité ascendante pour objectif principal. Cependant, il y a certaines fonctions
pour lesquelles l'environnement managé de .NET impose des différences dans la façon dont les applications VCL doivent
travailler. Ce document décrit la plupart de ces différences, et indique certaines des étapes que vous devrez entreprendre pour
porter une application VCL vers l'environnement .NET.
Ce document n'a pas pour but de décrire les nouvelles extensions du langage Delphi. Il se limite à la façon dont le code Delphi
existant est mappé avec le nouveau langage RAD Studio et le framework VCL. Ce document contient par contre des liens avec
des rubriques spécifiques du guide du langage Delphi, où les nouvelles fonctions du langage sont expliquées en détail.
Cette rubrique couvre les sujets suivants :
• Migration des types de pointeurs
• Migration des types Char et string
• Création et destruction d'objets
• Appel de l'API Win32
• Migration des variants
• Utilisation des ressources
• Modification de OnCompare
Migration des types de pointeurs
Les types de pointeurs ne se conforment pas à CLS, et ne sont pas considérés comme "sûrs" dans le contexte de
l'environnement d'exécution de langage courant .NET. Le portage de VCL a, par conséquent, éliminé les pointeurs, en les
remplaçant par des solutions appropriées telles que des tableaux dynamiques, des indices pointant sur un tableau ou une
chaîne, des références de classes, etc. Lors du portage d'une application VCL, l'une des premières étapes consiste à localiser
les endroits où vous avez utilisé des types de pointeurs et à les remplacer comme il convient.
61
1
Problèmes de langage au sujet du portage
RAD Studio pour .NET
1.5 Développement d'applications avec
Pointeurs non typés
Les pointeurs non typés sont considérés comme du code non sûr. Si votre code inclut des pointeurs non typés, l'utilitaire .NET
PEVerify échouera dans sa vérification. Un code qui ne peut pas être vérifié en ce qui concerne la sécurité des types ne
pourra pas être exécuté dans un environnement sécurisé, tel qu'un serveur Web, un serveur de bases de données SQL, un
client de navigateur Web ou une machine avec des règles de sécurité restrictives.
Dans la VCL, les pointeurs non typés ont été remplacés par des valeurs plus fortement typées. Dans la plupart des cas, là où
vous trouviez un pointeur non typé, vous trouverez maintenant TObject. Par exemple, les éléments de TList sont maintenant du
type TObject, plutôt que du type pointer. Votre code peut transtyper n'importe quel type en objet, et transtyper un TObject en
tout autre type (même des types de valeurs tels que Integer, Double, etc.). Le fait de transtyper TObject en un autre type va
engendrer une erreur d'exécution si l'objet n'est pas, en fait, une instance du type dans lequel vous le transtypez. C'est-à-dire
que ce transtypage a la même sémantique que lorsqu'on utilise l'opérateur as.
1
Dans certains cas, le type Pointer a été remplacé par un type plus précis. Par exemple, sur TObject, la fonction ClassInfo
renvoie une valeur de type Type plutôt qu'un pointeur non typé.
Les pointeurs non typés qui étaient utilisés pour les paramètres dont le type variait suivant le contexte ont été typiquement
remplacés en redéfinissant la routine et en utilisant des paramètres var avec les types possibles. Dans le cas où des pointeurs
non typés sont utilisés avec des appels d'API vers un code non managé (tel que l'API Windows ou des appels vers une couche
d'accès aux données telle que le BDE), le pointeur non typé est remplacé par System.IntPtr. Ainsi, par exemple, le type
TBookmark, défini dans l'unité Db, correspond maintenant à IntPtr.
Un code qui utilisait l'opérateur d'adresse (@) pour convertir une valeur en pointeur non typé doit maintenant changer. Quand le
pointeur non typé s'est transformé en TObject, tout ce que vous avez habituellement besoin de faire est d'éliminer l'opérateur @.
Sur les types de valeurs, vous devrez peut-être remplacer l'opérateur @ par un transtypage en TObject, de façon à ce que la
valeur soit "mise en boîte". Ainsi, le code suivant
var
P: Pointer;
I: Integer;
begin
I := 5;
P := @I;
peut être converti en
var
P: TObject;
I: Integer;
begin
I := 5;
P := TObject(I);
Quand le pointeur non typé a été transformé en IntPtr, vous devez utiliser la classe Marshal pour allouer une portion de mémoire
non managée et y copier une valeur, plutôt que de simplement utiliser l'opérateur @. Ainsi, le code suivant :
var
P: Pointer;
R: TRect;
begin
R := Rect(0, 0, 100, 100);
P := @R;
CallSomeAPI(P);
serait converti en
var
P: IntPtr;
R: TRect;
begin
R := Rect(0, 0, 100, 100);
62
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
P := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TRect)));
try
Marshal.StructureToPtr(TObject(R), P, False);
CallSomeAPI(P);
finally
Marshal.FreeHGlobal(P);
end;
Remarque: Toute la mémoire non managée que vous allouez en utilisant la classe Marshal doit être libérée explicitement. Le
programme de nettoyage .NET ne nettoie pas la mémoire non managée.
Pointeurs de procédures
Quand les pointeurs non typés sont des pointeurs de procédures, ils représentent un cas spécial. Dans le code managé, les
pointeurs de procédures sont remplacés par des délégués .NET, qui sont plus fortement typés. Les déclarations de types
procéduraux sont des déclarations déléguées dans RAD Studio. Vous pouvez obtenir un délégué pour une méthode ou une
routine globale en utilisant l'opérateur @. Le code a la même apparence que lorsqu'on obtient un pointeur de procédure sur la
plate-forme Win32, aussi, dans beaucoup de cas, n'avez-vous rien à changer quand vous portez ce code. Cependant, il est
important de garder à l'esprit que lorsque vous utilisez l'opérateur @, vous obtenez un délégué nouvellement créé, et non un
pointeur.
Si vous transmettez un pointeur de procédure à une API non managée en utilisant l'opérateur @, par exemple,
Handle := SetTimer(0, 0, 1, @TimerProc);
La seule référence au délégué est celle transmise à l'appel d'API car le délégué est créé à la volée. Cela signifie que le
nettoyeur de mémoire va finalement éliminer le délégué après le retour de l'API non managée. Si, comme dans ce cas, le code
non managé appelle la procédure après le retour de l'appel d'API, vous allez rencontrer une exception d'exécution car le délégué
n'existera plus. Vous pouvez contourner cette situation en affectant au délégué une variable globale, et en transmettant la
variable globale à l'API non managée.
Lorsque vous appelez l'API Windows GetProcAddress pour obtenir un pointeur de procédure, celui-ci est renvoyé en tant que
IntPtr. Cette valeur n'est pas un délégué. Vous ne pouvez pas la transtyper en délégué et l'appeler. Au lieu de cela, un tel code
est typiquement traduit pour utiliser Platform Invoke afin d'appeler une API non managée. GetProcAddress est utile pour
déterminer si l'API est disponible de façon à ce que vous n'obteniez pas une exception d'exécution lorsque vous utilisez Platform
Invoke. Ainsi, un code comme celui-ci :
type
TAnimateWindowProc = function(hWnd: HWND; dwTime: DWORD; dwFlags: DWORD): BOOL; stdcall;
var
AnimateWindowProc: TAnimateWindowProc = nil;
UserHandle: HMODULE;
begin
UserHandle := GetModuleHandle('USER32');
if UserHandle <> 0 then
@AnimateWindowProc := GetProcAddress(UserHandle, 'AnimateWindow');
...
if AnimateWindowProc <> nil then
AnimateWindowProc(Handle, 100, AW_BLEND or AW_SLIDE);
serait traduit sur la plate-forme .NET comme suit
[DllImport('user32.dll', CharSet = CharSet.Ansi, SetLastError = True, EntryPoint =
'AnimateWindow')]
function AnimateWindow(hWnd: HWND; dwTime: DWORD; dwFlags: DWORD): BOOL; external;
var
UserHandle: HMODULE;
CanAnimate: Boolean;
begin
UserHandle := GetModuleHandle('USER32');
if UserHandle <> 0 then
CanAnimate := GetProcAddress(UserHandle, 'AnimateWindow') <> nil
else
63
1
Problèmes de langage au sujet du portage
RAD Studio pour .NET
1.5 Développement d'applications avec
CanAnimate := False;
...
if CanAnimate then
AnimateWindow(Handle, 100, AW_BLEND or AW_SLIDE);
Remarque: L'exemple .NET ci-dessus est encore lié en différé à l'API AnimateWindow. Aucune exception ne sera générée
lorsque ce code sera chargé, si la DLL ou la fonction ne sont pas disponibles. L'appel de fonction est résolu seulement lorsque
le code est exécuté pour la première fois.
Pointeurs de chaînes
Un code qui utilise le type PChar a généralement l'un des trois objectifs suivants :
• Le type fait référence à une chaîne à zéro terminal (spécialement lorsqu'il est utilisé avec un appel d'API Windows ou une
fonction RTL plus ancienne).
1
• Le type est utilisé pour naviguer à travers une chaîne lors du traitement de sa valeur.
• Le type est utilisé pour référencer un bloc d'octets, en se basant sur le fait que dans Delphi pour Win32, le type Char est d'un
octet (le type Char occupant deux octets sur la plate-forme .NET).
Dans le premier cas, vous pouvez habituellement remplacer le type PChar par le type string. Dans le cas d'appels d'API
Windows, les versions des API managées utilisent maintenant une chaîne ou StringBuilder à la place d'un PChar, la couche
marshal effectuant les conversions implicitement. Notez que bon nombre de fonctions RTL qui prenaient en charge le type
PChar ont été éliminées de la RTL, et que vous devez les remplacer par les versions correspondantes utilisant le type string.
Le tableau suivant liste les fonctions des unités SysUtils qui ont été éliminées car elles reposaient sur le type PChar, et les
fonctions correspondantes qui utilisent le type string :
Version PChar
Version string
AnsiExtractQuotedStr
AnsiDequotedStr ou DequotedStr
AnsiLastChar, AnsiStrLastChar
(utilisent l'opérateur index et string length)
AnsiStrComp, StrComp
CompareStr, AnsiCompareStr, WideCompareStr
AnsiStrIComp, StrIComp
CompareText, AnsiCompareText, WideCompareText
AnsiStrLComp, StrLComp
System.String.Compare (StartsStr)
AnsiStrLIComp, StrLIComp
System.String.Compare (StartsText)
AnsiStrLower, StrLower
AnsiLowerCase, WideLowerCase,
AnsiStrUpper, StrUpper
UpCase, AnsiUpperCase, WideUpperCase
AnsiStrPos, StrPos, AnsiStrScan, StrScan
Pos
AnsiStrRScan, StrRScan
LastDelimiter
StrLen
Length
StrEnd, StrECopy
(pas d'équivalent)
StrMove, StrCopy, StrLCopy, StrPCopy, StrPLCopy
Copy
StrCat, StrLCat
Opérateur +, Concat
StrFmt
Format, FmtStr
StrLFmt
FormatBuf
FloatToText
FloatToStrF
FloatToTextFmt
FormatFloat
TextToFloat
FloatToStr
Lorsqu'un type PChar est utilisé pour naviguer dans une chaîne, vous devez réécrire le code, en remplaçant le PChar par un
Integer qui représente un indice dans la chaîne. En réécrivant ce type de code, vous devez détecter quand vous avez atteint la
64
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
fin de la chaîne. Lorsque vous utilisez le type PChar, un caractère nul est présent à la fin de la chaîne, et le code reconnaît
typiquement la fin de la chaîne en trouvant ce caractère nul. Dans l'approche chaîne-et-indice, il n'y a pas de caractère nul et
vous devez utiliser la longueur de la chaîne pour identifier la fin de la chaîne. Assurez-vous de vérifier que l'indice n'a pas
dépassé la fin de la chaîne avant de lire un caractère, sans quoi vous obtiendrez une erreur d'exécution.
Remarque: Les données de la chaîne sont immuables, aussi vous ne pouvez pas écrire un seul caractère dans une chaîne
existante en utilisant PChar
. Vous pouvez toutefois accomplir cela en utilisant l'indexation de chaîne (c'est-à-dire s[5]). Quand un PChar est utilisé pour
référencer un bloc d'octets, il est typiquement remplacé soit par un IntPtr soit par un tableau dynamique d'octets (TBytes). S'il
est remplacé par un IntPtr, les problèmes de traduction sont les mêmes que pour le remplacement d'un pointeur non typé.
Quand il est remplacé par TBytes, vous devrez peut-être remplacer quelques valeurs PChar par un indice dans le tableau
d'octets s'il est utilisé pour naviguer dans le bloc d'octets. Cela est similaire au fait de remplacer PChar par un nombre entier
pour naviguer dans une chaîne, mis à part que les indices dans TBytes sont en base 0 alors que les indices dans les chaînes
sont en base 1.
Ecriture de chaînes dans des flux
Dans Delphi pour Win32, il est courant de trouver un code similaire à ce qui suit :
S1 := 'Ceci est une chaîne de test' ;
Stream.WriteBuffer(S1[1], Length(S1));
Sur la plate-forme Win32, ce code a pour résultat que la chaîne entière est écrite dans le flux. Sur la plate-forme .NET, toutefois,
ce même code produit un résultat assez différent. Sur la plate-forme .NET, le compilateur génère un appel à la version Char
redéfinie de WriteBuffer, avec pour résultat qu'un seul caractère (S1[1]) écrit dans le flux.
Autres types de pointeurs
D'autres types de pointeurs ont été éliminés de la VCL. Typiquement, ils sont remplacés par le type sur lequel le pointeur original
pointait. Si le type du pointeur était le paramètre d'un appel de procédure, il est généralement converti en paramètre var si bien
que le code résultant transmet encore une référence plutôt qu'une copie de l'argument. Parfois, il est utile de changer un type de
valeur en un type de classe afin que, au lieu de transmettre un pointeur typé, votre code transmette une référence d'objet.
Migration des types Char et String
Dans RAD Studio, le type string correspond au type .NET String, et vous pouvez accéder librement aux membres de String en
utilisant un type string Delphi, comme illustré dans l'exemple suivant :
var
S: string;
begin
S := 'Ceci est une chaîne' ;
// Notez que le transtypage n'est pas nécessaire.
// S := System.String(S).PadRight(25);
// Accès direct aux membres de la classe chaîne
S := S.PadRight(25);
S := ('Ceci est une nouvelle chaîne').PadRight(25);
Chaînes ANSI et chaînes étendues
La plus grande différence au sujet des chaînes dans RAD Studio est que le type chaîne est maintenant une chaîne étendue
Unicode au lieu d'un AnsiString. Cela simplifie le code pour certaines locales, car vous n'avez plus besoin de vous préoccuper
des jeux de caractères à plusieurs octets. Cependant, vous devez vérifier si votre code effectue des hypothèses sur la taille d'un
Char, car celui-ci occupe maintenant deux octets au lieu d'un. Vous pouvez toujours utiliser des chaînes avec des caractères
65
1
Problèmes de langage au sujet du portage
RAD Studio pour .NET
1.5 Développement d'applications avec
d'un octet, mais vous devez maintenant les déclarer en tant que chaînes AnsiString au lieu de string. Le compilateur effectue
une conversion entre les chaînes étendues et étroites si vous utilisez un transtypage explicite ou si vous les transtypez
implicitement en les affectant à une variable ou un paramètre de l'autre type.
Si votre code appelle l'une des routines AnsiXXX pour manipuler des chaînes, vous souhaiterez peut-être transformer celles-ci
en versions de chaînes étendues correspondantes de la routine. Les routines AnsiXXX possèdent des surcharges (dépréciées)
qui correspondent aux versions étendues, et les routines surchargées acceptent des chaînes étendues pour leurs paramètres ;
cela évite la conversion implicite aller-retour entre les chaînes étendues et à un octet.
Remarque: Des informations peuvent être perdues lors de conversions de caractères étendus vers des caractères à un octet,
aussi devriez-vous éviter ce type de conversion autant que possible.
Opérations de chaînes
1
Suivant la sémantique de type de valeur CLR, les opérations sur les chaînes renvoient typiquement une copie de la chaîne au
lieu d'altérer la chaîne existante. Cela peut rendre le code moins performant, parce que les copies sont plus nombreuses.
Considérez, par exemple, le code suivant :
var
S: string;
begin
S := 'Ceci est une chaîne' ;
S[3] := 'a';
S[4] := 't';
Lorsqu'elles sont compilées en utilisant la plate-forme Win32, les substitutions de caractères ne requièrent qu'un octet de
mémoire à changer à chaque fois. Dans RAD Studio, chaque substitution a pour résultat une copie de la chaîne complète. A
cause de cela, il est conseillé d'utiliser une instance de StringBuilder lorsque vous manipulez des valeurs de chaînes.
StringBuilder alloue une portion de mémoire non managée et manipule la chaîne selon vos souhaits. Lorsque vous avez
terminé, vous pouvez convertir le résultat en chaîne en appelant la méthode ToString.
Remarque: La conversion en string
à partir de StringBuilder est une opération à bas coût. Les données de la chaîne ne sont pas copiées à nouveau.
Chaînes non initialisées
Dans RAD Studio, une chaîne non initialisée prend la valeur nil. Le compilateur va automatiquement compenser si vous
comparez une chaîne non initialisée à une chaîne vide. C'est-à-dire que si vous avez une ligne telle que
if S <> '' then ...
Le compilateur s'occupe de la comparaison et traite la chaîne non initialisée comme une chaîne vide. Cependant, à la différence
d'un code compilé sur la plate-forme Win32, d'autres opérations de chaînes ne traitent pas automatiquement une chaîne non
initialisée comme une chaîne vide. Cela peut conduire à des exceptions d'objet nul lors de l'exécution.
Transtypages
A la différence de Delphi pour Win32, RAD Studio ne fait pas de distinction entre un transtypage explicite et l'opérateur as. Dans
les deux cas, le transtypage ne réussit que si la variable transtypée est réellement une instance du type vers lequel vous la
transtypez. Cela signifie qu'un code qui fonctionnait (par un transtypage entre des données de types incompatibles) peut
maintenant générer une exception d'exécution.
Décomposeurs de messages
La situation la plus courante où le changement de transtypage cause un problème est peut-être l'utilisation de types de
décomposition de messages. Dans la VCL sur Win32, l'unité Messages définissait plusieurs types d'enregistrements pour
représenter les paramètres d'un message Windows. Ces enregistrements étaient tous de la même taille, avec tous les champs
disposés pour extraire les informations du message Windows. Ainsi, vous pouviez avoir les paramètres du message sous une
forme (par exemple TMessage), transtyper dans une autre forme (par exemple TWMMouse), puis extraire les information
66
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
voulues. Cela fonctionnait parce que les deux types étaient de la même taille, et un transtypage explicite ne déclenchait pas
d'exception quand vous réinterprétiez le type avec le transtypage. Une telle réinterprétation n'est pas autorisée dans .NET, et le
même code conduirait à une exception de transtypage incorrecte dans RAD Studio.
Pour contourner cette situation, les types de décomposition de messages dans RAD Studio ne sont pas du tout des
enregistrements, mais des classes. Au lieu de transtyper une valeur TMessage vers un autre type tel que TWMMouse, vous
devez instancier l'autre type, en transmettant le TMessage d'origine comme paramètre. C'est-à-dire qu'au lieu de
procedure MyFunction(Msg: TMessage);
var
MouseMsg: TWMMouse;
begin
if Msg.Msg = WM_MOUSE then
with Msg as TWMMouse do
...
end;
1
vous procéderiez comme ceci :
procedure MyFunction(Msg: TMessage);
var
MouseMsg: TWMMouse;
begin
if Msg.Msg = WM_MOUSE then
with TWMMouse.Create(Msg) do
...
end;
Pour convertir dans l'autre direction (d'un type de message spécialisé vers TMessage), vous pouvez utiliser la nouvelle fonction
UnwrapMessage déclarée dans l'unité Messages.
Accès aux membres protégés de classes d'autres unités
Une autre technique mettant en jeu ce qui est maintenant un transtypage incorrecte concerne l'accès aux membres protégés
d'une classe qui est déclarée dans une autre unité. Dans Delphi pour Win32, vous pouvez déclarer un descendant de la classe
dont vous souhaitez voir les membres :
type
TPeekAtWinControl = class(TWinControl);
Ensuite, en transtypant un descendant arbitraire de TWinControl en TPeekAtWinControl, vous pouviez accéder aux
méthodes protégées de TWinControl, car TPeekAtWinControl avait été défini dans la même unité.
En général, cette technique ne fonctionne pas dans RAD Studio, car le descendant arbitraire de TWinControl n'est pas, en fait,
une instance de TPeekAtWinControl. Le transtypage conduit à une exception de transtypage incorrecte lors de l'exécution.
Comme il s'agit d'une technique largement utilisée dans Win32, le compilateur va reconnaître ce pattern et l'autoriser.
Cependant, le compilateur ne peut pas savoir dans quel assemblage une unité sera liée quand il compile le code source. Si les
unités sont liées en assemblages, cette technique échouera lors de l'exécution avec une exception de type.
Quand vous avez besoin de croiser les limites d'un assemblage, un contournement consiste à introduire une interface qui
permet d'accéder aux membres protégés en question. Certaines classes de la VCL ( TControl, TWinControl, TCustomForm)
utilisent maintenant cette technique, et vous pouvez trouver l'ajout d'interfaces pour accéder aux membres protégés (IControl,
IWinControl, IMDIForm).
Création et destruction d'objets
Des problèmes spécifiques de langage dans la programmation avec Delphi pour la plate-forme .NET à mémoire managée sont
expliquées à la rubrique Problèmes de gestion de la mémoire sur la plate-forme .NET.
A cause des différences dans la façon dont les objets sont instanciés et libérés, il n'est pas possible d'avoir une méthode
BeforeDestruction ou AfterConstruction sur une classe RAD Studio. Toute classe qui contourne ces méthodes doit
être réécrite.
67
Problèmes de langage au sujet du portage
RAD Studio pour .NET
1.5 Développement d'applications avec
Le fait que ces méthodes et la propriété OldCreateOrder n'existent pas dans la VCL sur la plate-forme .NET a des
répercussions sur les modules de fiches et de données qui reposaient sur le fait que OldCreateOrder valait False. Les
événements OnCreate et OnDestroy se comportent maintenant comme si la propriété OldcreateOrder est paramétrée à
True et ne sera appelée que par le constructeur ou le destructeur.
Remarque: Etant donné qu'OnDestroy est appelé depuis un destructeur, il n'est pas garanti qu'il sera appelé - si l'application
n'appelle pas Free, le destructeur de l'objet n'est pas appelé, même s'il est nettoyé de la mémoire.
Utilisation de l'API Win32 non managée
La plus grande partie de la VCL est conçue pour fonctionner avec l'API Windows. Son traitement est similaire à la manière dont
Systems.Windows.Forms fonctionne : La VCL est une API managée qui appelle l'API Windows en effectuant le marshaling
entre les structures managées du côté VCL et les types non managés utilisés par l'API Windows. Certaines unités, en particulier
dans la RTL, ont été portées pour s'installer au-dessus de CLR plutôt que sur l'API Windows. Ces unités sont plus souples, car
elles peuvent fonctionner avec n'importe quel environnement .NET, même ceux ne prenant pas en charge le système
d'exploitation Windows (par exemple le Compact Framework, Mono, etc.). Les unités qui ont besoin du système d'exploitation
Windows sont repérées par la directive platform. Dans les unités qui ne sont pas repérées par la directive platform, toute
méthode ou classe nécessitant Windows est repérée au moyen de la directive platform.
1
Isolement des dépendances Windows
Pour maintenir une indépendance relative par rapport à la plate-forme dans les unités RTL, certaines fonctions de méthodes qui
se basent sur Windows ont été déplacées dans l'unité WinUtils. Certaines classes ont en outre été modifiées pour se baser
plus sur CLR que sur Windows.
TObject, Exception, TPersistent et TComponent sont toutes directement mappées sur des classes implémentées dans .NET
Framework. Elles s'intègrent ainsi plus facilement avec d'autres applications .NET. Comme les classes CLR correspondantes
(System.Object, System.Exception, System.Marshal et System.Component) n'incluent pas toutes les méthodes nécessaires à la
VCL, les méthodes manquantes sont fournies par les déclarations d'assistance de classes Delphi. Dans la plupart des cas, ce
mécanisme est transparent. Il y a cependant des cas où il vous impose des réglages mineurs de votre code. Par exemple, avec
TComponent, FComponentState est maintenant une propriété de TComponentHelper plutôt qu'un véritable champ de
TComponent. Cela veut dire que vous ne pouvez pas utiliser les méthodes Include et Exclude sur FComponentState, car
lorsqu'une propriété leur est transmise, elles travaillent sur une copie de la valeur de cette propriété, ce qui ne modifie pas
FComponentState. Par conséquent, un code tel que
Exclude(FComponentState, csUpdating);
doit être réécrit comme suit :
FComponentState := FComponentState – [csUpdating];
TThread a aussi été modifié pour être mappé sur l'objet thread CLR. Cela veut dire que le handle Thread n'est plus un type
ordinal, mais plutôt une référence sur l'objet thread CLR sous-jacent. Cela veut également dire que TThread ne prend plus en
charge les ThreadID, qui ne sont pas reconnus par les objets threads CLR. Si votre classe thread requiert un ThreadID, vous
devrez la modifier pour qu'elle dérive de TWin32Thread.
Appel de l'API Windows
Un grand nombre d'API Windows ont changé pour utiliser une interface plus managée. Les types de paramètres ont souvent
changé, généralement pour éliminer les pointeurs. Un changement courant a consisté à remplacer les types PChar par string
ou StringBuilder.
Lorsque votre application appelle une API Windows, elle appelle une DLL non managée. Par conséquent, toutes les valeurs de
paramètres doivent être marshalées en mémoire non managée, là où Windows peut les manipuler, et les résultats sont ensuite
unmarshallés en mémoire managée. Dans la plupart des cas, ce marshaling s'effectue automatiquement, en fonction des
attributs qui ont été ajoutés aux déclarations d'API ou de types. Il y a toutefois des cas où votre code doit gérer explicitement le
marshaling – spécialement avec un pointeur sur une structure. Pour effectuer ce marshaling, utilisez la classe System. Marshal.
68
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
Une autre classe peut être très utile lors du marshaling de données avec la mémoire non managée : la classe BitConverter. Par
exemple, la classe Marshal n'inclut pas de méthode pour lire ou écrire une valeur double, mais elle peut lire ou écrire des
valeurs Int64, qui ont la même taille, et la classe BitConverter peut convertir ces valeurs en double et inversement :
// copie double en mémoire non managée :
Mem := Marshal.AllocHGlobal(SizeOf(Int64));
Marshal.WriteInt64(Mem, BitConverter.DoubleToInt64Bits(DoubleVariable));
...
// copie double à partir de mémoire non managée
DoubleVariable := BitConverter.Int64BitsToDouble(Marshal.ReadInt64(Mem));
En utilisant la classe marshal, rappelez-vous que vous devez toujours libérer toute mémoire non managée allouée – le nettoyeur
de mémoire ne collecte pas la mémoire non managée.
Utilisation de messages Windows
1
Un des changements dans la manière dont les applications RAD Studio fonctionnent avec Windows concerne le fonctionnement
des gestionnaires de messages. La déclaration et l'utilisation des gestionnaires de messages sont fondamentalement les
mêmes, mais les types de décomposeurs de messages, qui étaient des enregistrements, sont devenus des classes, et vous ne
pouvez plus vous limiter à transtyper d'un type de décomposeur de message vers un autre. Tout cela a déjà été couvert dans la
section sur les transtypages, mais plusieurs points supplémentaires doivent être mentionnés :
• Lors du portage d'un code envoyant un message, il ne suffit plus de déclarer le décomposeur de message sur la pile, de
remplir ses champs puis de le transmettre à un appel de SendMessage. Vous devez maintenant ajouter un appel pour créer
le décomposeur de message, car il s'agit maintenant d'une classe.
• Dans un gestionnaire de messages, vous pouvez toujours appeler un gestionnaire de messages hérité en utilisant le mot-clé
inherited. Vous devez toutefois être alors sûr que le décomposeur de message aura le même type que le gestionnaire de
messages hérité. Par exemple, si le gestionnaire de messages hérité possède un paramètre de type TWMMouse et si votre
gestionnaire de messages a seulement besoin de TMessage, la déclaration de votre gestionnaire de messages pour utiliser
TMessage et l'appel hérité conduiront à une exception de transtypage incorrecte à l'exécution. Par conséquent, si vous
appelez le gestionnaire de messages hérité, vous devez maintenant vous assurer que votre paramètre de message
correspond à celui du gestionnaire hérité.
• Si un message possède des paramètres qui sont des pointeurs sur des enregistrements (ou n'importe quel type de pointeur
d'ailleurs), le décomposeur de message correspondant possédera des propriétés représentant ces enregistrements. Il est
toutefois important de comprendre qu'il s'agit de propriétés et non de champs. Par conséquent, vous pouvez lire les champs
de l'enregistrement directement à partir de la propriété, mais si votre gestionnaire doit modifier des valeurs de champs, vous
ne pouvez plus effectuer d'affectations directes aux champs de l'enregistrement. A la place, vous devez copier
l'enregistrement dans une variable locale, apporter vos modifications puis réaffecter le résultat à la propriété.
L'utilisation de messages Windows est sensiblement plus coûteuse dans RAD Studio, car au temps système nécessaire pour
utiliser la file d'attente des messages s'ajoute maintenant le temps système de marshaling des valeurs avec la mémoire non
managée. Cela est particulièrement coûteux lorsqu'un paramètre représente un pointeur (une référence d'objet ou un pointeur
sur une structure). Ces paramètres sont finalement convertis en WPARAM ou en LPARAM en utilisant un IntPtr, qui agit comme
handle d'un bloc de mémoire non managée contenant une copie de la structure. Les références d'objets sont converties au
moyen d'un GCHandle. Dans la plupart des cas, les types de décomposeurs de messages prédéfinis gèrent le marshaling de
ces paramètres avec IntPtr, mais si vous définissez vos propres messages, il peut être nécessaire d'effectuer votre propre
marshaling. Les classes de décomposeur de message définies dans l'unité Controls illustrent la manière de gérer ces
problèmes de marshaling.
La VCL définit et utilise un certain nombre de types de messages privés. Ceux-ci sont, pour la plupart, définis dans l'unité
Controls et possèdent des identificateurs de la forme CM_XXX ou CN_XXX. A cause du temps système supplémentaire de
marshaling des messages, plusieurs types de messages CM_XXX ont été changés ou éliminés, et remplacés par d'autres
mécanismes moins coûteux dans l'environnement .NET. Le tableau suivant liste les types de messages qui ont changé et
indique comment la même tâche s'accomplit dans RAD Studio :
69
Problèmes de langage au sujet du portage
RAD Studio pour .NET
1.5 Développement d'applications avec
Type de message
Changement
CM_FOCUSCHANGED
Remplacé par une méthode protégée (FocusChanged) sur TWinControl. Remplacez les
gestionnaires de messages par une redéfinition de la méthode FocusChanged. Au lieu
d'envoyer des messages, appelez FocusChanged en utilisant l'interface IWinControl.
CM_MOUSEENTER
La signification de LPARAM a changé. Il transmettait auparavant une référence d'objet au
contrôle enfant sur lequel la souris se positionnait – il transmet maintenant l'indice de cet
enfant dans la liste FWinControls ou FControls.
CM_MOUSELEAVE
La signification de LPARAM a changé. Il transmettait auparavant une référence d'objet au
contrôle enfant quitté par la souris – il transmet maintenant l'indice de cet enfant dans la liste
FWinControls ou FControls.
CM_BUTTONPRESSED
Remplacé par une méthode protégée (ButtonPressed) sur TSpeedButton. Il était auparavant
uniquement utilisé par TSpeedButton. Le gestionnaire de messages CMButtonPressed a été
remplacé par ButtonPressed, qui est appelé directement.
CM_WINDOWHOOK
Retiré. TApplication.HookMainWindow et TApplication.UnhookMainWindow sont toutes deux
des méthodes publiques qui peuvent être appelées directement.
1
CM_CONTROLLISTCHANGE Remplacé par une méthode protégée (ControlListChange) sur TWinControl. Remplacez les
gestionnaires de messages par une redéfinition de la méthode ControlListChange.
CM_GETDATALINK
Remplacé par une méthode protégée (GetDataLink) sur différents contrôles orientés données.
Appelez-la en utilisant la nouvelle interface IDataControl. En créant votre propre contrôle
orienté données (qui ne descend pas d'une classe existante dans DBCtrls), vous devez
implémenter IDataControl si le contrôle doit fonctionner dans un DBCGrid.
CM_CONTROLCHANGE
Remplacé par une méthode protégée (GetDataLink) sur différents contrôles orientés données.
Appelez-la en utilisant la nouvelle interface IDataControl. En créant votre propre contrôle
orienté données (qui ne descend pas d'une classe existante dans DBCtrls), vous devez
implémenter IDataControl si le contrôle doit fonctionner dans un DBCGrid.
CM_CHANGED
La signification de LPARAM a changé. Il transmettait auparavant une référence d'objet et
transmet maintenant un code de hachage pour l'objet modifié.
CM_DOCKCLIENT
Remplacé par une méthode protégée (DockClient) sur TWinControl. Remplacez les
gestionnaires de messages par une redéfinition de la méthode DockClient.
CM_UNDOCKCLIENT
Remplacé par une méthode protégée (UndockClient) sur TWinControl. Remplacez les
gestionnaires de messages par une redéfinition de la méthode UndockClient.
CM_FLOAT
Remplacé par une méthode protégée (FloatControl) sur TControl. Remplacez les gestionnaires
de messages par une redéfinition de la méthode FloatControl.
CM_ACTIONUPDATE
Retiré. TApplication.DispatchAction a été promue publique, et elle est appelée directement
plutôt que par l'intermédiaire d'un message.
CM_ACTIONEXECUTE
Retiré. TApplication.DispatchAction a été promue publique et est appelée directement plutôt
que par l'intermédiaire d'un message.
Modifications du modèle Threading
Il arrive que des appels à l'API Windows requièrent l'utilisation du modèle Single Threaded Apartment (STA) pour fonctionner
correctement sur certains systèmes d'exploitation. Par exemple, sur certaines versions de Windows 98, les boîtes de dialogue
d'ouverture et d'enregistrement ne fonctionnent que si votre application RAD Studio utilise le modèle Single Threaded
Apartment. Toute partie de la VCL utilisant COM requiert ce modèle.
Le modèle de threading est défini au premier démarrage du processus. Si vous créez un exécutable, c'est facile : il vous suffit
d'ajouter l'attribut [STAThreadAttribute] à la ligne qui précède immédiatement l'instruction begin dans le fichier dpr. Lors
70
1.5 Développement d'applications avec
RAD Studio pour .NET
Problèmes de langage au sujet du portage
de la création d'une DLL, vous ne pouvez pas forcer le modèle de threading. Vous pouvez toutefois appeler la procédure
CheckThreadingModel de l'unité SysUtils pour déclencher une exception lorsque l'application appelle une méthode
nécessitant un modèle de threading particulier.
Cette restriction est plutôt courante dans .NET. Par défaut, Microsoft Visual Studio ajoute l'attribut STAThreadAttribute aux
applications qu'il crée.
Migration des variants
Le type Variant est très différent dans RAD Studio. Alors que le compilateur Win32 mappe Variant sur le type d'enregistrement
utilisé par COM pour les variants, dans RAD Studio, un variant est plus général. N'importe quel objet (c'est-à-dire dans RAD
Studio n'importe quel type) peut agir et être manipulé comme variant. Par conséquent, dans RAD Studio, vous pouvez affecter
un contrôle à un variant.
Le type Delphi Variant est une notion du langage Delphi qui n'est pas compatible CLS. Si vous écrivez dans RAD Studio du code
utilisant des variants, pour le monde extérieur, ceux-ci seront uniquement mappés comme System. Object. Ainsi, pour le code
écrit dans d'autres langages, la souplesse dans les conversions de types offerte par la prise en charge des variants Delphi n'est
pas disponible.
Modifications de TVarRec
Si votre code utilise des variants, il est probable qu'il continuera à fonctionner. Toutefois, comme les variants ne sont plus basés
sur le type TVarRec, tout code fonctionnant avec les structures internes d'un variant Win32 en pénétrant dans l'enregistrement
TVarRec sous-jacent doit être réécrit pour .NET.
Remarque: Presque toutes les fonctions fournies par l'unité Variants sont implémentées dans RAD Studio. Si vous avez
besoin d'obtenir le VarType d'un variant, vous pouvez l'obtenir et conserver quand même un code portable.
Modifications des variants OLE
La couche COM Interop marshale automatiquement les Objects (et donc les variants). Vous pouvez donc utiliser les variants
RAD Studio avec COM. Toutefois, lors de l'utilisation des variants RAD Studio avec COM, vous devrez restreindre les types
affectés au variant aux seuls types compatibles COM.
Dans Delphi pour Win32, le compilateur impose des restrictions COM sur les genres de données qu'il est possible d'affecter à un
OleVariant. Dans RAD Studio, OleVariant est simplement un synonyme de Variant. Il n'entreprend aucune action pour garantir
que la valeur Variant est d'un type compatible COM.
Modifications des variants personnalisés
Les variants personnalisés sont totalement différents dans RAD Studio. Comme les variants ne sont que des objets, il n'est pas
nécessaire de faire quoi que ce soit pour créer un variant personnalisé – toute classe que vous définissez est déjà un type
Variant. Toutefois, pour fonctionner correctement avec un variant personnalisé, l'implémentation de quelques interfaces CLR
peut être utile : IComparable, IConvertible et ICloneable. Le compilateur Delphi peut utiliser ces interfaces pour implémenter des
opérations de Variant. Toutefois, même avec ces interfaces, d'autres types Variant arbitraires ne peuvent pas être convertis
dans votre (classe) Variant si vous n'implémentez pas une méthode FromObject :
class function FromObject(AObject: System.Object): TObject; static;
FromObject prend un objet source arbitraire (le variant à convertir dans votre type de classe) et renvoie l'instance
correspondante de votre classe sous forme de TObject.
Utilisation des ressources
RAD Studio peut lier les ressources Windows (fichiers res) dans vos assemblages. Cela signifie que lors du premier portage
d'une application, il n'est pas nécessaire de changer la manière de déclarer et d'utiliser les ressources : cela fonctionnera quand
même. Dans certains cas, c'est de toute façon ce que vous souhaitez faire. Par exemple, si vous utilisez des curseurs
personnalisés, il est plus simple d'utiliser la fonction d'API Windows LoadCursor pour ajouter le curseur à TScreen.Cursors que
de subir le temps système d'utilisation de Cursor puis d'obtention d'un handle sur le curseur sous-jacent. Toutefois, pour les
71
1
Portage d'applications VCL
RAD Studio pour .NET
1.5 Développement d'applications avec
ressources qui ne sont pas propres à Windows (comme les bitmaps, les icônes et les chaînes), vous souhaiterez probablement
effectuer une mise à jour pour obtenir un fichier de ressources .NET.
Chaînes de ressources
Lorsque vous utilisez le mot-clé resourcestring, RAD Studio crée automatiquement les ressources chaînes sous forme de
ressources .NET plutôt que de ressources Windows. Cette opération est automatique et vous n'avez rien de spécial à faire. Le
seul point à savoir est que vous ne pouvez plus utiliser le type PResStringRec.
Bitmaps
Vous pouvez convertir des bitmaps en ressources .NET en utilisant la classe ResourceWriter. Le fichier ressource résultant
peut être lié à votre application RAD Studio ou déployé comme assemblage satellite. Pour utiliser ces bitmaps convertis,
LoadFromResourceName dispose de nouvelles surcharges pour l'utilisation des ressources .NET (et l'ancienne version de
LoadFromResourceName ainsi que la méthode LoadFromResourceID ont été dépréciées.) Par conséquent, si vos bitmaps se
trouvent dans un fichier ressource avec un nom de la forme MyResources.en-US.resources, vous pouvez les charger comme
suit :
1
MyBitmap.LoadFromResourceName('MyFirstBitmap', 'MyResources',
System.Assembly.GetCallingAssembly);
Notez que cet exemple suppose que les ressources sont compilées dans l'assemblage constituant l'appel de méthode qui
contient cette ligne. Si les ressources sont compilées dans un autre assemblage, vous pouvez utiliser
System.Assembly.GetAssembly
(en
utilisant
un
type
défini
dans
l'assemblage
approprié)
ou
System.Assembly.GetExecutingAssembly (pour obtenir l'assemblage en cours d'exécution).
Modification de TTreeView.OnCompare
La signature de l'événement OnCompare dans la classe TTreeView a changé dans la VCL pour .NET. Le code existant
provoquera une exception d'exécution à l'appel de ce gestionnaire d'événement.
Dans Delphi 7, la signature était :
TTVCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode; Data: Integer; var
Compare: Integer) of object;
Dans Delphi pour .NET, la nouvelle signature est :
TTCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode; Data: TTag; var Compare:
Integer) of object;
Voir aussi
Portage de services Web vers Delphi pour .NET (
see page 79)
Utilisation de Platform Invoke avec Delphi pour .NET (
see page 46)
1.5.3 Portage d'applications VCL
Lors du portage d'applications VCL de Delphi 7 vers RAD Studio, vous devez prendre en compte certains problèmes. En plus
des éléments de base du langage à remplacer ou à modifier, vous devez suivre certaines stratégies pour être sûr de porter vos
applications totalement et d'une manière fiable.
Cette rubrique comprend les éléments suivants :
• Problèmes généraux de langage
• Renommage des packages
• Nouvelles fonctionnalités du langage
72
1.5 Développement d'applications avec
RAD Studio pour .NET
Portage d'applications VCL
• Portage des applications client de services Web
Problèmes généraux de langage
Le portage d'applications Delphi 7 vers RAD Studio révèle plusieurs problèmes de langage du .NET Framework. Par exemple, le
.NET Framework considère les pointeurs comme non sécurisés et estime ainsi que les applications qui utilisent des pointeurs
n'entrent pas dans la catégorie du code managé. Pour être compatible avec le .NET Framework, vous devez modifier vos
applications pour éviter ou contourner l'utilisation des pointeurs, du type pChar et d'autres éléments propres au langage.
De plus, il existe des problèmes critiques liés à l'API Win32, à l'utilisation de décompositions, à la migration de types char et à
d'autres points.
Renommage des packages
Lors du portage d'un package Delphi 7 vers RAD Studio, vous devez changer le nom de package dans la liste "Requires" pour
refléter les nouveaux noms de packages. Le tableau suivant montre les ancien et nouveau noms :
Ancien nom du package
Nouveau nom du package
rtl
Borland.Delphi and Borland.VclRtl
vcl
Borland.Vcl
vclx
Borland.VclX
dbrtl
Borland.VclDbRtl
bdertl
Borland.VclBdeRtl
vcldb
Borland.VclDbCtrls
dbexpress
Borland.VclDbExpress
dbxcds
Borland.VclDbxCds
dsnap
Borland.VclDSnap
dsnapcon
Borland.VclDSnapCon
vclactnband
Borland.VclActnBand
Pour intaller les packages Borland.VclActnBand, utilisez Composant Composants.NET installés Composants VCL .NET.
Nouvelles fonctionnalités du langage
Plusieurs fonctionnalités nouvelles ont été ajoutées au langage Delphi pour prendre en charge des concepts et fonctionnalités
de programmation de la plate-forme .NET et de la CLS (Common Language Specification) :
• Partitionnement du code en espaces de nommage
• Nouveaux spécificateurs de visibilité pour les membres de classes
• Méthodes, propriétés et champs statiques de classes
• Constructeurs de classes
• Déclarations de types imbriqués dans les classes
• Classes scellées
• Méthodes virtuelles finales
• Surcharge d'opérateurs dans les classes
• Attributs .NET
• Syntaxe d'assistance de classe
La programmation dans l'environnement .NET traité par le récupérateur de mémoire amène un certain nombre de nouveaux
problèmes liés à l'allocation et à la suppression des objets. Ces problèmes sont traités dans Problèmes de gestion de la
mémoire sur la plate-forme .NET.
73
1
Présentation de VCL pour .NET
RAD Studio pour .NET
1.5 Développement d'applications avec
Portage des applications client de services Web
Le .NET Framework introduit une modification d'architecture importante sur la manière de gérer les services Web et clients de
services Web. Vos applications client de services Web existantes doivent être modifiées pour fonctionner sur le .NET
Framework. RAD Studio ne supporte pas les composants RIO et utilise une approche .NET plus transparente pour gérer les
applications client de services Web. Vous devrez éliminer les composants RIO et modifier la manière dont vous accédez aux
documents WSDL.
Voir aussi
Présentation de VCL.NET (
see page 76)
Problèmes de langage lors du portage d'applications VCL vers Delphi pour .NET (
Utilisation de Platform Invoke avec Delphi pour .NET (
1
see page 63)
see page 46)
Portage de clients de services Web vers Delphi pour .NET (
see page 79)
Portage d'une application client de services Web Delphi pour Win32 vers Delphi pour .NET (
see page 220)
1.5.4 Présentation de VCL pour .NET
La VCL pour .NET est l'infrastructure de programmation pour la construction d'applications RAD Studio à l'aide de composants
VCL. RAD Studio et VCL pour .NET ont été conçus pour aider les utilisateurs à exploiter la puissance de Delphi lors de l'écriture
de nouvelles applications, ainsi que pour migrer des applications Win32 existantes vers le .NET Framework.
Ces technologies permettent à un développeur Delphi de migrer vers .NET, en utilisant ses compétences Delphi et une grande
partie de son code source Delphi existant. RAD Studio prend en charge le développement Microsoft .NET Framework avec le
langage Delphi et la VCL pour les contrôles.NET. RAD Studio ASP.NET prend également en charge les WebForms et le
développement d'applications de services Web SOAP et XML.
La VCL pour .NET est un vaste sous-ensemble des classes les plus courantes de la VCL pour Win32. Le .NET Framework a été
conçu pour s'adapter à n'importe quel langage compatible .NET. Dans de nombreux cas, le code source Delphi qui fonctionne
sur des classes et des fonctions VCL Win32 se recompile avec un minimum de modifications sur .NET. Il peut même arriver qu'il
se recompile sans aucune modification. La VCL pour .NET est un vaste sous-ensemble de la VCL, qui prend par conséquent en
charge de nombreuses classes VCL existantes. Toutefois, le code source qui appelle directement l'API Win32 nécessite des
modifications. De plus, des contrôles VCL Win32 tiers dépendants doivent également être disponibles dans les versions .NET,
pour la compatibilité.
Cette section présente :
• VCL pour l'architecture .NET
• VCL pour .NET et le .NET Framework
• Composants VCL pour .NET
• Espace de nommage Borland.VCL
• Portage d'applications Delphi vers RAD Studio
• Importation de composants .NET à utiliser dans des applications VCL pour .NET
74
1.5 Développement d'applications avec
RAD Studio pour .NET
Présentation de VCL pour .NET
VCL pour l'architecture .NET
1
La VCL est un ensemble de composants visuels permettant la construction d'applications Windows dans le langage Delphi. La
VCL pour .NET est la même bibliothèque de composants, mise à jour pour une utilisation avec le .NET Framework. La VCL pour
.NET et le .NET Framework coexistent dans RAD Studio. La VCL pour .NET et .NET fournissent des composants et des
fonctionnalités vous permettant de construire des applications .NET :
• La VCL pour .NET offre le moyen de créer des applications Fiches VCL, qui sont des fiches Delphi orientées .NET utilisant
des composants VCL pour .NET.
• La VCL pour .NET fournit des composants VCL non visuels qui ont été orientés .NET pour accéder à des bases de données.
Vous pouvez également accéder aux bases de données par l'intermédiaire des fournisseurs ADO.NET et BDP.NET.
• .NET permet de construire des applications Console et .NET Web Forms, en utilisant des composants .NET, avec le code
Delphi sous-jacent.
Vous pouvez construire des applications Fiches VCL en utilisant des composants VCL pour .NET. Vous pouvez également
construire des applications Web Forms ASP.NET en utilisant des composants VCL pour .NET ou des composants .NET.
VCL pour .NET et le .NET Framework
Le .NET Framework fournit une bibliothèque de composants, de classes et de fonctionnalités de bas niveau qui gère les
fonctionnalités courantes, de l'affichage des boutons à la fonction distante, sans tenir compte du langage d'implémentation
sous-jacent. La VCL pour .NET et le .NET Framework sont fonctionnellement équivalents. Comme le .NET Framework, la VCL
pour .NET fournit des bibliothèques de composants, de contrôles, de classes et de fonctionnalités de bas niveau qui vous aident
à construire des applications Console et Fiches Web s'exécutant sur la plate-forme Windows .NET Framework en cours.
La VCL pour .NET ne remplace pas le .NET Framework.
Vous aurez encore besoin du module d'exécution .NET pour utiliser la VCL pour .NET, mais vous pourrez construire des
applications complètes en utilisant des composants VCL pour .NET s'exécutant sur la plate-forme .NET.
Vous pouvez construire des applications RAD Studio sans utiliser la VCL pour .NET, en créant des applications Console et
Fiches Web utilisant du code RAD Studio.
Vous pouvez utiliser RAD Studio pour créer de puissantes applications .NET à l'aide de composants .NET ou de composants
VCL pour .NET migrés à partir de la VCL Delphi. Si vous disposez d'applications VCL Delphi existantes que vous voulez
exécuter sous Windows XP, vous pourrez facilement porter ces applications en utilisant RAD Studio.
Composants VCL pour .NET
VCL pour .NET se compose d'un ensemble de composants visuels et non visuels. VCL pour .NET se base sur le concept de
construction visuelle d'applications, éliminant considérablement le codage manuel.
75
Présentation de VCL pour .NET
RAD Studio pour .NET
1.5 Développement d'applications avec
Composants visuels
RAD Studio fournit un ensemble de composants visuels, ou contrôles, que vous pouvez utiliser pour construire vos applications.
En plus des contrôles courants, comme les boutons, les zones de saisie, les boutons radio et les cases à cocher, vous pouvez
également trouver des contrôles grilles, des barres de défilement, des boutons fléchés, des objets calendriers, un concepteur de
menu complet, etc. Ces contrôles sont représentés de manière différente dans RAD Studio et dans les infrastructures telles que
le .NET Framework.
Dans un EDI d'autres langages, tels que C# ou Java, il est courant de voir des représentations de fiches basées sur du code et
d'autres composants visuels. Ces représentations incluent des définitions physiques, comme la taille, la hauteur et d'autres
propriétés, ainsi que les constructeurs et destructeurs des composants. Dans l'éditeur de code de RAD Studio, vous ne verrez
pas de représentation de code de vos composants VCL pour .NET.
1
RAD Studio est un système basé sur les ressources, ce qui signifie que les principales représentations de code sous-jacent sont
celles des gestionnaires d'événements que vous remplissez avec votre logique de programme. Les composants visuels sont
déclarés et définis dans des fichiers texte d'extension .dfm (pour les fiches Delphi) ou .nfm (pour les fiches RAD Studio). Les
fichiers nfm sont créés par RAD Studio lorsque vous concevez vos fiches VCL sur le concepteur de fiches, et ils apparaissent
dans la liste des ressources du gestionnaire de projet pour le projet donné.
Composants non visuels
Vous pouvez utiliser des composants non visuels pour implémenter des fonctionnalités qui ne sont pas nécessairement
exposées de manière visuelle. Par exemple, vous pouvez accéder aux données en utilisant des composants non visuels comme
les composants BDP.NET, qui fournissent une connectivité de base de données et un accès à DataSet. Bien que ces
composants n'aient pas de comportement d'exécution visuel, ils sont représentés par des composants dans la palette d'outils
au moment de la conception. VCL pour .NET fournit différents composants non visuels pour l'accès aux données, les fonctions
serveur, etc.
Espace de nommage Borland.VCL
Les classes VCL pour .NET se trouvent sous l'espace de nommage Borland.Vcl. Les classes liées aux bases de données se
trouvent dans l'espace de nommage Borland.Vcl.DB. Les classes de bibliothèque d'exécution se trouvent dans l'espace de
nommage Borland.Vcl.Rtl.
Les fichiers d'unités ont été regroupés dans les espaces de nommage Borland.Vcl correspondants. Dans certains cas, les
unités ont été déplacées. Toutefois, les espaces de nommage sont identifiés de façon à vous aider à trouver les fonctionnalités
que vous souhaitez.
Les fichiers source de tous les objets RAD
Files\CodeGear\RAD Studio\5.0\Source.
Studio
sont
disponibles
dans
le
sous-répertoire
c:\Program
Portage d'applications Delphi vers RAD Studio
Si vous disposez d'applications existantes écrites avec une version précédente de Delphi, vous pourrez avoir besoin de les
porter vers .NET. Dans la plupart des cas, ce sera plus facile que de réécrire les applications. Comme RAD Studio tire parti
d'éléments structurels significatifs du .NET Framework, vous devrez effectuer certaines tâches de portage manuelles pour
exécuter vos applications. Par exemple, le .NET Framework ne gère pas les pointeurs dans le code sécurisé. Aussi, toute
instance de variables pChar ou pointeur doit être remplacée par une variable de type .NET. De nombreux objets Delphi ont été
mis à jour pour répondre à ces restrictions de types, mais votre code peut inclure des références à des pointeurs ou des types
non pris en charge. Pour plus d'informations, reportez-vous au guide du langage dans ce système d'aide.
Importation de composants .NET à utiliser dans des applications VCL pour .NET
RAD Studio fournit l'expert d'importation .NET pour vous aider à importer des contrôles .NET dans des unités et des packages
VCL pour .NET. Par exemple, vous pouvez envelopper tous les composants .NET, comme ceux de l'assemblage
System.Windows.Forms, dans des enveloppes ActiveX qui pourront être déployées sur des applications VCL pour .NET.
Après avoir importé les composants .NET de votre choix, vous pouvez ajouter à la palette d'outils un fichier de package
76
1.5 Développement d'applications avec
RAD Studio pour .NET
Portage de clients de services Web
complet contenant les unités pour chaque composant. Vous pouvez également visualiser et modifier les fichiers d'unités
individuels qui peuvent être des matériaux de référence utiles lorsque vous écrivez vos propres composants personnalisés.
Voir aussi
Guide du langage
Portage d'applications VCL (
see page 74)
Fournisseurs de données pour .NET (
see page 27)
Importation de contrôles .NET vers la VCL pour .NET (
see page 176)
Déploiement des applications
Construction d'une application Fiche VCL pour .NET (
see page 160)
1
1.5.5 Portage de clients de services Web
Les services Web RAD Studio utilisent le .NET Framework comme couche de services. En conséquence, toutes les applications
existantes qui sont clientes de services Web Delphi 7 ou antérieures doivent être modifiées pour utiliser le .NET Framework.
Cette rubrique comprend :
• Modifications et ajouts à vos applications
• Remarques d'implémentation
Modifications et ajouts à vos applications
Apportez les modifications et les ajouts suivants à vos applications :
• Retirez les composants RIO de vos applications. Ils ne fonctionneront plus dans le .NET Framework. Avant de retirer un
composant, enregistrez ses informations de propriété, telles que l'URL.
• Retirez les unités SOAP Delphi 7 de la clause uses et retirez la référence uses de l'unité proxy Interface Delphi 7 WSDL
générée par Importer.
• Ajoutez une référence Web en choisissant la commande Ajouter une référence Web dans le menu contextuel du gestionnaire
de projet.
Remarques d'implémentation
Les remarques suivantes abordent des problèmes particuliers que vous pouvez rencontrer lors du portage d'applications client
de services Web.
Interopérabilité serveur et service Web
Les implémentations Delphi 7 et .NET SOAP sont légèrement différentes. Vous devrez positionner certaines options sur le
serveur (propriété TSOAPDomConv.Options) pour utiliser avec succès plusieurs clients. Définissez les options suivantes pour
garantir que les deux applications clientes pourront traiter les packages SOAP et transférer l'encodage correct :
[soTryAllSchema, soRootRefNodesToBody, soUTF8InHeader, soUTF8EncodeXML]
Gestion des exceptions
Le tableau suivant montre les exceptions correspondantes entre Delphi 7 et le .NET Framework.
Exception Delphi 7
Exception .NET Framework
ERemotableException
System.Web.Services.Protocols. SoapException
77
Portage de clients de services Web
ESOAPHTTPException
RAD Studio pour .NET
1.5 Développement d'applications avec
System.Net.WebException
Faultcodes
Dans Delphi 7, la propriété ERemotableException.FaultCode renvoie un nom qualifié, tel que SOAP-ENV:Client.Login. Vous
devez ensuite extraire le code en utilisant la fonction ExtractLocalName. La classe SoapException .NET Framework fournit la
propriété SoapException.Code.Name directement.
Surveillance des paquets SOAP
Dans Delphi 7, le composant THTTPRIO prend en charge les événements OnBeforeExecute et OnAfterExecute permettant de
contrôler les requêtes et les réponses. Vous pouvez implémenter une fonctionnalité similaire en utilisant la classe
SoapExtension .NET Framework. Voici une partie d'un exemple qui implémente cette fonctionnalité. Vous trouverez l'exemple
complet dans le référentiel CodeCentral de Borland. Le lien est dans la liste des liens à la fin de cette rubrique.
1
uses
System.Xml, System.Web.Services, System.Web.Services.Protocols, System.IO;
type
TSoapMessageEvent = procedure (Sender: TObject; const Xml: string) of object;
TSoapMonitor = class(TObject)
private
FOnRequest: TSoapMessageEvent;
FOnResponse: TSoapMessageEvent;
protected
procedure DoRequest(const Xml: string);
procedure DoResponse(const Xml: string);
public
class function FormatXmlData(const Xml: string): string; static;
property OnRequest: TSoapMessageEvent add FOnRequest remove FOnRequest;
property OnResponse: TSoapMessageEvent add FOnResponse remove FOnResponse;
end;
.
.
.
{ TSoapMonitor }
procedure TSoapMonitor.DoRequest(const Xml: string);
begin
if Assigned(FOnRequest) then
FOnRequest(Self, Xml);
end;
procedure TSoapMonitor.DoResponse(const Xml: string);
begin
if Assigned(FOnResponse) then
FOnResponse(Self, Xml);
end;
class function TSoapMonitor.FormatXmlData(const Xml: string): string;
var
Doc: XmlDocument;
Sw: StringWriter;
Xw: XmlTextWriter;
begin
Doc := XmlDocument.Create;
Doc.LoadXml(Xml);
Sw := StringWriter.Create;
Xw := XmlTextWriter.Create(sw);
Xw.Formatting := Formatting.Indented;
78
1.5 Développement d'applications avec
RAD Studio pour .NET
Portage de clients de services Web
Xw.Indentation := 2;
Xw.IndentChar := ' ';
doc.Save(xw);
Result := sw.ToString;
Xw.Close;
Sw.Close;
end;
Utilisation des en-têtes SOAP
Dans Delphi 7, vous devez envoyer l'en-tête avant chaque appel de méthode. L'objet en-tête est libéré après chaque appel.
Dans le .NET Framework, la classe d'en-tête persiste après l'appel d'une méthode, jusqu'à ce que new soit affecté ou que la
classe d'en-tête soit effacée par une affectation de la valeur nil.
Attachements SOAP
Le .NET Framework ne prend pas en charge les attachements MIME. Delphi 7 SOAP ne prend pas en charge les attachements
DIME.
Voir aussi
Présentation des services Web ASP.NET (
see page 104)
Portage d'une application client de services Web Delphi pour Win32 vers Delphi pour .NET (
see page 220)
Exemple CodeCentral de surveillance des packages SOAP
79
1
RAD Studio pour .NET
1.6 Développement d'applications Web
1.6 Développement d'applications Web avec
ASP.NET
ASP.NET est le modèle de programmation qui permet de concevoir des applications Web en utilisant .NET Framework. Cette
section fournit l'arrière-plan conceptuel de construction des applications ASP.NET avec RAD Studio. Outre la gestion des
composants d'accès aux données du .NET Framework, RAD Studio inclut les contrôles DB Web. Les contrôles DB Web
fonctionnent avec les fournisseurs .NET Framework et les fournisseurs de données Borland pour .NET (BDP.NET) pour
accélérer le développement d'applications Web.
1
Rubriques
Nom
Présentation de ASP.NET (
Description
see page 84)
ASP.NET est l'environnement de programmation .NET pour la construction
d'applications en HTML qui s'exécutent sur le Web. Cette rubrique fournit des
informations préliminaires sur les composants essentiels de l'architecture
ASP.NET et explique comment ASP.NET s'intègre avec les autres modèles de
programmation du .NET Framework. Cette rubrique présente :
• Architecture ASP.NET
• Web Forms
• Accès aux données
• Services web
• Fonctionnalités à la conception
• Serveurs Web pris en charge
• Exemples d'applications
Présentation des contrôles DB Web CodeGear (
see page 87)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Les contrôles DB Web CodeGear simplifient les tâches de développement des
bases de données en combinaison avec BDP.NET et les composants d'accès
aux données .NET Framework. Les contrôles DB Web sont des contrôles
orientés données qui fournissent des fonctionnalités avancées (grille orientée
données, navigateur, calendrier, boîte à options et autres composants courants).
Cette section présente :
• Architecture des contrôles DB Web
• Avantages des composants orientés données
• Composants d'accès aux données pris en charge
• Espace de nommage... suite (
Utilisation de contrôles DB Web dans les applications maître-détail (
89)
see page
see page 87)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Les contrôles DB Web permettent de concevoir des applications maître-détail
fonctionnelles, en utilisant les contrôles DBWebDataSource, DBWebGrid et
DBWebNavigator. Pour prendre en charge les applications maître-détail, ces
contrôles doivent fournir un moyen d'indiquer un comportement en cascade.
Cette rubrique comporte des informations sur les éléments suivants :
• Spécification de suppressions en cascade
• Spécification de mises à jour en cascade
80
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de l'API de navigation des contrôles DB Web (
Présentation de l'expert des contrôles DB Web (
see page 92)
Utilisation de fichiers XML avec des contrôles DB Web (
Utilisation des vues de données (
see page 91)
see page 100)
see page 98)
Présentation de ASP.NET
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Bien qu'il soit possible d'utiliser le contrôle standard DBWebNavigator pour la
plupart des applications, il est possible que vous ayez besoin d'exercer un
contrôle plus étroit sur la navigation dans votre application. Les contrôles DB
Web fournissent maintenant une API vous permettant d'optimiser votre
navigation. Par exemple, grâce à cette API, vous pouvez créer un bouton qui
réalise directement la navigation, au lieu d'utiliser le contrôle standard
DBWebNavigator. Bien qu'il soit possible de masquer les... suite ( see page 91)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Les contrôles DB Web CodeGear sont des composants Web orientés données.
Ces contrôles DB Web vous permettent d'encapsuler des fonctionnalités
orientées données dans des contrôles web standard. Un avantage de cette
approche réside dans le fait que la fonction de liaison des données est remplie
par le contrôle lui-même, ce qui élimine le besoin d'ajouter un appel à la méthode
DataBind.
Les concepts de base impliqués dans la création des contrôles DB Web sont
les... suite ( see page 92)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Le composant DBWebDataSource vous permet de créer et d'utiliser des fichiers
XML et XSD en tant que source de données pour une application ASP.NET. En
général, vous utilisez seulement ces types de fichiers avec les contrôles DBWeb
pour prototyper votre application. En utilisant les fichiers XML comme source de
données, vous pouvez éliminer des ressources de base de données
potentiellement coûteuses pendant la phase de conception et de développement
de votre projet.
Cette rubrique traite... suite ( see page 98)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Avec les composants DataViews, vous pouvez définir des filtres sur un
DataTable en utilisant la propriété RowFilter ou placer les données dans un ordre
particulier. Le composant DataView se trouve sous la zone Composants de
données de la palette d'outils. Cette rubrique traite des sujets suivants :
• Propriétés d'exécution
• Relations maître-détail
• ClearSessionChanges (méthode)
• Limitations des vues de données
Déploiement d'applications ASP.NET (
see page 101)
Cette rubrique contient des informations sur les éléments suivants :
• Exigences des serveurs Web
• Recommandations sur le pré-déploiement
• Le gestionnaire du déploiement ASP.NET de RAD Studio
Pour des informations supplémentaires sur le déploiement,
voir le fichier deploy.htm, situé par défaut à l'adresse
C:\Program Files\CodeGear\RAD Studio\5.0.
Utilisation des interfaces WebDataLink (
see page 102)
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Les caractéristiques qui rendent les contrôles DB Web différents des contrôles
web traditionnels résident dans le fait que les contrôles DB Web gèrent
automatiquement toutes les liaisons de données. Bien que vous deviez encore
configurer les liens entre les sources de données et les contrôles au moment de
la conception, toutes les liaisons à l'exécution sont gérées, sans qu'il soit
nécessaire d'ajouter une commande de liaison de données dans votre code. Lors
de l'extension d'un... suite ( see page 102)
81
1
Présentation de ASP.NET
RAD Studio pour .NET
1.6 Développement d'applications Web
1.6.1 Présentation de ASP.NET
ASP.NET est l'environnement de programmation .NET pour la construction d'applications en HTML qui s'exécutent sur le Web.
Cette rubrique fournit des informations préliminaires sur les composants essentiels de l'architecture ASP.NET et explique
comment ASP.NET s'intègre avec les autres modèles de programmation du .NET Framework. Cette rubrique présente :
• Architecture ASP.NET
• Web Forms
• Accès aux données
1
• Services web
• Fonctionnalités à la conception
• Serveurs Web pris en charge
• Exemples d'applications
Architecture ASP.NET
Les composants essentiels de l'architecture ASP.NET sont les fiches Web, les contrôles serveur ASP.NET, les fichiers de
logique de code sous-jacent et les fichiers DLL compilés. Les pages Web Form contiennent des éléments HTML, du texte et des
contrôles serveur. Les fichiers de code sous-jacent contiennent la logique applicative des pages Web Form. Les fichiers DLL
compilés restituent le HTML sur le serveur Web.
CodeGear propose des outils pour simplifier le développement ASP.NET. Si vous êtes familier avec le développement rapide
d'applications (RAD) et la programmation orientée objet au moyen de propriétés, de méthodes et d'événements, vous serez en
terrain connu avec le modèle ASP.NET de conception d'applications Web.
Fiches Web, contrôles serveur et éléments HTML
Les fiches Web définissent l'interface utilisateur pour votre application Web. Une fiche Web se compose généralement d'un
fichier de balisage (.aspx) qui fournit la présentation visuelle et d'un fichier de code sous-jacent (.pas ou .cs) qui fournit la
logique du programme. Le fichier de code sous-jacent est compilé en .dll et déployé sur le serveur avec le fichier .aspx. A
l'exécution, le fichier .aspx est compilé et lié avec le fichier de code sous-jacent .dll. Cela vous permet de modifier le fichier
.aspx sans avoir à recompiler le fichier de code sous-jacent.
Le fichier .aspx de fiche Web se compose de contrôles serveur ASP.NET et d'éléments HTML statiques. Les contrôles serveur
sont déclarés dans votre code et peuvent être accessibles par programme par l'intermédiaire de propriétés, de méthodes et de
gestionnaires d'événements. Ils s'exécutent sur le serveur web et produisent le HTML à renvoyer au client.
Les éléments HTML sont des contrôles statiques, côté client ; ils ne sont pas, par défaut, accessibles par programme. Toutefois,
ils conviennent bien aux textes et aux images statiques d'une fiche Web.
82
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de ASP.NET
Accès aux données
Les fiches Web peuvent accéder aux données par l'intermédiaire d'ADO.NET. Vous pouvez connecter une application ASP.NET
à une source de données ADO.NET en utilisant les composants de données inclus dans le .NET Framework, les composants
AdoDbx Client, Blackfish SQL ou du fournisseur de données Borland (BDP.NET).
Services web
Les services Web fournissent des composants d'applications à de nombreux systèmes distribués en utilisant une messagerie
basée sur XML. Un service web peut être aussi simple qu'un message XML mettant à jour des valeurs dans une application
distante, ou peut être partie intégrante d'une application ASP.NET ou ADO.NET sophistiquée. Les services web et ASP.NET
partagent une infrastructure .NET commune qui permet une intégration transparente.
Serveurs Web pris en charge
RAD Studio supporte deux serveurs pour le développement des applications ASP.NET : Internet Information Services 6.0 (IIS) et
Cassini. Vous pouvez utiliser IIS et Cassini sur le même ordinateur, à condition de les configurer pour qu'ils utilisent des ports
différents.
• IIS est un serveur web complet et évolutif qui est inclus dans Windows Server 2003. Vous pouvez déployer des applications
sur un ordinateur exécutant IIS.
• Cassini est un serveur web utilisé durant le processus de développement, mais n'a pas été conçu pour le déploiement des
applications. Il est plus facile de l'utiliser plutôt que IIS car il n'y a pas de configuration. Cassini a été développé par Microsoft
et rendu disponible par téléchargement gratuit avec le source. RAD Studio est livré avec une version légèrement
personnalisée de Cassini intégrée dans notre support ASP.NET.
Lorsque vous créez une application ASP.NET, RAD Studio vous invite à spécifier le serveur web et un emplacement pour
l'application. Vous pouvez définir le serveur et l'emplacement par défaut pour les nouvelles applications, ainsi que
l'emplacement et le port du serveur Cassini, sur la page Outils Options ASP.NET.
Fonctionnalités à la conception
RAD Studio offre plusieurs fonctionnalités à la conception pour vous aider à accélérer le développement de fichiers Web Forms,
HTML et CSS.
Modification des fichiers HTML et CSS
De nombreuses fonctionnalités de l'éditeur de code sont également disponibles pour l'édition des fichiers HTML et CSS.
L'achèvement du code (CTRL+ESPACE) et la mise en évidence de la syntaxe sont disponibles pour les fichiers HTML et CSS.
L'audit d'erreur est disponible pour les fichiers HTML et met en évidence le code HTML incorrect en le soulignant d'un trait
ondulé rouge. Si vous positionnez la souris sur le code HTML mis en évidence, une fenêtre de conseil apparaît en indiquant la
cause probable de l'erreur.
Lors de l'affichage d'une page HTML, le formateur HTML interne indente automatiquement le code HTML pour améliorer la
lisibilité. Vous pouvez aussi utiliser HTML Tidy, l'outil de formatage standard de www.w3c.org. Vous pouvez utiliser HTML Tidy,
si nécessaire, pour formater le fichier et vérifier la présence d'erreurs en choisissant les commandes de menu Edition HTML
Tidy. Vous pouvez également le configurer comme formateur par défaut, à la place du formateur interne. Vous pouvez aussi
définir des balises que HTML Tidy aurait détectées comme incorrectes, comme celles préfixées par asp:. Pour accéder aux
options de HTML Tidy, choisissez Outils Options Options HTML Tidy.
La vue structure affiche une vue arborescente hiérarchique des balises HTML dans la page HTML active, et elle est utile
lorsque vous naviguez dans des fichiers de taille importante. Un double-clic sur un noeud de la vue arborescente vous
positionne dans le fichier HTML sur la balise correspondante.
Disposition de flux et disposition de grille du concepteur
A la conception d'une fiche Web, vous pouvez utiliser soit une disposition de grille soit une disposition de flux pour le concepteur.
Dans la disposition de grille, les contrôles sont disposés par position absolue et vous pouvez les repositionner en les faisant
glisser sur la fiche. Une grille facultative visible est également disponible pour vous aider à aligner les contrôles. Si vous faites
83
1
Présentation des contrôles DB Web
RAD Studio pour .NET
1.6 Développement d'applications Web
glisser un contrôle depuis la palette d'outils vers la fiche Web ou si vous cliquez sur le contrôle sur la palette d'outils puis que
vous cliquez ensuite sur la fiche Web, le contrôle est ajouté au moyen d'un positionnement absolu.
Dans la disposition de flux, les contrôles sont disposés du haut vers le bas sur la fiche Web, et vous pouvez les repositionner à
l'aide des touches fléchées. Si vous double-cliquez sur un contrôle sur la palette d'outils, il sera ajouté à la fiche Web en
disposition de flux.
La disposition pour un contrôle individuel peut être modifiée en utilisant le bouton Disposition absolue
Conception HTML en haut du concepteur.
sur la barre d'outils
Pour changer de façon permanente la disposition des nouveaux fichiers créés à l'aide de RAD Studio, vous pouvez modifier le
fichier template page.aspx situé, par défaut, dans CodeGear\RAD Studio\5.0\ObjRepos\DelphiDotNet.
1
Exemples d'applications
RAD Studio inclut plusieurs exemples d'applications ASP.NET dans le répertoire Demos. Un grand nombre d'exemples
d'applications comprennent un fichier readme qui décrit l'application et énumère ses éventuelles conditions préalables. Avant
d'essayer d'ouvrir un exemple d'application dans l'EDI :
• Recherchez un fichier readme dans le répertoire de l'application et suivez les instructions de configuration éventuelles.
• Créez un répertoire virtuel pour l'exemple d'application de façon à éviter les erreurs Impossible de trouver la
ressource dans le navigateur à l'exécution (voir la procédure présentée à la fin de cette rubrique).
Voir aussi
Présentation de ADO.NET (
see page 14)
Présentation des services Web (
see page 104)
Conception d'une application ASP .NET (
Contrôles DB Web pour ASP.NET (
see page 181)
see page 87)
Déploiement d'applications ASP.NET (
see page 101)
Création d'un répertoire virtuel pour les applications de démonstration (
see page 200)
Espace de nommage System.Web
Applications Web ASP.NET du Guide du développeur .NET Framework (MSDN)
1.6.2 Présentation des contrôles DB Web CodeGear
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Les contrôles DB Web CodeGear simplifient les tâches de développement des bases de données en combinaison avec
BDP.NET et les composants d'accès aux données .NET Framework. Les contrôles DB Web sont des contrôles orientés données
qui fournissent des fonctionnalités avancées (grille orientée données, navigateur, calendrier, boîte à options et autres
composants courants).
Cette section présente :
• Architecture des contrôles DB Web
• Avantages des composants orientés données
• Composants d'accès aux données pris en charge
• Espace de nommage des contrôles DB Web
84
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation des contrôles DB Web
• Déploiement d'applications ASP.NET avec les contrôles DB Web
Architecture des contrôles DB Web
Les contrôles DB Web sont un ensemble de composants visuels et non visuels qui accélèrent la création des applications
ASP.NET en offrant des fonctionnalités de glisser-déplacer ainsi qu'un puissant mécanisme de recherche de source de
données. En grande partie, les contrôles DB Web sont des contrôles d'interface utilisateur graphique (GUI) communs pour les
applications ASP.NET. Le contrôle connecteur, le contrôle DBWebDataSource, agit comme connecteur orienté données entre
les contrôles visuels et la source de données sous-jacente. En d'autres termes, le contrôle DBWebDataSource agit comme un
canal pour les données qui sont stockées dans une source de données et les contrôles qui affichent ces données sur votre fiche
ASP.NET. Le contrôle DBWebDataSource peut référencer des composants .NET Framework ADO.NET et BDP.NET. Par
exemple, l'ensemble de données en mémoire généré par un adaptateur ADO.NET (tel que SQLDataAdapter) ou par l'un des
adaptateurs BDP.NET (tel que BDPDataAdapter). De plus, vous pouvez utiliser DBWebDataSource pour la liaison avec d'autres
types de fournisseurs de source de données, tels que des fichiers texte, des tableaux ou des collections.
Avantages des composants orientés données
En général, lorsque vous créez une application ASP.NET qui représente les contrôles exposant les données d'une source de
données sous-jacente, telle qu'une base de données, vous devez configurer manuellement la liaison entre la source de données
et les contrôles. Cela consiste à définir la syntaxe et les paramètres pour chaque contrôle qui doit être lié à la source de
données.
Le principal avantage de l'utilisation des contrôles DB Web réside dans le fait qu'une fois que vous avez connecté un contrôle
DBWebDataSource à votre source de données, tous les contrôles DB Web de votre page ASP.NET qui référencent
DBWebDataSource sont automatiquement reliés à la source de données sous-jacente. Il n'est pas nécessaire d'ajouter du code
pour accomplir la liaison des données.
Les contrôles DB Web fournissent les avantages suivants par rapport aux contrôles Web standard :
• Elimination du besoin d'appeler la méthode WebControl.DataBind. Normalement, chaque contrôle ASP.NET de la fiche web
nécessite que vous ajoutiez cet appel à la routine Page_load, faute de quoi le contrôle n'affichera pas les données à
l'exécution.
• Affichage d'une vue de conception des données.
• Transmission automatique des modifications à l'ensemble de données. Normalement, les contrôles ASP.NET ont besoin d'un
code pour transmettre les modifications.
• Maintien de la position en cours des lignes.
• Gestion automatique du changement d'état de ligne. Cela signifie que des clients provenant de différentes machines peuvent
fonctionner indépendamment, quel que soit l'état côté serveur.
En supplément de ces avantages généraux, les contrôles DB Web offrent les avantages spécifiques suivants :
• Le DBWebDataSource conserve une liste ordonnée des modifications pour que l'utilisateur puisse annuler les modifications
dans l'ordre dans lequel elles ont été apportées.
• Le contrôle DBWebNavigator offre des fonctionnalités de navigation pour les grilles et plusieurs contrôles de texte, et il peut
être étendu aux contrôles Web standards.
• Le DBWebDataGrid offre des fonctionnalités intégrées de pagination avec des numéros et des icônes, d'ajout de colonnes
Modifier et Supprimer et d'autres fonctionnalités avancées. En d'autres termes, vous n'avez plus besoin de coder ces
fonctionnalités dans votre contrôle de grille.
Composants d'accès aux données pris en charge
Les contrôles DB Web sont compatibles avec les composants d'accès aux données .NET Framework ADO.NET et CodeGear
BDP.NET. Toute source de données accessible par l'un de ces fournisseurs peut servir de source de données sous-jacente pour
les contrôles DB Web. De plus, de nombreux contrôles DB Web, comme de nombreux contrôles Web .NET en général, peuvent
accéder à d'autres objets en tant que sources de données, comme les tableaux, les collections et les fichiers.
85
1
Utilisation de contrôles DB Web dans les
RAD Studio pour .NET
1.6 Développement d'applications Web
Espace de nommage des contrôles DB Web
L'espace de nommage des contrôles DB Web est Borland.Data.Web. Avec la réflexion, vous pouvez en apprendre beaucoup
sur la structure de l'espace de nommage et les contrôles. Vous pouvez ajouter l'espace de nommage à votre projet, puis l'ouvrir
dans l'éditeur de code. Ceci ouvre l'éditeur de réflexion et vous donne une vue hiérarchisée de tous les contrôles et de leurs
membres.
1
Options de contrôle
Description
DBWebDataSource
Fait office de pont entre la source de données et les contrôles DBWeb.
DBWebAggregateControl
Un contrôle zone de saisie qui affiche des valeurs d'agrégation à partir d'une colonne
spécifiée.
DBWebCalendar
Un contrôle calendrier.
DBWebCheckBox
Un contrôle case à cocher.
DBWebDropDownList
Un contrôle boîte à options.
DBWebGrid
Une grille de données.
DBWebImage
Un contrôle image.
DBWebLabel
Un libellé.
DBWebLabeledTextBox
Une zone de saisie avec un libellé associé.
DBWebListBox
Un contrôle boîte liste.
DBWebMemo
Un contrôle champ mémo.
DBWebNavigationExtender
Un composant non visuel qui vous permet de définir des boutons de contrôle Web standard
comme contrôles de navigation.
DBWebNavigator
Une barre de navigation.
DBWebRadioButtonList
Un groupe de boutons radio.
DBWebSound
Un contrôle son, qui utilise le lecteur multimédia par défaut sur votre système.
DBWebTextBox
Une zone de saisie.
DBWebVideo
Un contrôle vidéo, qui utilise le lecteur multimédia par défaut de votre système.
Déploiement d'applications ASP.NET avec les contrôles DB Web
Après avoir créé un projet ASP.NET avec les contrôles DB Web, déployez votre application ASP.NET comme d'habitude. Vous
ne devez prendre en compte aucun point particulier.
Voir aussi
Fournisseurs de données pour .NET (
see page 27)
Conception d'une application avec des contrôles DB Web (
Conception d'une application ASP .NET (
see page 181)
Utilisation de fichiers XML avec des contrôles DB Web (
Utilisation des vues de données (
Interfaces WebDataLink (
see page 100)
see page 102)
Déploiement d'applications ASP.NET (
86
see page 195)
see page 101)
see page 98)
1.6 Développement d'applications Web
RAD Studio pour .NET
Utilisation de contrôles DB Web dans les
1.6.3 Utilisation de contrôles DB Web dans les applications
maître-détail
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Les contrôles DB Web permettent de concevoir des applications maître-détail fonctionnelles, en utilisant les contrôles
DBWebDataSource, DBWebGrid et DBWebNavigator. Pour prendre en charge les applications maître-détail, ces contrôles
doivent fournir un moyen d'indiquer un comportement en cascade.
Cette rubrique comporte des informations sur les éléments suivants :
• Spécification de suppressions en cascade
• Spécification de mises à jour en cascade
Suppressions en cascade
Une application maître-détail utilise généralement l'événement OnApplyChanges pour envoyer les modifications du DataSet au
serveur. Il est nécessaire que la méthode update de l'adaptateur de données maître (dans BDP.NET, l'événement AutoUpdate)
soit appelée avant la méthode update de l'adaptateur de données détail. Si la ligne maître n'a pas été insérée, l'insertion de
lignes détail échouera. Si la ligne maître est supprimée avant la ligne détail, il se peut que le serveur retourne une erreur.
La propriété CascadingDeletes a été ajoutée au contrôle DBWebDataSource. La propriété CascadingDeletes indique la façon
dont le serveur supprime les lignes dans les applications maître-détail. La propriété CascadingDeletes fournit les trois options
suivantes :
• NoMasterDelete (par défaut)
• ServerCascadeDelete
• ServerNoForeignKey
Remarque: Quand les contrôles DB Web sont connectés à un DataTable représentant une table détail d'une relation, les
lignes du contrôle sont automatiquement limitées aux lignes contrôlées par la ligne parent en cours de la table maître.
NoMasterDelete
Cette option ne permet pas la suppression d'une ligne maître contenant des lignes détail. Cette option doit être utilisée quand le
serveur implémente une contrainte étrangère entre maître et détail mais ne prend pas en charge les suppressions en cascade.
Vous devez :
1. Supprimer des lignes détail.
2. Appliquer les modifications avec un événement apply (par exemple, l'événement BdpDataAdapter. AutoUpdate).
3. Supprimer la ligne maître.
4. Appeler l'événement apply (par exemple, l'événement BdpDataAdapter. AutoUpdate).
Cette option est la valeur par défaut de la propriété CascadingDeletes.
ServerCascadeDelete
Cette option permet la suppression de la ligne maître. Elle doit être indiquée quand le serveur est configuré pour prendre en
charge automatiquement les suppressions en cascade. Lors de la suppression d'une ligne maître, les lignes détail disparaissent
automatiquement de la vue. Avant d'appliquer la modification, vous pouvez annuler la suppression de la ligne parent pour
restaurer toutes les lignes détail dans la vue. Si le serveur n'est pas configuré pour prendre en charge des suppressions en
cascade, une erreur peut se produire chaque fois que vous tentez de lui envoyer des modifications.
87
1
Présentation de l'API de navigation des
RAD Studio pour .NET
1.6 Développement d'applications Web
ServerNoForeignKey
Cette option supprime automatiquement toutes les lignes détail lors de la suppression d'une ligne maître. Cette option doit être
indiquée quand il n'existe pas de contrainte de clé étrangère entre les tables maître-détail sur le serveur. Elle présente les
mêmes effets que l'option ServerCascadeDelete : lors de la suppression d'une ligne maître, les lignes détail disparaissent
automatiquement de la vue. Avant d'appliquer la modification, il est possible d'annuler la suppression de la ligne maître pour
réafficher les lignes détail. Si vous indiquez cette option alors que des contraintes de clé étrangère existent entre les tables
maître et détail, le serveur générera une erreur en cas de tentative de suppression de la table maître.
Mises à jour en cascade
Une application maître-détail utilise généralement l'événement OnApplyChanges pour envoyer les modifications du DataSet au
serveur. Il est nécessaire que la méthode update de l'adaptateur de données maître (dans BDP.NET, l'événement AutoUpdate)
soit appelée avant la méthode update de l'adaptateur de données détail. Si la ligne maître n'a pas été insérée, l'insertion de
lignes détail échouera. Si la ligne maître est supprimée avant la ligne détail, il se peut que le serveur retourne une erreur.
1
La propriété CascadingUpdates a été ajoutée au contrôle DBWebDataSource. Cette propriété indique la façon dont le serveur
met à jour les valeurs de clé étrangère dans les applications maître-détail. La propriété CascadingUpdates fournit les trois
options suivantes :
• NoMasterUpdate (par défaut)
• ServerCascadeUpdate
• ServerNoForeignKey
Remarque: Quand les contrôles DB Web sont connectés à un DataTable représentant une table détail d'une relation, les
lignes du contrôle sont automatiquement limitées aux lignes contrôlées par la ligne parent en cours de la table maître.
NoMasterUpdate
Cette option n'autorise pas les modifications de la valeur de la clé étrangère d'une ligne maître si elle possède des lignes détail
associées. Cette option est la valeur par défaut de la propriété CascadingUpdates.
ServerCascadeUpdate
Cette option permet la modification de la valeur de clé étrangère de la ligne maître. Vous devez utiliser cette option quand le
serveur gère automatiquement les mises à jour en cascade. Dès qu'elle est modifiée dans une ligne maître, la valeur de clé
étrangère est modifiée automatiquement dans les lignes détail. Avant d'appliquer la modification, vous pouvez l'annuler dans la
ligne maître pour restaurer les clés détail dans leur état antérieur. Si le serveur n'est pas configuré pour prendre en charge des
mises à jour en cascade, une erreur peut se produire chaque fois que vous tentez de lui envoyer des modifications.
ServerNoForeignKey
Cette option autorise également la modification de la valeur de clé étrangère de la ligne parent mais elle doit être employée
quand il n'existe pas de clé étrangère entre les tables maître et détail sur le serveur.
Voir aussi
Utilisation des vues de données (
see page 100)
Construction d'applications avec des contrôles DBWeb (
88
see page 195)
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de l'expert des contrôles DB
1.6.4 Présentation de l'API de navigation des contrôles DB
Web
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Bien qu'il soit possible d'utiliser le contrôle standard DBWebNavigator pour la plupart des applications, il est possible que vous
ayez besoin d'exercer un contrôle plus étroit sur la navigation dans votre application. Les contrôles DB Web fournissent
maintenant une API vous permettant d'optimiser votre navigation. Par exemple, grâce à cette API, vous pouvez créer un bouton
qui réalise directement la navigation, au lieu d'utiliser le contrôle standard DBWebNavigator. Bien qu'il soit possible de masquer
les boutons sur le DBWebNavigator, il est préférable de placer des contrôles à différents endroits sur la fiche. Avec
DBWebNavigator, par exemple, si vous masquez tous les boutons à l'exception de Précédent et Suivant, ils apparaissent encore
côte à côte. Pour placer les boutons sur des côtés opposés de la fiche, utilisez les méthodes de l'API de navigation ou le
contrôle DBWebNavigationExtender. Tous deux vous permettent de changer des boutons de contrôles Web standard en
contrôles de navigation.
Pour offrir cette fonctionnalité, le DBWebDataSource implémente de nouvelles méthodes IDBDataSource, effectuant chacune
une tâche de navigation spécifique. Vous incluez ces méthodes dans l'événement Form_Load. Vous n'êtes pas obligé d'inclure
les événements clic.
Les méthodes proposées sont les suivantes :
• RegisterNextControl
• RegisterPreviousControl
• RegisterFirstControl
• RegisterLastControl
• RegisterInsertControl
• RegisterDeleteControl
• RegisterUpdateControl
• RegisterCancelControl
• RegisterUndoControl
• RegisterUndoAllControl
• RegisterApplyControl
• RegisterRefreshControl
• RegisterGoToControl
Voir aussi
Contrôles DBWeb CodeGear (
see page 87)
Conception d'une application avec des contrôles DBWeb (
see page 195)
1.6.5 Présentation de l'expert des contrôles DB Web
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
89
1
Présentation de l'expert des contrôles DB
RAD Studio pour .NET
1.6 Développement d'applications Web
utiliser à la place les contrôles Web standard.
Les contrôles DB Web CodeGear sont des composants Web orientés données. Ces contrôles DB Web vous permettent
d'encapsuler des fonctionnalités orientées données dans des contrôles web standard. Un avantage de cette approche réside
dans le fait que la fonction de liaison des données est remplie par le contrôle lui-même, ce qui élimine le besoin d'ajouter un
appel à la méthode DataBind.
Les concepts de base impliqués dans la création des contrôles DB Web sont les suivants :
• Le cycle de vie de l'exécution des contrôles ASP.NET
• Les concepts des liaisons de données
• Redéfinition des méthodes ASP.NET
• Implémentation d'interfaces DB Web
1
• Les principales modifications du code
Le cycle de vie de l'exécution des contrôles ASP.NET (CEL)
Chaque fois qu'une page de fiches web ASP.NET est affichée, ASP.NET effectue ce que Microsoft appelle le CEL (Control
Execution Lyfecycle). Cette opération se compose d'un certain nombre d'étapes, représentées par les méthodes :
1. Initialize
2. Load view state
3. Process postback data
4. Load
5. Send postback change notifications
6. Handle postback events
7. Prerender
8. Save state
9. Render
10. Dispose
11. Unload
Vous pouvez ajouter une logique sur certains ou tous ces événements en ajoutant du code aux méthodes données, comme la
méthode Page_Load ou OnInit. Le plus souvent, toutefois, vous devrez redéfinir la méthode Render.
Liaison de données
Dans ASP.NET, vous pouvez lier plusieurs sources de données telles que des bases de données, des fichiers texte, des fichiers
XML, des tableaux et des collections. Dans RAD Studio, les contrôles fournissent une interface simple basée sur des propriétés
pour les sources de données. Dans l'inspecteur d'objets, vous pouvez lier un contrôle sélectionné à une source de données
identifiée pour votre projet au moyen de contrôles BDP.NET, de contrôles client SQL ou d'autres contrôles de données ou de
fichiers. Chaque type de contrôle de données possède différents ensembles de conditions de liaison. Par exemple, n'importe
quel contrôle de collection, comme le contrôle boîte liste, grille de données ou vue liste, doit être lié à une source de données qui
implémente l'interface ICollection. D'autres contrôles, comme les boutons et les zones de saisie, n'ont pas cette exigence.
Lorsque vous programmez avec des contrôles web, vous devez ajouter le code pour effectuer la liaison de données. Par
exemple, si vous créez une instance d'une grille de données, la commande que vous ajouterez ressemblera à ceci :
dataGrid1.DataBind();
Lorsque vous utilisez les contrôles DB Web, vous n'avez plus à ajouter ce code. Les contrôles DB Web gèrent l'opération de
liaison de données à votre place. Le composant DBWebDataSource sert de pont entre votre composant source de données et le
contrôle DB Web spécifique que vous souhaitez utiliser. Le DBWebDataSource crée et gère la liaison de données entre la
source de données et le contrôle. Bien qu'il soit possible d'ajouter le code pour instancier un contrôle DB Web et pour effectuer
90
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de l'expert des contrôles DB
la liaison de données, il n'est pas nécessaire de le faire. Vous pouvez placer vos composants sur une fiche web et sélectionner
les liaisons à partir des zones de listes déroulantes des propriétés dans l'inspecteur d'objets.
Remarque: Lors de la création d'un nouveau contrôle DB Web ou de l'extension d'un contrôle existant, vous devez ajouter du
code pour effectuer la liaison de certaines propriétés.
Redéfinition des méthodes ASP.NET
La principale méthode que vous devrez redéfinir est la méthode Render (ou la méthode RenderContents). La méthode Render
est responsable de l'affichage visible de vos contrôles sur la page web. Lorsque vous définissez la méthode Render puis la
transmettez à une instance de la classe HtmlTextWriter, vous indiquez que le codage de la méthode doit être écrit dans la page
ASP.NET en HTML. La méthode Write de la classe HtmlTextWriter écrit une chaîne séquentielle de caractères HTML sur une
page Web Forms.
L'exemple suivant montre comment le contrôle est déclaré dans le fichier construit par l'expert Contrôle DB Web. Voici
seulement une petite partie du code qui vous est fourni.
/// TWebControl1 hérite de la classe WebControl de System.Web.UI.WebControls.
TWebControl1 = class(System.Web.UI.WebControls.WebControl)
Lors de la création de vos propres contrôles ou de l'extension de contrôles existants, vous devez redéfinir la méthode Render
pour afficher votre contrôle. La méthode Render est responsable de l'envoi des sorties vers une instance d'une classe
HtmlTextWriter. HtmlTextWriter envoie une séquence de caractères HTML vers la page Web Forms. Les caractères HTML sont
la représentation en HTML de votre contrôle. Par exemple, un contrôle grille web est représenté sur une page de fiches web
sous la forme d'un tableau HTML. Chaque contrôle possède sa propre représentation HTML, mais lorsque vous étendez un
contrôle, vous devez modifier la manière dont le HTML est émis pour représenter précisément votre nouveau contrôle.
///
///
///
///
Les lignes suivantes déclarent la méthode Render.
Output représente une instance de la classe HtmlTextWriter.
HtmlTextWriter est la classe qui écrit des caractères HTML sur
la page Web Forms ASP.NET.
strict protected
procedure Render(Output: HtmlTextWriter); override;
implementation
{$REGION 'Control.Render override'}
///
///
///
///
///
La procédure suivante représente la redéfinition de la méthode Render.
Vous pouvez inclure une logique supplémentaire dans la procédure pour modifier
le comportement du contrôle. Cette méthode, telle qu'elle est écrite, ne fait
rien mais écrit une séquence de caractères HTML
définissant TWebControl1.
procedure TWebControl1.Render(Output: HtmlTextWriter);
begin
Output.Write(Text);
end;
Vous devez implémenter le code précédent même si vous essayez d'étendre les fonctionnalités d'un contrôle web standard.
Pour étendre l'un des contrôles DB Web, vous devez apporter d'autres modifications à ce code.
Implémentation d'interfaces DB Web
Lorsque vous exécutez l'expert Contrôle DB Web, celui-ci crée un fichier de code contenant le code de base nécessaire à
l'extension d'un contrôle DB Web. Ce fichier est similaire au fichier que vous devez créer si vous essayez d'étendre un contrôle
Web standard. La différence principale réside dans le fait que l'expert Contrôle DB Web ajoute des implémentations
d'interfaces DB Web spécifiques, qui fournissent un accès automatique à une source de données, des tables, des colonnes et
leurs propriétés respectives. Comme les contrôles DB Web gèrent automatiquement une grande partie de l'écriture et des
91
1
Présentation de l'expert des contrôles DB
RAD Studio pour .NET
1.6 Développement d'applications Web
liaisons de données, vous devez implémenter plusieurs interfaces spécifiques pour ajouter cette fonctionnalité à votre contrôle.
Les principales modifications du code
Lorsque vous créez une bibliothèque de contrôles DB Web, l'expert Contrôle DB Web crée un modèle de fichier. Ce fichier
contient les principaux éléments que vous devez inclure dans votre projet pour créer ou étendre un contrôle. Vous devez ajouter
ou modifier les éléments suivants :
• Modifiez l'attribut ToolboxBitmap pour spécifier votre propre icône pour la palette d'outils, si nécessaire.
• Modifiez la déclaration du contrôle pour spécifier le contrôle dont vous souhaitez hériter.
• Déclarez la méthode Render correcte.
• Implémentez l'interface IDBWebDataLink.
• Implémentez les interfaces IDBWebColumnLink et IDBWebLookupColumnLink, si nécessaire.
1
• Modifiez ou étendez la méthode Render.
• Modifiez l'enregistrement du champ masqué, si nécessaire.
• Définissez la liaison de données sur des propriétés spécifiques, si nécessaire.
Modification de l'attribut ToolboxBitmap
Si vous disposez d'une icône bitmap utilisable dans la palette d'outils, spécifiez son chemin dans l'attribut ToolboxBitmap du
fichier de la bibliothèque de contrôles DB Web. Le code est semblable à celui-ci :
[ToolboxBitmap(typeof(WebControl1)]
['WebControl1.bmp')]
Assurez-vous que le fichier bitmap est inclus dans votre projet.
Modification de la déclaration du contrôle
Vous pouvez spécifier l'ancêtre plus précisément. Par exemple, si votre contrôle est une version étendue d'un contrôle
DBWebGrid, le code ressemblera à ceci :
MyDataGrid = class(Borland.Data.Web.DBWebGrid, IPostBackDataHandler, IDBWebDataLink)
Déclaration de la méthode Render correcte
Votre contrôle peut hériter de l'espace de nommage Control ou de l'espace de nommage WebControls. WebControls
dérive en fait de l'espace de nommage Control.
La principale différence pour vous réside dans le fait que WebControls définit tous les contrôles web standard, de sorte que si
vous planifiez d'étendre les fonctionnalités d'un contrôle web tel qu'une zone de saisie ou une grille de données, votre contrôle
devra hériter de WebControls.
En héritant de WebControls, vous pouvez utiliser toutes les propriétés d'apparence de votre contrôle de base. Généralement,
si vous voulez créer un contrôle qui possède une interface utilisateur, héritez de System.Web.UI.WebControls. Dans le
fichier de la bibliothèque de contrôles DB Web, vous redéfinirez la méthode RenderContents.
Si votre contrôle hérite de Control, vous devez fournir la définition de l'interface utilisateur lorsque vous redéfinissez la
méthode Render. Généralement, si vous voulez créer un contrôle ne possédant pas d'interface utilisateur, vous héritez de
System.Web.UI.Control. Dans le fichier de la bibliothèque de contrôles DB Web, vous redéfinirez la méthode
Render.
Implémentation de l'interface IDBWebDataLink
Cette interface permet d'accéder à une source de données. Vous devez implémenter cette interface pour tous les contrôles DB
92
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de l'expert des contrôles DB
Web que vous voulez étendre. L'implémentation est traitée dans le fichier de la bibliothèque de contrôles DB Web.
Modification ou extension de la méthode Render
Dans la méthode Render ou RenderContents, en fonction de l'espace de nommage dont vous héritez, vous pouvez redéfinir les
propriétés de la classe de base. Dans le fichier de la bibliothèque de contrôles DB Web, le code suivant est
automatiquement inclus :
procedure TWebControl1.Render(Output: HtmlTextWriter);
begin
Output.Write(Text);
end;
Cette méthode transmet la définition de votre contrôle à une instance de HtmlTextWriter, appelée Output dans ce cas. La
propriété Text contient le texte HTML qui doit être restitué. Si vous voulez coder directement dans la méthode, vous pouvez
ajouter du code, comme suit :
procedure TWebControl1.Render(Output: HtmlTextWriter);
begin
Output.WriteFullBeginTag("html");
Output.WriteLine();
Output.WriteFullBeginTag("body");
Output.WriteLine();
Output.WriteEndTag("body");
Output.WriteLine();
Output.WriteEndTag("html");
Output.WriteLine();
end;
Cela donne une page web ASP.NET avec le code HTML suivant :
<html>
<body>
</body>
</html>
L'utilisation de la propriété Text facilite toutefois l'utilisation de ce code. Après avoir défini votre contrôle et ses propriétés, avec
différentes balises HTML, vous pouvez transmettre toute la structure à la propriété Text. A partir de ce point, vous devez
uniquement vous référer à la propriété Text pour agir sur le contrôle. Vous définissez les propriétés de vos contrôles et les
transmettez au HtmlTextWriter en créant une propriété Text qui contient la définition du contrôle. Il est intéressant de regarder le
code source pour certains contrôles DB Web existants. Par exemple, le code suivant affiche la définition de la propriété Text
pour le contrôle DBWebNavigator.
protected string Text{
obtention
{
// Créer une nouvelle instance de StringWriter.
StringWriter sw = new StringWriter();
// Créer une nouvelle instance de HtmlTextWriter.
HtmlTextWriter tw = new HtmlTextWriter(sw);
// Appeler la procédure DataBind.
DataBind();
// Appeler la procédure AddButtons.
AddButtons();
// Appeler la procédure SetButtonsWidth.
SetButtonsWidth();
93
1
Présentation de l'expert des contrôles DB
RAD Studio pour .NET
1.6 Développement d'applications Web
// Ajouter un style à un volet.
ClassUtils.AddStyleToWebControl(FPanel, this.Style);
// Restituer la balise de démarrage HTML pour un contrôle de volet.
FPanel.RenderBeginTag(tw);
// Appeler la méthode HtmlTextWriter.Write et transmettre les balises
// table et tablerow à la page Web Forms.
tw.Write("<table><tr>");
// Si le ButtonType est initialisé à ButtonIcons, créer et restituer itérativement les boutons
// sur la page Web Forms.
if( ButtonType == NavigatorButtonType.ButtonIcons )
1
{
for( int i = 0; i < IconNavButtons.Count; i++ )
{
// Ecrire la première balise de cellule du tableau.
tw.Write("<td>");
// Instancier un bouton image.
ImageButton b = (IconNavButtons[i] as ImageButton);
// Restituer le bouton sur la page web
b.RenderControl(tw);
// Ecrire la balise de fermeture des cellules du tableau.
tw.Write("</td>");
}
}
else
// Si le ButtonType est différent de ButtonIcons, créer et
// restituer itérativement les boutons de navigation par défaut sur la page Web Forms.
{
for( int i = 0; i < NavButtons.Count; i++ )
{
// Ecrire la première balise de cellule du tableau.
tw.Write("<td>");
// Instancier un bouton.
Button b = (NavButtons[i] as Button);
// Restituer le bouton sur la page web
b.RenderControl(tw);
// Ecrire la balise de fermeture des cellules du tableau.
tw.Write("</td>");
}
}
// Ecrire les balises de fermeture de ligne et de tableau.
tw.Write("</tr></table>");
// Restituer la balise de fin du volet.
FPanel.RenderEndTag(tw);
return sw.ToString();
}
}
94
1.6 Développement d'applications Web
RAD Studio pour .NET
Présentation de l'expert des contrôles DB
Modification de l'enregistrement du champ masqué
Le fichier de la bibliothèque de contrôles DB Web inclut un appel pour enregistrer un champ masqué identifiant la clé
pour un contrôle en lecture-écriture. Si vous créez un contrôle en lecture seule, vous pouvez supprimer ou commenter cet appel.
L'appel est illustré dans l'exemple suivant :
Page.RegisterHiddenField(DBWebDataSource.IdentPrefix +
DBWebConst.Splitter + IDataLink.TableName, self.ID);
Définition de la liaison de données sur des propriétés spécifiques
Si vous avez besoin d'autres propriétés de liaison de données, différentes de la propriété Text, vous pouvez ajouter ce code de
liaison de données à l'emplacement de la propriété Text liée. Vous trouverez généralement un appel à DataBind dans la
méthode PreRender. La procédure DataBind elle-même est similaire à l'exemple suivant, tiré du code source des contrôles
DBWebLabeledTextBox. Vous pouvez voir dans le code suivant qu'un certain nombre de propriétés sont définies après avoir
vérifié que FColumnLink (de l'interface IDBWebDataColumnLink) est lié à une source de données.
public override void DataBind()
{
try
{
FTextBox.ReadOnly = FReadOnly;
FTextBox.ID = this.ID;
base.DataBind();
ClassUtils.SetBehaviorProperties(FPanel, this);
ClassUtils.SetOuterAppearanceProperties(FPanel, this);
ClassUtils.SetSizeProperties(FPanel, this);
if( !ClassUtils.IsEmpty(FLabel.Text) )
{
ClassUtils.SetInnerAppearanceProperties(FLabel, this);
SetProportionalSize();
SetLabelFont();
FTextBox.Text = null;
}
// S'il existe une source de données.
if( IColumnLink.DBDataSource != null )
{
// Et s'il existe des données liées.
if( FColumnLink.IsDataBound )
{
// Définir alors les propriétés de comportement.
ClassUtils.SetBehaviorProperties(FTextBox, this);
// Définir les propriétés d'apparence.
ClassUtils.SetAppearanceProperties(FTextBox, this);
// Définir les propriétés de taille.
ClassUtils.SetSizeProperties(FTextBox, this);
object o = IColumnLink.DBDataSource.GetColumnValue(Page,
IColumnLink.TableName, IColumnLink.ColumnName);
// Si la page et les noms du tableau et des colonnes ne sont pas null,
// cela signifie qu'il existe déjà des données liées.
// Placer la représentation sous forme de chaîne des noms de page, de table et
// de colonne dans la zone de saisie.
if( o != null )
FTextBox.Text = Convert.ToString(o);
95
1
Utilisation de fichiers XML avec des
RAD Studio pour .NET
1.6 Développement d'applications Web
else
// Sinon, effacer la zone de saisie et la lier avec
// ses propriétés à la colonne
spécifiée.
FTextBox.Text = "";
FTextBox.DataBind();
}
}
Voir aussi
Présentation des contrôles CodeGear DB Web (
1
see page 87)
Utilisation des interfaces WebDataLink (
see page 102)
Utilisation de l'expert Contrôle DB Web (
see page 208)
1.6.6 Utilisation de fichiers XML avec des contrôles DB Web
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Le composant DBWebDataSource vous permet de créer et d'utiliser des fichiers XML et XSD en tant que source de données
pour une application ASP.NET. En général, vous utilisez seulement ces types de fichiers avec les contrôles DBWeb pour
prototyper votre application. En utilisant les fichiers XML comme source de données, vous pouvez éliminer des ressources de
base de données potentiellement coûteuses pendant la phase de conception et de développement de votre projet.
Cette rubrique traite les points suivants :
• Les fichiers XML comme sources de données.
• Stratégie de charge de travail suggérée.
• Problèmes d'authentification et de mise en mémoire cache.
Les fichiers XML comme sources de données
XML est devenu une autre source de données standard pour de nombreuses applications, mais en particulier pour les
applications ASP.NET. Lors de l'utilisation de données ne nécessitant pas de sécurité renforcée et pouvant donc être envoyées
via HTTP sous forme textuelle, les fichiers XML offrent une solution simple. Comme ces fichiers sont des fichiers texte, ils sont
faciles à lire. Comme les balises XML décrivent les données, vous pouvez comprendre et traiter les structures de données avec
peu de difficultés.
Malgré leurs avantages évidents sur des structures de données plus complexes, les fichiers XML possèdent certains
inconvénients. D'une part, ils ne sont pas sécurisés, et il n'est donc pas recommandé de transmettre sur Internet des données
sensibles, comme des numéros de carte de crédit ou des numéros d'identification personnelle (PIN), par le biais de fichiers XML.
Un autre inconvénient réside dans l'absence de contrôle de simultanéité d'accès sur les enregistrements XML, à l'inverse des
enregistrements de bases de données
Néanmoins, la nature auto-descriptrice et le format léger des données des fichiers XML font qu'il est naturel de choisir ces
fichiers comme sources de données pour des applications ASP.NET. Le contrôle DBWebDataSource, en particulier, a été
construit pour gérer les fichiers XML aussi bien que les autres types de sources de données. Il n'y a pas d'exigence particulière
pour l'utilisation de fichiers XML, pas de pilote ou de couche de communication spécifique en dehors de ceux fournis avec RAD
Studio. Vous trouverez donc qu'il est facile de travailler avec des fichiers XML comme sources de données.
Stratégie de charge de travail suggérée
Vous utilisez le contrôle DBWebDataSource pour créer le fichier XML pour votre application et pour connecter le fichier XML à
96
1.6 Développement d'applications Web
RAD Studio pour .NET
Utilisation des vues de données
un objet DataSet. La stratégie de charge de travail de base est la suivante :
• Construisez une application ASP.NET, avec une connexion à votre base de données cible. Utilisez les contrôles DBWeb,
notamment un DBWebDataSource, et spécifiez un fichier XML inexistant. Lorsque vous exécutez l'application, votre
ensemble de données reçoit l'ensemble des résultats de la base de données cible et le DBWebDataSource remplit ensuite le
fichier XML avec les données balisées représentant l'ensemble de données.
• A ce stade, vous pouvez éliminer l'adaptateur de données et la connexion aux données, en conservant uniquement un
ensemble de données, le DBWebDataSource et la référence au fichier XML. Vos contrôles DBWeb extrairont des données du
fichier XML et de l'ensemble de données au lieu de les extraire de la base de données. Pour plus d'informations, suivez les
liens menant aux procédures spécifiques sur la construction et l'utilisation des fichiers XML avec des contrôles DBWeb.
Problèmes d'authentification et de mise en mémoire cache
Les contrôles DB Web prennent en charge la lecture automatique d'un fichier XML par le composant DBWebDataSource au
moment de la conception aussi bien qu'au moment de l'exécution. Pour prendre en charge les fichiers XML, le composant
DBWebDataSource inclut les propriétés de mise en mémoire cache. Si vous utilisez la mise en mémoire cache XML, les
données du fichier XML sont automatiquement lues dans l'ensemble de données chaque fois qu'une source de données est
chargée.
Si vous n'implémentez pas d'authentification utilisateur dans votre application, vous utiliserez probablement cette fonctionnalité
uniquement pour le prototypage. Sinon, sans authentification utilisateur, les utilisateurs peuvent être confrontés à des erreurs de
permissions lors de tentatives d'accès simultanés à un même fichier XML. Lorsque plusieurs clients utilisent l'application, le
fichier XML est constamment réécrit par différents utilisateurs. La manière d'éviter cela consiste à écrire une logique dans votre
application serveur pour vérifier les mises à jour des lignes et avertir les différents clients en cas de conflit. Cela est similaire à
ce que fait un système de base de données lorsqu'il applique un verrouillage au niveau des tables ou des lignes. Lors de
l'utilisation d'un fichier texte, comme un fichier XML, ce niveau de contrôle est plus difficile à implémenter.
Toutefois, si vous implémentez une authentification utilisateur, vous pouvez créer une application réelle en définissant la
propriété UseUniqueFileName. Cette propriété spécifie que le contrôle DBWebDataSource créera uniquement des fichiers XML
nommés pour chaque client qui accède au fichier XML spécifié dans la propriété XMLFileName du DBWebDataSource. Cela
permet d'éviter les collisions de données dans une application multi-utilisateur. L'inconvénient de cette approche réside dans le
fait que chaque fichier XML contiendra différentes données et que votre application serveur aura besoin d'une logique intégrée
pour fusionner les données uniques à partir de chaque fichier XML client.
Les applications en lecture-écriture utilisant XMLFileName requièrent que tous les clients Web disposent d'un accès en écriture
sur tous les fichiers XML sur lesquels ils écrivent. Si le client Web ne dispose pas d'un accès en écriture, le client aura une
erreur de permissions lors de toute tentative de mise à jour du fichier XML. Vous devez accorder un accès en écriture à tous les
clients qui utiliseront l'application.
Voir aussi
Présentation des contrôles CodeGear DB Web (
Création d'un fichier XML DB Web (
see page 87)
see page 197)
Construction d'une application de porte-documents avec des contrôles DB Web (
see page 194)
1.6.7 Utilisation des vues de données
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Avec les composants DataViews, vous pouvez définir des filtres sur un DataTable en utilisant la propriété RowFilter ou placer
les données dans un ordre particulier. Le composant DataView se trouve sous la zone Composants de données de la palette
d'outils. Cette rubrique traite des sujets suivants :
97
1
Utilisation des vues de données
RAD Studio pour .NET
1.6 Développement d'applications Web
• Propriétés d'exécution
• Relations maître-détail
• ClearSessionChanges (méthode)
• Limitations des vues de données
Propriétés d'exécution
Au moment de la conception, lorsqu'un contrôle DBWeb pointe sur un DataView, le contrôle est automatiquement mis à jour dès
qu'une modification est apportée à n'importe quelle propriété DataView contrôlant les lignes à afficher. Pour modifier les
propriétés DataView à l'exécution, assurez-vous que les modifications sont en place avant la restitution d'un des contrôles DB
Web.
Par exemple, si vous utilisez une boîte liste pour définir le filtre, vous devez également :
1
• Affecter la valeur True à la propriété AutoPostback de la zone de liste.
• Ajouter du code dans l'événement Page_Load pour gérer les affectations de RowFilter.
• Ajouter du code dans l'événement Page_Load pour appeler la méthode ClearSessionChanges après la modification de
RowFilter.
Supposons que vous ayez deux tables sur une fiche. Vous liez une boîte liste ASP.NET à une table contenant des valeurs de
référence. Ces valeurs servent de filtre à la deuxième table, dont les valeurs sont affichées dans un DBWebGrid. Définissez
la propriété AutoPostback dans la zone de liste sur la valeur True, gérez le paramètre RowFilter dans Page_Load et appelez
ClearSessionChanges après la modification de RowFilter.
Conseil: Si vous définissez la propriété AutoRefresh sur la valeur False (la valeur par défaut), vous pourrez utiliser des
données en cache. Examinez la démo WorldTravel dans \Demos\DBWeb pour voir un exemple de la façon dont cela est
géré.
Relations maître-détail
Vous pouvez déclarer un DataView en tant que table maître d'une relation maître-détail en ajoutant un filtre de lignes. Configurez
une relation maître-détail avec plusieurs DataTables dans un DataSet unique, puis connectez le DataView au DataTable maître.
Lorsque le DBWebDataSource se connecte au DataView, les contrôles DB Web vous permettront de sélectionner la table
parent, qui est le DataView ou la table détail.
ClearSessionChanges (méthode)
La méthode ClearSessionChanges notifie le DBWebDataSource que le DataSet a été modifié et que les informations de
données modifiées, de ligne et de colonne existantes ne sont plus valides. Toutes les modifications en suspens sont retirées. Si
vous tentez d'appeler cette méthode à partir d'un événement clic du bouton DBWebNavigator, le bouton DBWebNavigator ne
fonctionnera pas.
Limitations des vues de données
Il existe des limitations avec le composant DataView :
• Les lignes insérées dans un DataView se comportent différemment des lignes insérées dans un DataTable.
• Un DataView ne permet pas plusieurs insertions d'enregistrements null. Cela signifie que vous devez ajouter des données à
une ligne insérée avant d'ajouter une nouvelle ligne insérée.
• Si une ligne insérée est supprimée, cette ligne est retirée du DataView et vous ne pouvez pas utiliser Annuler pour la
rappeler.
• Si une ligne insérée contient une valeur non null unique et que cette valeur est définie à null, la ligne peut être supprimée
dans certains cas et ne peut pas être rappelée.
• Les contrôles DBWeb n'offrent pas une prise en charge totale de la propriété DataViewSort. Si un champ de tri est rencontré,
les valeurs des champs contenus dans la propriété Sort ne peuvent pas être modifiées, et la touche d'insertion est désactivée
sur le DBWebNavigator.
98
1.6 Développement d'applications Web
RAD Studio pour .NET
Déploiement d'applications ASP.NET
Voir aussi
Fournisseurs de données pour .NET (
see page 27)
Conception d'une application ASP .NET (
see page 181)
1.6.8 Déploiement d'applications ASP.NET
Cette rubrique contient des informations sur les éléments suivants :
• Exigences des serveurs Web
1
• Recommandations sur le pré-déploiement
• Le gestionnaire du déploiement ASP.NET de RAD Studio
Pour des informations supplémentaires sur le déploiement, voir le fichier deploy.htm, situé par défaut à l'adresse
C:\Program Files\CodeGear\RAD Studio\5.0.
Exigences des serveurs Web
Avant de déployer votre application sur un serveur Web, prenez en compte les exigences suivantes des serveurs web :
• Internet Information Services (IIS) 6.0 doit être installé et opérationnel sur le serveur web.
• Le .NET Framework doit être installé sur le serveur web.
• ASP.NET doit être activé sur le serveur web.
• Le compte ASPNET sur le serveur web doit être configuré avec les permissions correctes.
Pour des informations sur l'installation d'IIS, voir la documentation qui accompagne votre système d'exploitation Windows. Pour
des informations sur la réalisation d'autres tâches listées ci-dessus, voir le lien vers les exigences de la plate-forme ASP.NET
à la fin de cette rubrique.
Recommandations sur le pré-déploiement
Avant de déployer votre application, vous devez désactiver le débogage et reconstruire l'application pour la rendre plus
compacte et plus efficace :
• Pour une application Delphi ASP.NET ou C#, mettez à jour le fichier web.config de l'application pour désactiver le
débogage. Pour plus d'informations, voir le lien concernant l'utilisation du gestionnaire de déploiement à la fin de cette
rubrique.
• Pour une application C#, choisissez Projet Options et modifiez le jeu d'options Déboguer/Release en Release et
recompilez l'application.
Le gestionnaire du déploiement ASP.NET de RAD Studio
Bien qu'il soit possible d'utiliser l'outil en ligne de commande XCOPY pour copier tous les répertoires de votre projet sur un
serveur web, seul un sous-ensemble de ces fichiers est vraiment nécessaire au déploiement. Par exemple, les fichiers .aspx,
.config et .dll sont nécessaires, alors que les fichiers propres à Delphi, tels que les fichiers .bdsproj, .dcuil et .pas ne
le sont pas.
RAD Studio inclut le gestionnaire de déploiement ASP.NET pour vous aider à déployer des applications ASP.NET. Vous pouvez
l'utiliser pour le déploiement sur un ordinateur distant en utilisant une connexion partagée ou FTP, ou sur votre ordinateur local.
Lorsque vous ajoutez un gestionnaire de déploiement à votre projet, un fichier XML (.bdsdeploy) est ajouté au répertoire du
projet et un onglet Déployer est ajouté à l'EDI. Vous fournissez les informations de destination et de connexion sur l'onglet
Déployer et vous modifiez éventuellement la liste des fichiers proposés pour la copie, puis le gestionnaire de déploiement copie
les fichiers vers la destination du déploiement.
99
Utilisation des interfaces WebDataLink
RAD Studio pour .NET
1.6 Développement d'applications Web
Voir aussi
Déploiement des applications .NET Framework (MSDN)
Exigences de la plate-forme ASP.NET (MSDN)
Présentation du déploiement des applications
Utilisation du gestionnaire de déploiement ASP.NET (
see page 208)
1.6.9 Utilisation des interfaces WebDataLink
1
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Les caractéristiques qui rendent les contrôles DB Web différents des contrôles web traditionnels résident dans le fait que les
contrôles DB Web gèrent automatiquement toutes les liaisons de données. Bien que vous deviez encore configurer les liens
entre les sources de données et les contrôles au moment de la conception, toutes les liaisons à l'exécution sont gérées, sans
qu'il soit nécessaire d'ajouter une commande de liaison de données dans votre code. Lors de l'extension d'un contrôle DBWeb à
l'aide de l'expert Contrôle DBWeb, vous implémenterez plusieurs interfaces offrant les fonctionnalités de liaison de données.
Ces interfaces sont présentées dans cette rubrique.
• IDBWebDataLink
• IDBWebColumnLink: IDBWebDataLink
• IDBWebLookupColumnLink: IDBWebColumnLink
IDBWebDataLink
Tous les contrôles DB Web implémentent cette interface. L'interface définit une source de données et une table de données,
vous permettant de vous connecter et d'accéder aux données à partir de plusieurs sources de données, y compris des bases de
données, des fichiers texte, des tableaux et des collections. Si votre contrôle doit uniquement accéder à des données de niveau
table, vous implémentez cette interface.
IDBWebColumnLink:IDBWebDataLink
Cette interface est implémentée par les contrôles de colonnes DBWeb, tels que DBWebImage,DBWebTextBox, et
DBWebCalendar, entre autres. Elle définit un nom de colonne auquel un contrôle de colonne est lié. Associée à l'interface
IDBWebDataLink, cette interface permet d'accéder à des données de tables et de colonnes standard.
IDBWebLookupColumnLink:IDBWebColumnLink
Cette interface est implémentée par les contrôles de référence DBWeb, comme DBWebListBox,DBWebRadioGroup, et
DBWebDropDownList. Elle définit un TableName dans un DataSet, un ColumnName représentant une table qui contient les
données à afficher dans les références, et la colonne contenant les valeurs qui, lorsqu'une valeur est sélectionnée, doivent être
placées dans le champ ColumnName lié au contrôle. Par défaut, le champ ColumnName est identique à DataTextField. Les
contrôles de références ne contiennent pas seulement une propriété texte, généralement l'élément affiché dans le contrôle,
comme une boîte liste, mais aussi une propriété de valeur. La propriété de valeur peut être identique à la propriété de texte, ou
elle peut contenir un élément de données totalement différent, comme un numéro d'identification. Par exemple, vous pouvez
choisir d'afficher des noms de produits dans une boîte liste ou une boîte de liste déroulante, mais définir les valeurs pour chaque
élément affiché avec leurs ID de produits respectifs. Lorsqu'un utilisateur sélectionne un nom de produit, l'ID du produit est
transmis à l'application, à la place du nom du produit lui-même. Un avantage de cette approche est l'élimination de la confusion
de traitement entre des produits ayant des noms similaires.
Voir aussi
Contrôles DBWeb (
100
see page 87)
1.6 Développement d'applications Web
RAD Studio pour .NET
Conception d'une application avec des contrôles DB Web (
Conception d'une application ASP .NET (
Utilisation des interfaces WebDataLink
see page 195)
see page 181)
1
101
Présentation des services Web ASP.NET
RAD Studio pour .NET
1.7 Développement de services Web avec
1.7 Développement de services Web avec
ASP.NET
1
Les services web constituent une entité programmable qui fournit un élément de fonctionnalité particulier, tel que la logique
d'une application. Grâce aux standards Internet, tels que XML et HTTP, les services web sont accessibles à un grand nombre de
systèmes potentiellement différents. Les applications conçues avec des services Web ASP.NET peuvent être des applications
autonomes ou des sous-composants d'applications web plus importantes, et elles peuvent proposer des composants application
à des systèmes distribués en utilisant des messages à base de XML. RAD Studio offre plusieurs méthodes pour vous aider à
concevoir, à déployer et à utiliser des applications avec des services Web ASP.NET. Pour des informations plus générales sur
les services Web, reportez-vous à la documentation du SDK .NET de Microsoft.
Rubriques
Nom
Description
Présentation des services Web ASP.NET (
Pile de protocole de services Web (
Gestion des services Web ASP.NET (
see page 104)
see page 107)
see page 109)
Les services Web sont une méthodologie d'intégration s'appuyant sur Internet qui
permet à des applications de se connecter et d'échanger des informations
indépendamment de la plate-forme ou du langage. Les services web sont
étroitement intégrés au modèle ASP.NET utilisé pour .NET Framework. A la
différence des applications natives Windows classiques, les applications de
services Web ASP.NET contiennent des objets et des méthodes qui sont
exposés au travers le Web en utilisant des piles de protocole de message
simple. N'importe quel client peut invoquer une application de services Web via
HTTP en utilisant une méthode Web (WebMethod). Comme toutes les
méthodes... suite ( see page 104)
Pour comprendre l'infrastructure des services Web, il est nécessaire d'avoir une
certaine connaissance de XML (Extensible Markup Language), de SOAP (Simple
Object Access Protocol), de WSDL (Web Services Description Language) et
d'UDDI (Universal Description, Discovery, and Integration). Puisque
l'infrastructure existe déjà, en tant que développeur de services web XML, vous
pouvez exploiter la technologie existante à l'aide de protocoles Web standard,
tels que XML et HTTP.
CodeGear propose un moyen simple pour créer, déployer et utiliser des services
web sans vous préoccuper des traitements dorsaux ; vous pouvez ainsi vous
concentrer davantage sur la conception de vos services.
Cette rubrique offre... suite ( see page 107)
Les services Web ASP.NET prennent en charge les VCL.NET Forms, les .NET
Windows Forms et les ASP.NET Web Forms. Ces fiches permettent de créer des
applications client qui accèdent aux applications de services Web. Utilisez
l'option Ajouter une référence Web pour ajouter l'application de services Web
ASP.NET voulue à l'application client. Avec le navigateur UDDI, vous pouvez
rechercher des applications de services Web que vous pourriez vouloir utiliser.
RAD Studio propose des outils simples pour développer et déployer des
applications de services Web ASP.NET. RAD Studio vous permet également
d'importer des documents WSDL décrivant des applications de services Web...
suite ( see page 109)
1.7.1 Présentation des services Web ASP.NET
Les services Web sont une méthodologie d'intégration s'appuyant sur Internet qui permet à des applications de se connecter et
d'échanger des informations indépendamment de la plate-forme ou du langage. Les services web sont étroitement intégrés au
modèle ASP.NET utilisé pour .NET Framework. A la différence des applications natives Windows classiques, les applications de
services Web ASP.NET contiennent des objets et des méthodes qui sont exposés au travers le Web en utilisant des piles de
protocole de message simple. N'importe quel client peut invoquer une application de services Web via HTTP en utilisant une
méthode Web (WebMethod). Comme toutes les méthodes accessibles par le biais d'une simple application Windows Form, une
102
1.7 Développement de services Web avec
RAD Studio pour .NET
Présentation des services Web ASP.NET
WebMethod offre certaines fonctionnalités définies. Toutefois, à la différence des autres types de méthodes, WebMethod est
accessible par le biais d'un navigateur web. Pour des informations plus générales sur les services Web, reportez-vous à la
documentation du SDK .NET Framework de Microsoft.
CodeGear propose des outils pour développer et accéder à des services Web ASP.NET de différentes façons. Comme les
objets modulaires, les services web peuvent être réutilisés sans codage supplémentaire.
Les rubriques suivantes présentent brièvement l'architecture des services Web ASP.NET, la communication des services Web
et les fichiers créés avec le développement de services Web ASP.NET.
Cette rubrique présente :
• L'architecture des services Web ASP.NET
• Les prérequis des services Web
1
• Les scénarios des services Web
• Les fichiers des services Web ASP.NET
L'architecture des services Web ASP.NET
Les principaux composants de l'architecture des services Web ASP.NET incluent une application client, une application de
services Web ASP.NET et plusieurs fichiers comme les fichiers de code dans le langage de développement, des fichiers .asmx
et des fichiers .dll compilés. Vous avez besoin d'un serveur Web pour héberger l'application de services Web ASP.NET et le
client. Vous pouvez aussi (mais ce n'est pas obligatoire) inclure un serveur de base de données dédié au stockage et à l'accès
aux données des services Web ASP.NET.
Les prérequis des services Web
Avant de commencer le développement d'une application de services Web, familiarisez-vous avec les concepts suivants :
• XML (Extensible Markup Language). XML est une description structurelle des données définie par l'utilisateur et lisible.
Toute donnée, tout ensemble de données ou tout document que vous souhaitez recevoir d'un service web ou qui lui est
destiné est formaté en XML.
• SOAP (Simple Object Access Protocol). SOAP est le protocole de messagerie standard qui est utilisé pour la
communication entre des services Web et leurs clients. SOAP se sert de XML pour formater ses messages, et il inclut les
paramètres ou les valeurs renvoyées nécessaires aux serveurs et aux clients.
• WSDL (Web Services Description Language). WSDL est le langage qui décrit un service Web. Un service Web peut être
défini dans un nombre illimité de langages d'implémentation. En tant qu'utilitaire unique, chaque service Web doit publier une
description de son interface qui permette aux clients d'interagir avec lui. Le document WSDL décrit au minimum les
paramètres qu'un client doit obligatoirement fournir et le résultat qu'un client peut s'attendre à recevoir. La description du
résultat inclut généralement le type de données renvoyé.
• UDDI (Universal Description, Discovery and Integration). UDDI est une initiative industrielle qui fournit un référentiel
standard dans lequel les professionnels peuvent publier des services Web utilisables par d'autres entreprises. Le référentiel
UDDI contient des liens et des descriptions de différents services web. Vous pouvez utiliser le navigateur UDDI dans l'EDI
pour localiser les services Web, télécharger des documents WSDL et accéder à des informations supplémentaires sur les
services Web et les entreprises qui les fournissent.
103
Présentation des services Web ASP.NET
RAD Studio pour .NET
1.7 Développement de services Web avec
Les scénarios des services Web
Les services web actuels sont des sources d'informations simples qu'il est possible d'incorporer aisément dans des applications,
comme les cours de la bourse, les prévisions météo ou les résultats sportifs. Parallèlement à la croissance de la demande
d'accès à la logique métier via Internet, les entreprises recherchent des moyens de fournir à leurs clients des applications
permettant d'analyser et de regrouper les informations. Par exemple, une institution financière peut fournir un service web pour
consolider et mettre continuellement à jour les informations financières client, comme un portefeuille d'actions, 401(k), un
compte bancaire et des prêts à afficher dans une feuille de calcul, un site web ou un PDA (personal digital assistant). Cela évite
au client d'avoir à collecter et combiner manuellement ses propres informations. Même si une grande partie de ces informations
est actuellement disponible sur Internet, un service web en simplifiera l'accès et le regroupement, tout en garantissant une plus
grande fiabilité.
1
Vous pouvez utiliser des services web pour des solutions dans les domaines suivants :
• EAI (Enterprise Application Integration). Un service web peut permettre à plusieurs partenaires professionnels d'échanger
des données de stock ou de commandes ou des données financières, par exemple, sans connaître spécifiquement la
disposition précise de stockage des données de chaque partenaire. Par exemple, de nombreux CRM (customer relationship
management) ou autres applications frontales stockent les données des clients dans un format qui n'est pas entièrement
compatible avec la manière dont un système ERP (enterprise resource planning) dorsal stocke ses informations financières
ou de stock. Toutefois, une entreprise de vente peut vouloir utiliser sa solution de CRM pour traiter des commandes en temps
réel avec des informations de stock mises à jour à partir du système ERP. Un service Web peut apporter une solution pour
gérer la transformation de requêtes CRM en stockage ERP et de réponses ERP en confirmations de CRM.
•
Intégration B2B (Business-to-Business). A l'image de la solution EAI (Intégration d'application d'entreprise), une solution
B2B peut tirer parti des capacités de services Web pour fournir des données en mémoire cache pour des commandes
importantes. A la différence des transactions B2C (entreprise-particulier), les transactions B2B sont souvent des transactions
de gros volume qu'il ne serait pas possible d'exécuter au niveau d'une transaction B2C. Par exemple, un particulier peut
commander une boîte de stylos depuis un magasin de fournitures de bureau en ligne, alors qu'une entreprise peut
commander mille boîtes par mois, avec plusieurs adresses de livraison. L'échelle et la complexité d'une transaction B2B
nécessitent l'intervention d'un service Web pour aider à simplifier et à traiter la transaction avec rapidité et cohérence.
• Intégration B2C (Business-to-consumer). Les services Web B2C gèrent généralement des transactions basées sur le
Web. Par exemple, un service web qui vous permet de rechercher des codes postaux évite aux entreprises d'avoir à créer un
nouveau programme chaque fois que le service est inclus sur un site web. Certains sites de commerce peuvent utiliser des
services Web pour faciliter la gestion des conversions de devises lors de commandes internationales.
• Mobiles (applications à client intelligent). Etant donné que le faible encombrement d'un client mobile requiert que
l'utilisation de la mémoire soit uniquement réservée aux fonctions système les plus importantes et étant donné que les clients
mobiles sont, par définition, reliés à Internet par leurs protocoles de communication sans fil, les services Web jouent un rôle
essentiel dans la mise à disposition d'applications légères mais puissantes sur les périphériques mobiles. Les services Web
permettent aux utilisateurs de périphériques mobiles d'effectuer différentes tâches qui nécessitent un peu plus de travail que
de la saisie de données sur le périphérique et un affichage des résultats. Tout le traitement peut être effectué sur un service
Web distant, en diminuant par conséquent les besoins en bande passante sur le périphérique mobile lui-même.
• Distribué et Poste à poste (P2P). Pour certain types d'applications distribuées et poste à poste, les services Web jouent un
rôle important. Si vous utilisez une informatique distribuée sur un réseau non contrôlé (tel qu'Internet) plutôt que sur un
réseau local ou un réseau d'entreprise, vous pouvez utiliser des services web. Les services web ne nécessitent pas de
maintenance d'état et offrent ainsi des performances potentiellement meilleures, en particulier lorsqu'un comportement
requête-réponse n'est pas absolument nécessaire. Pour les applications qui nécessitent un comportement requête-réponse
strict et une sécurité élevée, vous pouvez envisager l'utilisation d'un modèle plus ancien et plus contrôlé, tel que COM ou
.NET à distance.
Les fichiers des services Web ASP.NET
Certains fichiers sont générés automatiquement lors de la création d'applications avec des services Web ASP.NET. Ces fichiers
permettent aux services Web ASP.NET de proposer leurs services via un serveur Web. Le tableau suivant énumère les fichiers
et leurs descriptions :
104
1.7 Développement de services Web avec
RAD Studio pour .NET
Pile de protocole de services Web
Fichier
Description
.asmx
Lorsque vous créez une application de services Web ASP.NET, un fichier texte d'extension .asmx est généré
automatiquement. La directive de services Web nécessaire est placée au début de ce fichier pour faire le lien
entre l'adresse URL du service web et son implémentation. Dans le fichier .asmx, vous ajoutez la logique des
services Web aux méthodes visibles par l'application client. Le fichier .asmx agit comme URL de base pour les
clients qui appellent le service web XML. Ce fichier est compilé avec d'autres fichiers dans un assemblage pour le
déploiement.
Code
Quand vous créez une application de services Web ASP.NET, un fichier de code sous-jacent d'extension est
sous-jacent généré automatiquement avec une extension spécifique au langage. Vous ajoutez la logique de votre service
Web à la méthode publique pour traiter les demandes et réponses du service Web.
Fichiers
DLL
compilés
Les fichiers DLL des services Web fournissent des services dynamiques sur le serveur Web.
.wsdl
Ce fichier est généré lorsque vous cliquez sur l'option Ajouter une référence Web pour ajouter le service web à
votre application client. Il décrit l'interface des services Web disponibles pour le client.
.map
Ce fichier permet de rechercher un service web exposé sur un serveur donné. Il contient également des liens
vers d'autres ressources décrivant le service web.
1
Voir aussi
Pile de protocole de services Web (
see page 107)
Gestion des services Web ASP.NET (
see page 109)
Construction d'une application de services Web "Hello World" ASP.NET (
Accès à une application de services Web "Hello World" ASP.NET (
see page 219)
see page 215)
Présentation Microsoft des services Web
1.7.2 Pile de protocole de services Web
Pour comprendre l'infrastructure des services Web, il est nécessaire d'avoir une certaine connaissance de XML (Extensible
Markup Language), de SOAP (Simple Object Access Protocol), de WSDL (Web Services Description Language) et d'UDDI
(Universal Description, Discovery, and Integration). Puisque l'infrastructure existe déjà, en tant que développeur de services web
XML, vous pouvez exploiter la technologie existante à l'aide de protocoles Web standard, tels que XML et HTTP.
CodeGear propose un moyen simple pour créer, déployer et utiliser des services web sans vous préoccuper des traitements
dorsaux ; vous pouvez ainsi vous concentrer davantage sur la conception de vos services.
Cette rubrique offre l'arrière-plan conceptuel permettant de comprendre comment la pile de protocoles permet aux services Web
de fonctionner :
• Comment les services web accèdent aux services et les exposent via le Web
• Comment XML transmet des informations via les standards SOAP et HTTP
• Comment un client peut identifier une offre de services web
• Comment les services web sont trouvés et utilisés
Couches de la pile de protocoles de services Web
Les services web se composent d'ensembles de protocoles et de standards Internet permettant l'échange de données entre des
applications. La pile de protocoles de services Web décrit la disposition de l'ensemble des protocoles ou des règles Internet
utilisés pour concevoir, découvrir et implémenter des services web.
105
Pile de protocole de services Web
RAD Studio pour .NET
1.7 Développement de services Web avec
Les principaux composants ou couches d'une pile de protocoles de services Web incluent :
1
• Couche transport— assure la transmission des messages entre les applications
• Couche de messagerie XML— encode les messages en langage XML pour qu'ils puissent être compris par le client et le
serveur
• Couche WSDL— décrit le service fourni
• Couche UDDI— centralise les services au moyen d'un registre commun
Couche de transport
La couche de transport est le premier composant de la pile. Elle est responsable de la transmission des messages XML entre
les applications. Le protocole de transport le plus couramment utilisé est le protocole http. On trouve aussi les protocoles SMTP
et FTP.
Messages XML
La couche de messagerie de la pile de protocoles est basée sur un modèle XML. XML est largement employé dans les
applications de services web : il est à la base de tous les services web. XML est simplement l'un des standards permettant aux
services web d'associer différents domaines technologiques. Vous trouverez sur Internet de nombreuses ressources de
description des messages XML. Pour plus d'informations, reportez-vous au site World Wide Web Consortium (W3C) relatif au
système de messagerie répertorié dans la liste de liens ci-dessous.
La spécification des messages XML permet de définir un grand nombre de protocoles plus spécifiques. SOAP est l'un des
standards les plus populaires, et l'un des plus importants pour la communication des services web sur le réseau. XML permet de
communiquer sur le Web en utilisant un document XML pour les demandes et les réponses aux informations entre deux
systèmes hétérogènes. SOAP permet à l'expéditeur et au destinataire des documents XML de prendre en charge un protocole
de transfert de données commun pour des communications réseau efficaces. Vous trouverez sur Internet de nombreuses
ressources de description du protocole SOAP. Pour plus d'informations, reportez-vous au site W3C du protocole SOAP
répertorié dans la liste de liens ci-dessous.
Couche WSDL
Cette couche représente un moyen de spécifier une interface publique pour un service web. Elle contient des informations sur
les fonctions disponibles, sur les types de données pour les messages XML, des informations de liaison sur le protocole de
transport utilisé et l'emplacement d'un service web donné.
Toutes les applications client qui recherchent des informations sur un service utilisent le langage WSDL ; elles peuvent ainsi
savoir quelles données ce service peut recevoir, s'il renvoie ou non des résultats et le protocole de transport géré. Quand vous
créez un service Web, il doit être décrit et rendu public auprès de ses clients potentiels avant de pouvoir être utilisé. WSDL
établit un format commun de description et de publication des informations sur un service web. Généralement WSDL est utilisé
avec SOAP, et la spécification WSDL contient une liaison avec SOAP.
Utilisez l'option CodeGear Ajouter une référence Web pour obtenir un document WSDL pour votre service web. Le document
WSDL, appelé aussi fichier proxy, est copié dans le client et utilisé pour appeler le serveur. Ce fichier proxy s'appelle
References.*, où l'extension du nom du fichier reflète le type de langage. Pour plus d'informations, reportez-vous au site
106
1.7 Développement de services Web avec
RAD Studio pour .NET
Gestion des services Web ASP.NET
WSDL W3C répertorié dans la liste de liens ci-dessous.
Couche UDDI
Cette couche offre un moyen pour publier et rechercher des services web sur le Web. Vous pouvez imaginer cette couche
comme les pages Blanches et Jaunes de votre annuaire. Les pages blanches des services web offrent des informations
générales sur une société donnée, par exemple son nom commercial, sa description et son adresse. Les pages Jaunes
proposent la classification des données selon les services proposés, par exemple le type d'industrie et de produits.
Le protocole que vous utilisez pour publier vos services s'appelle UDDI. Le registre de métiers UDDI permet à tout le monde de
rechercher les données UDDI disponibles et vous permet de recenser votre société et ses services. Avec RAD Studio, vos
données sont automatiquement publiées dans le registre, ou dans un annuaire distribué de services métier et web.
Voir aussi
Présentation des services Web ASP.NET (
Gestion des services Web ASP.NET (
1
see page 104)
see page 109)
Construction d'une application de services Web "Hello World" ASP.NET (
Accès à une application de services Web "Hello World" ASP.NET (
see page 219)
see page 215)
SOAP
Messages XML
WSDL
1.7.3 Gestion des services Web ASP.NET
Les services Web ASP.NET prennent en charge les VCL.NET Forms, les .NET Windows Forms et les ASP.NET Web Forms.
Ces fiches permettent de créer des applications client qui accèdent aux applications de services Web. Utilisez l'option Ajouter
une référence Web pour ajouter l'application de services Web ASP.NET voulue à l'application client. Avec le navigateur UDDI,
vous pouvez rechercher des applications de services Web que vous pourriez vouloir utiliser.
RAD Studio propose des outils simples pour développer et déployer des applications de services Web ASP.NET. RAD Studio
vous permet également d'importer des documents WSDL décrivant des applications de services Web particulières et exposant
leur fonctionnalité à l'application client. Vous pouvez utiliser l'exemple de méthode Web proposé par RAD Studio, qui vous
permet de créer et d'accéder à une application de services Web ASP.NET.
Cette rubrique comprend :
• Gestion client des services Web ASP.NET
• Gestion serveur des services Web ASP.NET
• Espaces de nommage des services Web ASP.NET
Gestion client des services Web ASP.NET
Vous pouvez créer une application de services Web qui ne sera qu'un simple fournisseur, ou une application serveur. Cette
application réside sur un serveur Web et est accessible à n'importe quel client qui comprend son architecture. Pour exploiter
vous-même une application de services Web, vous devez créer une application client. RAD Studio offre différents outils de
conception d'applications client :
• Windows Forms
• Web Forms
• Références Web
107
Gestion des services Web ASP.NET
RAD Studio pour .NET
1.7 Développement de services Web avec
Windows Forms et Web Forms ASP.NET
Pour déterminer le meilleur type de fiche à utiliser pour votre application client (fiche Windows ou fiche Web ASP.NET), prenez
en compte le type de service auquel vous souhaitez accéder. Dans la plupart des cas, le service que vous choisissez détermine
le type d'application que vous devez créer.
1
Si vous devez fournir une application capable de traiter des contenus complexes sur une station de travail client, ou capable
d'utiliser une application de services web comme base d'une application client riche sur une connexion réseau sécurisée,
envisagez la construction d'une application Windows Forms. Si vous devez fournir une application client simple qui effectue des
manipulations de données simples ou répond à un besoin unique, utilisez les fiches Web ASP.NET. Les fiches Web sont des
interfaces indépendantes de la plate-forme affichées dans un navigateur Web et qui invoquent des applications de services Web
via un protocole simple comme HTTP.
Vous pouvez aussi créer une application de services Web ASP.NET sous la forme d'une application console accessible via une
fenêtre de console ou par une autre application de services Web, même sans aucun client.
Ajout de référence Web
Vous pouvez ajouter une référence Web à votre application client pour accéder à des services web. Une référence Web se
rapporte à un document WSDL ou un schéma XML importé dans votre application client. Le document WSDL ou le schéma XML
décrit un service web. Lorsque vous importez l'un de ces documents, RAD Studio génère toutes les définitions d'interfaces et de
classes nécessaires à l'appel de ce service web. Cliquez avec le bouton droit dans le dossier WebService dans le gestionnaire
de projet et choisissez Ajouter une référence Web. Un navigateur UDDI apparaît. Pour ajouter le service web à votre
application client, vous devez utiliser le navigateur et rechercher le service web dans le document WSDL.
Gestion serveur des services Web ASP.NET
L'application de services Web ASP.NET que vous construisez dans RAD Studio offre un accès par programme à la logique
d'application d'un ou plusieurs services web. Vous définissez les services que vous souhaitez exposer, la manière d'utiliser ces
services et l'infrastructure qui reçoit et traite les requêtes et les réponses.
Lorsque vous créez une nouvelle application de services Web ASP.NET, la boîte de dialogue Nouvelle application ASP.NET
vous permet de spécifier le nom et l'emplacement de l'application de services Web ASP.NET, et crée automatiquement les
fichiers nécessaires au déploiement. Lorsque vous spécifiez les paramètres de l'application, RAD Studio génère le fichier .asmx
qui joue le rôle d'URL de base pour les clients appelant l'application de services Web ASP.NET.
Espaces de nommage des services Web ASP.NET
Pour plus d'informations sur les espaces de nommage System.Web.Services, voir le Kit de développement Microsoft .NET
Framework SDK.
Voir aussi
Présentation des services Web ASP.NET (
Pile de protocole de services Web (
see page 104)
see page 107)
Construction d'une application de services Web "Hello World" ASP.NET (
Accès à une application de service Web "Hello World" ASP.NET (
108
see page 219)
see page 215)
2
RAD Studio pour .NET
2 Procédures
Cette section présente les procédures relatives aux diverses zones de développement de RAD Studio.
Rubriques
Nom
Description
Procédures de bases de données (
see page 112)
Procédures d'applications interopérables (
see page 148)
Cette section propose des informations relatives au développement
d'applications de bases de données.
Cette section propose des informations relatives à la construction d'applications
interopérables.
Procédures de modélisation (
see page 150)
Cette section propose des informations relatives à la modélisation des
applications.
Procédures VCL pour .NET (
see page 155)
Cette section propose des informations relatives au développement
d'applications VCL pour .NET.
Procédures ASP.NET (
see page 178)
Procédures de services Web (
see page 215)
Cette section propose des informations relatives au développement
d'applications ASP.NET Web Forms.
Cette section propose des informations relatives au développement et à
l'utilisation de services web.
2
109
RAD Studio pour .NET
2.1 Procédures de bases de données
2.1 Procédures de bases de données
Cette section propose des informations relatives au développement d'applications de bases de données.
Rubriques
Nom
Description
Ajout d'une nouvelle connexion à l'explorateur de données (
see page 114)
Ajout d'un dialogue Erreur de conciliation BDP à votre application BDP (
page 114)
Exploration d'une base de données dans l'explorateur de données (
116)
Connexion à AdoDbx Client (
see
see page
see page 117)
Vous pouvez modifier vos applications BDP pour appeler le dialogue Erreur de
conciliation BDP afin de gérer les exceptions de mise à jour (qui se produisent
parfois lorsque deux personnes tentent simultanément de mettre à jour la même
ligne de la même table de la base de données).
Une fois que vous disposez d'une connexion dynamique, vous pouvez utiliser
l'explorateur de données pour explorer les objets base de données.
Vous pouvez établir une connexion de base de données à l'aide de AdoDbx
Client de plusieurs façons :
Création de projets de base de données dans l'explorateur de données (
page 118)
Création de mappages de tables (
Vous pouvez ajouter de nouvelles connexions à l'explorateur de données, qui
persistent tant qu'existe l'objet connexion.
see
see page 119)
Vous pouvez faire glisser et déposer des données de l'explorateur de données
vers des fiches Windows ou des fiches Web, et des fichiers Global.asax, ce qui
permet de remplir des ensembles de données et de construire rapidement un
projet de base de données. Ceci vous permet d'insérer automatiquement des
composants de base de données dans votre projet et vous évite de définir une
chaîne de connexion pouvant induire des erreurs en cas de saisie manuelle.
En utilisant la propriété TableMappings, vous pouvez mapper des colonnes entre
une source de données et un ensemble de données en mémoire. Cela vous
permet d'utiliser des noms différents, souvent plus descriptifs, pour les colonnes
de votre ensemble de données. Vous pouvez également mapper une colonne
d'une table de base de données avec une colonne de l'ensemble de données
différente de celle sélectionnée par défaut. La propriété TableMappings vous
permet également de créer un ensemble de données qui contient plus ou moins
de colonnes que celui récupéré du schéma de la base de données.
Exécution SQL dans l'explorateur de données (
see page 120)
Vous pouvez écrire, modifier et exécuter du code SQL dans une fenêtre SQL,
disponible à partir de l'explorateur de données.
Gestion des erreurs dans le mappage de table (
see page 121)
Quel que soit le type de fonction de comparaison que vous effectuez entre une
source de données et une représentation des données en mémoire, des erreurs
sont possibles. Les erreurs peuvent survenir lorsqu'une source de données et
son ensemble de données correspondant n'ont pas les mêmes nombres de
colonnes ou lorsque les types de colonnes d'une source de données ne
correspondent pas aux types de colonnes de l'ensemble de données. En outre,
d'autres erreurs internes peuvent survenir pour lesquelles il n'existe aucune
solution de remplacement de niveau conception. Vous pouvez utiliser les
propriétés MissingMappingAction et MissingSchemaAction pour répondre aux
erreurs... suite ( see page 121)
Migration de données entre des bases de données (
see page 122)
2
Modification des connexions dans l'explorateur de données (
Modification des connexions de bases de données (
110
see page 123)
see page 124)
L'explorateur de données facilite la migration de données d'une base de données
à une autre, voire entre fournisseurs. L'explorateur de données permet de copier
rapidement une table d'une base de données et de la coller dans une autre base
de données. La migration concerne la structure et les données des tables.
La migration de données est prise en charge par la classe BdpCopyTable,
disponible en tant que composant lors de la conception dans la palette d'outils.
Ce composant peut être utilisé dans un programme de migration de données.
Remarque: La classe BdpCopyTable ne copie pas de clés étrangères ou... suite
( see page 122)
Vous pouvez modifier les connexions de nombreuses façons à partir de
l'explorateur de données.
Les éléments de base d'une chaîne de connexion ont tendance à être les mêmes
d'un type de base de données à un autre. Toutefois, chaque type de base de
données prend en charge une syntaxe de chaîne de connexion légèrement
différente. Cette rubrique aborde ces différences.
2.1 Procédures de bases de données
RAD Studio pour .NET
Construction d'une application de base de données résolvant plusieurs tables (
see page 130)
RAD Studio prend en charge la résolution multi-table avec BDP.NET. En
particulier, les composants DataSync et DataHub sont conçus pour fournir et
résoudre un ensemble de données .NET émanant de plusieurs sources de
données hétérogènes. De plus, ces composants supportent l'affichage de
données dynamiques lors de la conception, fournissent et résolvent des données
maître-détail en générant du code SQL optimal pour la résolution de sources de
données BDP.
Le DataHub agit en tant que conduite entre un DataSet et un DataSync. La
propriété DataPort d'un DataHub peut être réglée sur n'importe quelle
implémentation IDataProvider. DataSync implémente IDataProvider et possède
une... suite ( see page 130)
Passage de paramètres dans une application de base de données (
132)
Les procédures suivantes décrivent une application simple qui vous permet de
passer la valeur d'un paramètre à un ensemble de données au moment de
l'exécution. Les paramètres vous permettent de créer des applications au
moment de la conception sans connaître exactement les données que
l'utilisateur saisira au moment de l'exécution. Cet exemple suppose que vous
avez déjà configuré et connecté votre base de données exemple Interbase
Employee. Pour l'illustration, cet exemple utilise le connecteur par défaut
IBConn1, qui est défini à un emplacement standard. L'emplacement de votre
base de données peut être différent.
Utilisation de la prévisualisation d'adaptateur de données (
Utilisation de l'éditeur de texte de commande (
Utilisation des ensembles de données standard (
Utilisation d'ensembles de données typés (
see page 134)
see page 135)
Utilisation du concepteur adaptateur de données (
Utilisation du concepteur éditeur de connexion (
see page
see page 136)
see page 136)
see page 137)
see page 141)
Connexion à une base de données à l'aide du framework de pilote dbExpress (
see page 143)
CodeGear RAD Studio fournit un outil qui permet à une source de données et à
un ensemble de données de communiquer. Vous pouvez utiliser la
prévisualisation de l'adaptateur de données pour spécifier les données à
déplacer vers et depuis l'ensemble de données sous forme d'instructions SQL ou
de procédures stockées appelées pour une opération de lecture ou d'écriture
d'une base de données.
Pour pouvoir créer un ensemble de données, BdpDataAdapter doit avoir au
moins une instruction SQL Select définie pour la propriété CommandText. Une
fois construite, cette instruction apparaît comme la propriété CommandText de
l'objet BdpCommand du BdpDataAdapter. Vous pouvez entrer cette instruction
Select manuellement ou, à l'aide de l'éditeur de texte de commande, construire
l'instruction, ainsi que les instructions Update, Insert et Delete, en utilisant une
simple opération de pointer-cliquer. Ainsi, une fois que vous êtes connecté à une
source de données dynamiques, vous pouvez voir le nom des tables et colonnes
de l'éditeur de texte de commande. Vous... suite ( see page 135)
L'adaptateur de données contient, au minimum, une instruction SQL Select de la
propriété de commande SELECT. Vous pouvez entrer cette instruction
vous-même ou, à l'aide du concepteur d'adaptateur de données, construire
l'instruction Select, ainsi que les instructions Update, Insert et Delete. L'objet
BdpCommandBuilder construit les instructions Update, Insert et Delete en
fonction des tables et colonnes que vous avez sélectionnées. Le concepteur
d'adaptateur de données utilise une connexion dynamique pour extraire les
métadonnées à partir desquelles vous pouvez construire les instructions SQL
permettant de manipuler les données à déplacer d'un ensemble de données vers
votre base de données.
Chaque objet connexion peut prendre en charge plusieurs connexions
nommées. Ces connexions peuvent représenter des connexions vers plusieurs
bases de données et types de base de données.
L'ensemble de données standard fournit une représentation en mémoire d'une
ou plusieurs tables ou vues extraites d'une source de données connectée. A
cause du codage avec indirection de la structure sous-jacente des données,
vous ne pouvez voir que les noms de colonnes de votre source de données
pendant l'exécution. Quand vous générez un ensemble de données, cela extrait
tout ce que vous avez spécifié dans votre instruction SELECT dans la boîte de
dialogue Configuration de l'adaptateur de données. Vous pouvez limiter vos
colonnes en changeant l'instruction SELECT et en créant un nouvel ensemble de
données.
Les ensembles de données typés offrent certains avantages sur les ensembles
de données standard. D'une part, ils sont dérivés d'une hiérarchie XML de la
table de base de données cible. Le fichier XML contenant la description de
l'ensemble de données permet au système de fournir des possibilités étendues
d'achèvement du code non disponibles lorsqu'on utilise des ensembles de
données standard. Le fait de typer fortement les méthodes, propriétés et
événements de l'ensemble de données permet des vérifications de type au
moment de la compilation et peut apporter une amélioration des performances
dans certaines applications.
Cette procédure vous indique comment utiliser le framework de pilote dbExpress
pour établir la connexion à une base de données et lire ses enregistrements.
Dans le code exemple, les fichiers ini dbExpress contiennent toutes les
informations relatives à la connexion de base de données particulière, telles que
le pilote, le nom d'utilisateur, le mot de passe, etc.
111
2
Ajout d'un dialogue Erreur de conciliation
RAD Studio pour .NET
Construction d'une application de base de données distribuée (
see page 144)
2.1 Procédures de bases de données
La gestion distante de données est fondamentale dans le cadre du
développement d'applications de bases de données distribuées. La technologie
distante .NET offre un framework souple et extensible pour les communications
inter-processus. La gestion distante .NET permet d'interagir avec des objets
situés dans des domaines d'applications différents, dans des processus
différents exécutés sur la même machine ou sur des machines différentes d'un
même réseau.
A l'aide des composants RemoteServer et RemoteConnection, vous pouvez
aisément migrer une application client/serveur utilisant des composants DataHub
et DataSync vers une application distante d'ensemble de données multi-niveau.
RemoteServer implémente IDataService et se présente en tant... suite ( see
page 144)
2.1.1 Ajout d'une nouvelle connexion à l'explorateur de
données
Vous pouvez ajouter de nouvelles connexions à l'explorateur de données, qui persistent tant qu'existe l'objet connexion.
Pour ajouter une nouvelle connexion
1. Choisissez Voir Explorateur de données. Cette opération affiche l'explorateur de données.
2. Sélectionnez un fournisseur dans la liste arborescente.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
4. Choisissez Ajouter une nouvelle connexion. Cette opération affiche la boîte de dialogue Ajout d'une nouvelle connexion.
5. Entrez le nom de la nouvelle connexion.
6. Cliquez sur OK.
Conseil: Si vous devez modifier les paramètres de votre nouvelle connexion, cliquez avec le bouton droit sur la nouvelle
connexion et sélectionnez l'option de modification d'une connexion
. Une boîte de dialogue Editeur de connexion apparaît. Entrez vos paramètres de connexion et cliquez sur OK.
Voir aussi
Concepteurs de composants BDP.NET (
Exploration d'une base de données (
see page 22)
see page 116)
Exécution SQL dans l'explorateur de données (
Modification des connexions (
see page 120)
see page 123)
2
2.1.2 Ajout d'un dialogue Erreur de conciliation BDP à votre
application BDP
Vous pouvez modifier vos applications BDP pour appeler le dialogue Erreur de conciliation BDP afin de gérer les exceptions de
mise à jour (qui se produisent parfois lorsque deux personnes tentent simultanément de mettre à jour la même ligne de la même
table de la base de données).
Pour ajouter un dialogue Erreur de conciliation BDP :
1. Ajoutez un composant BDPDataAdapter à votre WinForm existante.
112
2.1 Procédures de bases de données
RAD Studio pour .NET
Ajout d'un dialogue Erreur de conciliation
2. Choisissez l'onglet Evénements dans la fenêtre de l'inspecteur d'objets.
3. Double-cliquez sur la section contenu de la liste déroulante vide située à côté de l'événement OnUpdateError. Cela va remplir
le premier niveau de la liste déroulante. Cela va également créer le code de la définition et de l'implémentation de la méthode
BdpDataAdapter.
4. Ajoutez les lignes qui sont en gras ci-dessous à l'implémentation de la méthode pour gérer l'événement (l'exemple utilise le
langage C#) :
private void bdpDataAdapter1_OnUpdateError(object sender,
Borland.Data.Common.BdpUpdateErrorEventArgs e)
{
Borland.Data.Common.ReconcileErrorForm f = new
Borland.Data.Provider.ReconcileErrorForm( e );
f.ShowDialog();
}
5. Enregistrez les modifications apportées à votre WinForm.
Le dialogue Erreur de conciliation BDP apparaîtra désormais chaque fois qu'un utilisateur essayera de modifier les données
d'une ligne d'une base de données sur laquelle travaille un autre utilisateur. Le dialogue fonctionne comme suit. A chaque
mise à jour d'une ligne d'une table
Votre nouvelle fiche Erreur de conciliation affichera quatre colonnes dans la partie supérieure de la fenêtre et six boutons radio
dans la partie inférieure. Le tableau suivant décrit chacune des colonnes.
Libellé de colonne
Signification
Nom de colonne
Le nom des colonnes de la table dans lesquelles une erreur s'est produite.
Ligne en cours
Le contenu de la ligne qui se trouve alors en conflit.
Ligne d'origine
Ce que contenait la ligne avant la saisie des données conflictuelles.
Ligne serveur
La dernière mise à jour ayant été enregistrée sur le serveur. (Cela représente ce que la ligne contient
sur le serveur.)
Les trois boutons radio de la partie inférieure gauche de la fenêtre vous permettent d'indiquer comment continuer le traitement
après la gestion de l'erreur. Vous ne pouvez choisir qu'une des trois possibilités suivantes :
Libellé du bouton radio
Signification
Réessayer la mise à jour L'erreur sera effacée et la mise à jour retentée avec la clé primaire. Si la ligne de données du
avec la clé primaire
serveur ne peut être trouvée, cette option sera désactivée.
Ignorer la ligne en cours Choisissez cette option lorsque vous avez décidé de ne pas tenter de mettre à jour les
et continuer
modifications pour la ligne en cours mais que vous voulez tenter de mettre à jour le reste des
lignes.
Abandonner les mises à Les dernières mises à jour ne seront pas appliquées et l'erreur sera effacée, mais plus aucune
jour
mise à jour ne sera tentée.
Les trois boutons radio de la partie inférieure droite de la fenêtre vous permettent d'indiquer quelles données écrire dans la base
de données. Vous ne pouvez choisir qu'une des trois possibilités suivantes :
Libellé du bouton radio
Signification
Utiliser les valeurs d'origine
Place les données de la colonne Ligne d'origine (décrite précédemment) dans la ligne où le
conflit s'est produit.
Utiliser
serveur
les
valeurs
du Place les données de la colonne Ligne serveur (décrite précédemment) dans la ligne où le
conflit s'est produit.
Utiliser les valeurs en cours
Place les données de la colonne Ligne en cours (décrite précédemment) dans la ligne où le
conflit s'est produit.
113
2
Exploration d'une base de données dans
RAD Studio pour .NET
2.1 Procédures de bases de données
Voir aussi
Concepteurs de composants ADO.NET (
Exploration d'une base de données (
see page 22)
see page 116)
Exécution SQL dans l'explorateur de données (
Modification des connexions (
see page 120)
see page 123)
2.1.3 Exploration d'une base de données dans l'explorateur
de données
Une fois que vous disposez d'une connexion dynamique, vous pouvez utiliser l'explorateur de données pour explorer les objets
base de données.
Pour explorer les objets base de données
1. Choisissez Voir Explorateur de données.
2. Développez un noeud de fournisseur pour afficher la liste des connexions disponibles.
3. Développez un noeud de connexion pour afficher la liste des objets de bases de données (tables, vues et procédures).
Remarque: Si vous obtenez une erreur du fait que votre connexion n'est pas dynamique, vous devez actualiser votre
fournisseur et/ou modifier la connexion.
Pour extraire des données de la base de données
1. Développez une connexion dans l'explorateur de données.
2. Double-cliquez sur le nom de la table ou de la vue dont vous souhaitez extraire des données. Cette opération renvoie un
ensemble de résultats dans une page d'explorateur de données à onglets dans l'éditeur de code.
Conseil: Vous pouvez également sélectionner une table dans l'explorateur de données
et cliquer avec le bouton droit pour afficher un menu contextuel contenant la commande Extraire les données de la table.
Pour exécuter une procédure stockée
1. Choisissez Voir Explorateur de données.
2. Développez une connexion dans l'explorateur de données et recherchez une procédure stockée.
2
3. Double-cliquez sur la procédure stockée pour afficher ses paramètres. Les paramètres apparaissent dans une page séparée
sur la surface de conception.
4. Modifiez les paramètres d'entrée selon nécessité.
5. Cliquez sur le bouton Exécuter dans l'angle supérieur gauche de la page pour exécuter la procédure. L'ensemble de résultats
s'affiche dans une grille de données.
Conseil: Vous pouvez également sélectionner une procédure dans l'explorateur de données
et cliquer avec le bouton droit pour afficher un menu contextuel contenant la commande Exécuter.
Voir aussi
Concepteurs de composants ADO.NET (
Ajout d'une nouvelle connexion (
114
see page 22)
see page 114)
2.1 Procédures de bases de données
Exécution SQL dans l'explorateur de données (
Modification des connexions (
RAD Studio pour .NET
Connexion à AdoDbx Client
see page 120)
see page 123)
2.1.4 Connexion à AdoDbx Client
Vous pouvez établir une connexion de base de données à l'aide de AdoDbx Client de plusieurs façons :
Pour effectuer une connexion à l'aide du fichier dbxconnections.ini
1. La propriété ConnectionName référencée dans l'exemple de code est le nom d'une connexion dans le fichier
dbxconnections.ini.
2. Utilisez le code Delphi suivant pour établir la connexion :
uses System.Data.Common
...
var
Factory: System.Data.Common.DbProviderFactory;
Connection: System.Data.Common.DbConnection;
begin
Factory := System.Data.Common.DbProviderFactories.GetFactory('Borland.Data.AdoDbxClient');
Connection := Factory.CreateConnection();
Connection.ConnectionString := 'ConnectionName=IBConnection';
Connection.Open;
end
Pour effectuer une connexion à l'aide d'un fichier System.Configuration
1. Pour que la connexion fonctionne, les paramètres de propriété des fichiers dbxconnections.ini et dbxdriver.ini relatifs à la
base de données en cours de connexion doivent migrer vers le fichier machine.config. Voici un exemple de texte de chaîne
de connexion à ajouter dans la section <connectionStrings> de machine.config :
<add name="IBConnection"
connectionString="ConnectionName=IBCONNECTION;
drivername=Interbase;
database=workerbee:C:\Borland\Interbase\examples\database\employee.gdb;
rolename=RoleName;
user_name=user;
password=password;
sqldialect=3;localecode=0000;blobsize=-1;
commitretain=False;waitonlocks=True;interbase transisolation=ReadCommited;
trim char=False" providerName="Borland.Data.AdoDbxClient"/>
2. Utilisez le code Delphi suivant pour établir la connexion :
var
Factory: System.Data.Common.DbProviderFactory;
Connection: System.Data.Common.DbConnection;
Config: System.Configuration.Configuration;
ConnectSection: System.Configuration.ConnectionStringsSection;
CurrentSettings: System.Configuration.ConnectionStringSettings;
begin
Factory:= System.Data.Common.DbProviderFactories.GetFactory('Borland.Data.AdoDbxClient');
Connection:= Factory.CreateConnection();
Config:=
System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectSection:= Config.ConnectionStrings;
CurrentSettings:= ConnectSection.ConnectionStrings['IBConnection'];
Connection.ConnectionString:= CurrentSettings.ConnectionString;
Connection.Open;
end;
2
115
Création de mappages de tables
RAD Studio pour .NET
2.1 Procédures de bases de données
Voir aussi
Présentation du client AdoDbx (
see page 6)
Déploiement du client AdoDbx
2.1.5 Création de projets de base de données dans
l'explorateur de données
Vous pouvez faire glisser et déposer des données de l'explorateur de données vers des fiches Windows ou des fiches Web, et
des fichiers Global.asax, ce qui permet de remplir des ensembles de données et de construire rapidement un projet de base de
données. Ceci vous permet d'insérer automatiquement des composants de base de données dans votre projet et vous évite de
définir une chaîne de connexion pouvant induire des erreurs en cas de saisie manuelle.
Pour créer des projets de base de données dans l'explorateur de données
1. Assurez qu'une connexion dynamique est établie à la base de données.
2. Dans le menu Voir, sélectionnez Explorateur de données.
3. Choisissez Fichier Nouveau Autre et sélectionnez un projet Delphi pour .NET. Ce sera généralement une fiche Windows,
une fiche VCL ou une application ASP.NET.
4. Développez l'arborescence de l'explorateur de données en sélectionnant le niveau Table ou Vue. Si la connexion à votre
base de données est dynamique, le petit symbole x en rouge disparaît quand vous développez le noeud de connexion de la
base de données. Si elle n'est pas dynamique, vous devrez probablement modifier la chaîne de connexion.
5. Au moyen du curseur, saisissez l'une des tables nommées dans la liste.
6. Faites glisser et déposez l'objet table sur votre fiche. Un AdoDbxConnection et un AdoDbxDataAdapter apparaissent dans la
corbeille de composants.
7. Spécifiez les propriétés de bases de données appropriées pour chaque composant de base de données. Par exemple,
définissez la propriété Active sur True si vous souhaitez visualiser les données de votre composant à la conception.
Remarque: Lorsque c'est nécessaire, faites glisser et déposez un composant DataGrid dans la fiche, car ce DataGrid qui
permet l'affichage de données n'est pas inséré automatiquement.
Voir aussi
Concepteurs de composants ADO.NET (
Exploration d'une base de données (
2
see page 22)
see page 116)
Exécution SQL dans l'explorateur de données (
Modification des connexions (
see page 120)
see page 123)
2.1.6 Création de mappages de tables
En utilisant la propriété TableMappings, vous pouvez mapper des colonnes entre une source de données et un ensemble de
données en mémoire. Cela vous permet d'utiliser des noms différents, souvent plus descriptifs, pour les colonnes de votre
ensemble de données. Vous pouvez également mapper une colonne d'une table de base de données avec une colonne de
l'ensemble de données différente de celle sélectionnée par défaut. La propriété TableMappings vous permet également de créer
un ensemble de données qui contient plus ou moins de colonnes que celui récupéré du schéma de la base de données.
116
2.1 Procédures de bases de données
RAD Studio pour .NET
Création de mappages de tables
Pour créer un mappage de table
1. Créez une application.
2. Ajoutez et configurez des composants de base de données.
3. Définissez les mappages de tables dans la boîte de dialogue TableMappings.
Remarque: Cette procédure suppose que vous utilisez des composants de base de données BDP.NET.
Pour créer une application
1. Choisissez Fichier Nouveau Application Windows Forms pour Delphi pour .NET ou C#.
2. Cliquez sur l'onglet Explorateur de données pour afficher vos sources de données.
3. Développez la liste et localisez une source de données dynamique.
4. Glissez-déposez un nom de table sur votre fiche Windows pour ajouter une source de données à votre application. Vous
devriez voir deux objets dans la corbeille de composants : un objet BdpDataAdapter et un objet BdpConnection.
Pour plus d'informations sur la manière de créer des applications de base de données, reportez-vous aux rubriques
supplémentaires ADO.NET et base de données dans ce système d'aide.
Pour configurer les composants bases de données
1. Sélectionnez l'icône BdpDataAdapter dans la corbeille de composants.
2. Cliquez sur le verbe de concepteur Configurer l'adaptateur de données pour ouvrir la boîte de dialogue Configuration de
l'adaptateur de données.
3. Sélectionnez l'onglet DataSet (Ensemble de données).
4. Cliquez sur le bouton radio Nouveau DataSet.
5. Cliquez sur OK. Cette opération crée un nouvel ensemble de données et affiche son icône dans la corbeille de
composants.
Pour définir des mappages de tables
1. Sélectionnez l'icône BdpDataAdapter dans la corbeille de composants.
2. Double-cliquez sur le champ Collections pour la propriété TableMappings dans l'inspecteur d'objets. Cette opération
affiche la boîte de dialogue TableMappings.
3. Pour utiliser un ensemble de données existant comme modèle pour les colonnes, activez la case à cocher Utiliser un
DataSet pour les noms de table et de colonne. Cette opération vous fournit une liste de noms de colonnes à partir d'un
ensemble de données existant, sur la base du schéma de cet ensemble de données. Les noms de colonnes ne sont liés à
rien lorsque vous utilisez ce processus.
2
4. Si vous avez activé la case à cocher Utiliser un DataSet pour les noms de table et de colonne, vous pouvez choisir
l'ensemble de données dans la liste déroulante DataSet (Ensemble de données).
5. Sélectionnez la table source dans la liste déroulante Table source. Si la source de données contient plusieurs tables, leurs
noms apparaissent dans la liste déroulante.
6. Si vous avez choisi d'utiliser un ensemble de données pour suggérer les noms de tables et de colonnes et que cet ensemble
de données contient plusieurs tables, vous pouvez sélectionner la table que vous souhaitez utiliser dans la liste déroulante
Table du DataSet. Les noms de colonnes de la table source et de l'ensemble de données doivent apparaître dans la grille
Mappage de colonnes. Avec l'affichage par défaut, ils représentent le mappage de la source vers l'ensemble de données ;
en d'autres termes, l'adaptateur de données lit les données dans chaque colonne nommée sur le côté gauche de la grille et
les stocke dans la colonne de l'ensemble de données nommée dans le champ correspondant sur le côté droit de la grille.
Vous pouvez changer les noms d'un côté ou de l'autre en tapant de nouveaux noms ou en sélectionnant d'autres tables. Cela
vous permet de stocker des données de résultats de requêtes dans des colonnes d'ensemble de données différentes de
celles créées dans l'ensemble de données par défaut.
117
Gestion des erreurs dans le mappage de
RAD Studio pour .NET
2.1 Procédures de bases de données
7. Si vous souhaitez modifier un mappage, tapez un nouveau nom dans la colonne de table d'ensemble de données située près
de la colonne de table source cible. Les données de la colonne de table source seront ainsi stockées dans la nouvelle
colonne d'ensemble de données.
Remarque: Pour réinitialiser les noms de colonnes afin que les colonnes d'ensemble de données correspondent aux
colonnes de source de données, vous pouvez cliquer sur le bouton Réinitialiser
.
Pour supprimer un mappage
1. Sélectionnez la ligne de grille que vous souhaitez supprimer.
2. Cliquez sur Supprimer. La requête ignorera cette colonne dans la table source et n'insérera aucune donnée dans la colonne
d'ensemble de données.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
Gestion des erreurs dans les mappages de tables (
see page 121)
2.1.7 Exécution SQL dans l'explorateur de données
Vous pouvez écrire, modifier et exécuter du code SQL dans une fenêtre SQL, disponible à partir de l'explorateur de données.
Pour ouvrir une fenêtre SQL
1. Choisissez Voir Explorateur de données.
2. Sélectionnez une connexion.
3. Cliquez avec le bouton droit sur la connexion et choisissez Fenêtre SQL. Cette opération ouvre une fenêtre SQL à onglets
dans l'éditeur de code.
Pour exécuter du code SQL
1. Entrez une instruction SQL ou un nom de procédure stockée valide dans la boîte texte multiligne en haut de la fenêtre SQL.
2. Cliquez sur Exécuter le SQL. Si l'instruction SQL ou la procédure stockée est valide, l'ensemble de résultats apparaît dans le
volet inférieur de la fenêtre SQL.
Remarque: L'instruction SQL ou la procédure stockée doit fonctionner sur la connexion en cours et sa base de données
cible. Vous ne pouvez pas exécuter du code SQL sur une base de données à laquelle vous n'êtes pas connecté.
2
3. Cliquez sur Effacer tout le SQL pour effacer l'instruction SQL ou la procédure stockée de la zone de texte multiligne.
Voir aussi
Concepteurs de composants ADO.NET (
Exploration d'une base de données (
Ajout d'une nouvelle connexion (
Modification des connexions (
118
see page 22)
see page 116)
see page 114)
see page 123)
2.1 Procédures de bases de données
RAD Studio pour .NET
Migration de données entre des bases de
2.1.8 Gestion des erreurs dans le mappage de table
Quel que soit le type de fonction de comparaison que vous effectuez entre une source de données et une représentation des
données en mémoire, des erreurs sont possibles. Les erreurs peuvent survenir lorsqu'une source de données et son ensemble
de données correspondant n'ont pas les mêmes nombres de colonnes ou lorsque les types de colonnes d'une source de
données ne correspondent pas aux types de colonnes de l'ensemble de données. En outre, d'autres erreurs internes peuvent
survenir pour lesquelles il n'existe aucune solution de remplacement de niveau conception. Vous pouvez utiliser les propriétés
MissingMappingAction et MissingSchemaAction pour répondre aux erreurs dans vos opérations de mappage de table. Utilisez la
propriété MissingMappingAction lorsque vous souhaitez spécifier comment l'adaptateur doit réagir lorsque le mappage est
absent. Utilisez la propriété MissingSchemaAction pour spécifier la manière dont l'adaptateur doit réagir lorsqu'il tente d'écrire
des données dans une colonne qui n'est pas définie dans l'ensemble de données.
Pour définir la propriété MissingMappingAction
1. Après avoir créé un AdoDbxDataAdapter et défini vos mappages de tables, cliquez sur la liste déroulante située près de la
propriété MissingMappingAction dans l'inspecteur d'objets.
2. Sélectionnez Passthrough pour que l'adaptateur charge les données de la colonne source des données dans une colonne de
l'ensemble de données de même nom ou, s'il n'existe pas de colonne d'ensemble de données correspondante, pour que
l'adaptateur effectue l'action spécifiée dans la propriété MissingSchemaAction.
3. Sélectionnez Ignorer si vous souhaitez que les données ne soient pas chargées lorsque les colonnes source de données ne
sont pas correctement mappées avec des colonnes de l'ensemble de données. Cela peut se produire si des colonnes
mappées ont des types de données ou des longueurs incompatibles, ou bien en cas d'autres erreurs.
4. Sélectionnez Erreur si vous souhaitez que l'adaptateur déclenche une erreur que vous pourrez intercepter.
Pour définir la propriété MissingSchemaAction
1. Sélectionnez Ajouter si vous souhaitez que la table ou la colonne source de données soit ajoutée à l'ensemble de données et
à son schéma. Les initialisations de la propriété MissingMappingAction à Passthrough et de la propriété
MissingSchemaAction à Add entraînent une duplication de la table source des données et des noms de colonnes de
l'ensemble des données.
2. Sélectionnez AddWithKey si vous souhaitez que la table ou la colonne source de données soit ajoutée à l'ensemble de
données et à son schéma avec les informations de clé primaire de la table ou de la colonne.
3. Sélectionnez Ignorer si vous ne voulez pas que qu'une table ou une colonne soit ajoutée à l'ensemble de données lorsque
cette table ou cette colonne n'est pas déjà représentée dans le schéma de l'ensemble de données. Spécifiez Ignorer lorsque
vous voulez que l'ensemble de données soit uniquement chargé avec les données explicitement spécifiées dans les
mappages de tables. Cela peut être nécessaire si votre adaptateur appelle une procédure stockée ou une instruction SQL
définie par l'utilisateur qui renvoie plus de colonnes qu'il n'en est défini dans l'ensemble de données.
2
4. Sélectionnez Erreur si vous souhaitez que l'adaptateur déclenche une erreur que vous pourrez intercepter.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
Création de mappages de tables (
see page 22)
see page 119)
2.1.9 Migration de données entre des bases de données
L'explorateur de données facilite la migration de données d'une base de données à une autre, voire entre fournisseurs.
119
Migration de données entre des bases de
RAD Studio pour .NET
2.1 Procédures de bases de données
L'explorateur de données permet de copier rapidement une table d'une base de données et de la coller dans une autre base de
données. La migration concerne la structure et les données des tables.
La migration de données est prise en charge par la classe BdpCopyTable, disponible en tant que composant lors de la
conception dans la palette d'outils. Ce composant peut être utilisé dans un programme de migration de données.
Remarque: La classe BdpCopyTable ne copie pas de clés étrangères ou d'objets dépendants.
Pour migrer plusieurs tables
1. Choisissez Voir Explorateur de données.
2. Cliquez à l'aide du bouton droit sur un type de fournisseur, tel qu'Interbase, et choisissez Migrer les données. La page
Explorateur de données de la migration de données s'ouvre dans l'éditeur de code. Cette page de migration de données
permet de sélectionner une ou plusieurs tables à partir d'une connexion de fournisseur source et une connexion de
destination vers laquelle les tables vont être migrées.
3. Choisissez une connexion dans la boîte liste déroulante Connexion source. Les tables associées à cette connexion s'affichent
dans la boîte liste sous la connexion.
4. Choisissez une connexion dans la boîte liste déroulante Connexion destination. Les tables associées à cette connexion
s'affichent dans la boîte liste sous la connexion.
5. Sélectionnez une ou plusieurs tables pour effectuer la migration à partir de la liste de tables associées à la connexion source.
Pour sélectionner plusieurs tables consécutivement, cliquez sur la première table, appuyez sur la touche MAJ et, tout en la
maintenant enfoncée, cliquez sur la dernière table. Pour effectuer une sélection discontinue de tables, appuyez sur la touche
CTRL et, tout en la maintenant enfoncée, cliquez sur chaque table à sélectionner.
6. Cliquez sur le bouton Inclure (>) pour inclure ces tables à migrer vers la connexion de destination. Les tables sélectionnées
s'affichent dans la liste de tables associées à la connexion de destination. Toute table sélectionnée portant le même nom
qu'une table dans la connexion de destination ne peut être migrée.
7. Cliquez sur Migrer pour copier les tables vers la connexion de destination. La page Migration des données affiche la
progression du mappage des types SQL, la progression de la création des tables, la progression de l'extraction des données
à partir de la connexion source et la progression du remplissage de données de la nouvelle table dans la connexion de
destination. Le résultat de chaque opération est rapporté pour chaque table.
8. Cliquez à l'aide du bouton droit sur le noeud Tables dans le fournisseur de destination et choisissez Actualiser. Les noeuds
des nouvelles tables s'affichent.
9. Double-cliquez sur un nouveau noeud de table pour confirmer sa structure et son contenu. La table s'ouvre dans une page
sur la surface de conception.
Pour migrer une seule table
1. Choisissez Voir Explorateur de données.
2. Développez le noeud Tables dans le fournisseur source et sélectionnez la table base de données contenant les données et la
structure à migrer. Pour développer les noeuds de fournisseur, vous devez disposer d'une connexion valide.
2
3. Cliquez à l'aide du bouton droit sur la table à migrer et choisissez Copier la table.
4. Développez le noeud Tables du fournisseur vers lequel vous souhaitez migrer les données.
5. Cliquez à l'aide du bouton droit sur une table et choisissez Coller la table. La boîte de dialogue Nouveau nom de table
apparaît.
6. Entrez un nom pour la nouvelle table et cliquez sur OK.
7. Cliquez à l'aide du bouton droit sur le noeud Tables dans le fournisseur de destination et choisissez Actualiser. Un noeud
associé à la nouvelle table apparaît.
8. Double-cliquez sur le nouveau noeud de table pour confirmer sa structure et son contenu. La table s'ouvre dans une page sur
la surface de conception.
Voir aussi
Fournisseurs de données pour Microsoft .NET (
120
see page 27)
2.1 Procédures de bases de données
RAD Studio pour .NET
Modification des connexions dans l'explorateur de données (
Modification des connexions dans
see page 123)
Exploration d'une base de données dans l'explorateur de données (
see page 116)
2.1.10 Modification des connexions dans l'explorateur de
données
Vous pouvez modifier les connexions de nombreuses façons à partir de l'explorateur de données.
Pour modifier les connexions
1. Choisissez Voir Explorateur de données.
2. Sélectionnez un fournisseur.
3. Cliquez avec le bouton droit pour afficher un menu surgissant répertoriant vos options.
Pour actualiser une connexion
1. Choisissez Voir Explorateur de données.
2. Sélectionnez un fournisseur.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
4. Choisissez Actualiser. Cette opération réinitialise toutes les connexions définies pour le fournisseur sélectionné.
Pour supprimer une connexion
1. Choisissez Voir Explorateur de données.
2. Sélectionnez une connexion.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
4. Choisissez Supprimer la connexion. Cette opération affiche un message de confirmation qui vous demande si vous
souhaitez supprimer la connexion.
5. Cliquez sur OK.
Pour modifier une connexion
1. Choisissez Voir Explorateur de données.
2. Sélectionnez une connexion.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
2
4. Choisissez Modifier la connexion. Cette opération affiche la boîte de dialogue Editeur de connexions.
5. Modifiez les valeurs appropriées dans l'éditeur.
6. Cliquez sur OK.
Pour fermer une connexion
1. Choisissez Voir Explorateur de données.
2. Sélectionnez une connexion.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
4. Choisissez Fermer la connexion. Si la connexion est ouverte, cette opération la ferme.
Remarque: Si la commande Fermer la connexion
121
Modification des connexions de bases de
RAD Studio pour .NET
2.1 Procédures de bases de données
est désactivée dans le menu, cela indique que la connexion n'est pas ouverte.
Pour renommer une connexion
1. Choisissez Voir Explorateur de données.
2. Sélectionnez une connexion.
3. Cliquez avec le bouton droit pour afficher un menu contextuel.
4. Choisissez Renommer la connexion. Cette opération affiche la boîte de dialogue Renommer la connexion.
5. Entrez un nouveau nom.
6. Cliquez sur OK. L'explorateur de données affiche la connexion sous son nouveau nom.
Voir aussi
Concepteurs de composants ADO.NET (
Exploration d'une base de données (
see page 22)
see page 116)
Exécution SQL dans l'explorateur de données (
Ajout d'une nouvelle connexion (
see page 120)
see page 114)
2.1.11 Modification des connexions de bases de données
Les éléments de base d'une chaîne de connexion ont tendance à être les mêmes d'un type de base de données à un autre.
Toutefois, chaque type de base de données prend en charge une syntaxe de chaîne de connexion légèrement différente. Cette
rubrique aborde ces différences.
Pour modifier les divers types de connexions de bases de données
1. Cliquez sur l'onglet Explorateur de données dans l'EDI.
2. Sélectionnez le type de base de données de votre choix.
3. Cliquez avec le bouton droit pour afficher le menu contextuel.
4. Choisissez Modifier la connexion pour afficher l'éditeur de connexions. Les propriétés de l'éditeur de connexions sont
organisées selon trois catégories : Connexions, Options et Paramètres du fournisseur. Les options de connexions désignent
les paramètres de base de données et d'authentification. La zone Options comporte diverses options spécifiques aux bases
de données, y compris les types d'isolation de transaction. La zone Paramètres du fournisseur spécifie les assemblages et
les bibliothèques client requis pour accomplir la connexion à la base de données spécifiée.
Remarque: Toutes les procédures de cette rubrique supposent que vous avez déjà installé un client de base de données, un
serveur, ou les deux, et que l'instance de base de données est en cours d'exécution.
2
Pour modifier une connexion InterBase
1. Entrez le nom de la base de données ou naviguez jusqu'à la base de données sur votre disque local ou sur un lecteur réseau,
en cliquant sur le bouton points de suspension pour naviguer. Les bases de données standard fournies sont généralement
installées dans C:\Program Files\Fichiers communs\CodeGear Shared\Data.
2. Entrez le nom d'utilisateur et le mot de passe. Par défaut, ce sont respectivement masterkey et sysdba.
3. Définissez les options suivantes, si nécessaire. Les valeurs par défaut sont présentées dans le tableau suivant.
122
2.1 Procédures de bases de données
RAD Studio pour .NET
Modification des connexions de bases de
Option
Description
Par défaut
CommitRetain
Valide la transaction active et conserve le contexte de la transaction après une False
validation.
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
QuoteObjects
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms, telles que MS
Access.
RoleName
En cas de présence d'un rôle dans la base de données, vous pouvez entrer le nom du myRole
rôle ici. Le rôle est généralement un alias d'authentification qui combine votre identité
avec vos droits d'accès.
ServerCharSet
Spécifie le jeu de caractères en vigueur sur le serveur.
—
SQLDialect
Spécifie ou renvoie le dialecte SQL utilisé par le client.
3
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
WaitOnLocks
Indique qu'une transaction attend un accès en cas de conflit de verrou avec une autre False
transaction.
4. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Interbase,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token
#
Provider
Interbase
VendorClient
gds32.dll
5. Cliquez sur Tester pour voir si la connexion fonctionne.
6. Cliquez sur OK pour enregistrer la chaîne de connexion.
Remarque: Si vous écrivez des applications ASP.NET et exécutez les fiches Web ASP.NET localement à des fins de test,
vous devez modifier l'instruction path qui pointe sur votre base de données afin d'inclure la désignation hôtelocal: . Par
exemple, vous devriez modifier le chemin présenté ci-avant dans cette rubrique comme suit : hôtelocal:C:\Program
Files\Fichiers communs\CodeGear Shared\Data\employee.gdb.
2
Remarque: Votre chaîne de connexion devrait ressembler à ceci
database=C:\Program Files\Fichiers communs\CodeGear Shared\Data\EMPLOYEE.GDB;
assembly=Borland.Data.Interbase,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
;
vendorclient=gds32.dll;provider=Interbase;username=sysdba;password=masterkey
Pour modifier une connexion MS SQL Server
1. Entrez le nom de la base de données dans le champ Base de données de l'éditeur de connexions. Par exemple, utilisez
l'une des bases de données MS SQL Server exemple, telles que Pubs ou Northwind. Il n'est pas nécessaire d'inclure
l'extension du fichier dans le nom.
2. Entrez le nom de l'hôte. Si vous utilisez un serveur de base de données local, entrez (local) dans ce champ.
123
Modification des connexions de bases de
RAD Studio pour .NET
2.1 Procédures de bases de données
3. Si vous utilisez l'authentification de votre système d'exploitation, définissez OSAuthentication sur True.
4. Si vous utilisez l'authentification de base de données, entrez le nom d'utilisateur et le mot de passe dans les champs
appropriés. Par défaut, le nom d'utilisateur de la base de données SQL Server est sa.
5. Modifiez les options de bases de données, si nécessaire. Les valeurs par défaut sont présentées dans le tableau suivant.
Option
Description
Par défaut
BlobSize
Spécifie la limite supérieure de la taille d'un champ BLOB.
1024
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
QuoteObjects
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms, telles que MS
Access.
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
6. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Mssql,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token #
Provider
MSSQL
VendorClient
sqloledb.dll
7. Cliquez sur Tester pour voir si la connexion fonctionne.
8. Cliquez sur OK pour enregistrer la chaîne de connexion.
Remarque: Si vous écrivez des applications ASP.NET et exécutez les fiches Web ASP.NET localement à des fins de test,
vous devez modifier l'instruction path qui pointe sur votre base de données afin d'inclure la désignation hôtelocal: placée
devant le chemin d'accès.
Remarque: Votre chaîne de connexion devrait ressembler à ceci
assembly=Borland.Data.Mssql,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;
vendorclient=sqloledb.dll;osauthentication=True;database=Pubs;username=;hostname=(local);passwo
rd=;
provider=MSSQL
2
Pour modifier une connexion DB2
1. Entrez le chemin de la base de données.
2. Entrez le nom d'utilisateur et le mot de passe dans les champs appropriés.
3. Définissez les options de bases de données suivantes, si nécessaire. Les valeurs par défaut sont présentées dans le tableau
suivant.
Option
Description
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
124
Par défaut
2.1 Procédures de bases de données
QuoteObjects
RAD Studio pour .NET
Modification des connexions de bases de
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms.
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
4. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Db2,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token #
Provider
DB2
VendorClient
db2cli.dll
5. Cliquez sur Tester pour voir si la connexion fonctionne.
6. Cliquez sur OK pour enregistrer la chaîne de connexion.
Pour modifier une connexion Oracle
1. Entrez le chemin de la base de données.
2. Si vous utilisez l'authentification de votre système d'exploitation, définissez OSAuthentication sur True. Cela signifie que le
système prend en compte le nom d'utilisateur et le mot de passe de votre système local pour établir la connexion à la base de
données.
3. Si vous utilisez l'authentification de base de données, entrez le nom d'utilisateur et le mot de passe dans les champs
appropriés. Par exemple, le nom d'utilisateur et le mot de passe Oracle typique de la base de données exemple sont
respectivement SCOTT et TIGER.
4. Définissez les options de bases de données suivantes, si nécessaire. Les valeurs par défaut sont présentées dans le tableau
suivant.
Option
Description
Par défaut
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
QuoteObjects
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms.
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
5. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Oracle,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token #
Provider
Oracle
VendorClient
oci.dll
6. Cliquez sur Tester pour voir si la connexion fonctionne.
7. Cliquez sur OK pour enregistrer la chaîne de connexion.
125
2
Modification des connexions de bases de
RAD Studio pour .NET
2.1 Procédures de bases de données
Pour modifier une connexion MS Access
1. Entrez le nom de la base de données ou naviguez jusqu'à la base de données sur votre disque local ou sur un lecteur réseau,
en cliquant sur le bouton points de suspension pour naviguer. Si Office Component Toolkit est installé, vous devriez trouver
Northwind dans C:\Program Files\Office Component Toolpack\Data\Northwind.mdb.
2. Entrez le nom d'utilisateur et le mot de passe. Par défaut, essayez généralement admin pour le nom d'utilisateur et laissez
vide le champ Mot de passe.
3. Définissez les options de bases de données suivantes, si nécessaire. Les valeurs par défaut sont présentées dans le tableau
suivant.
Option
Description
Par défaut
BlobSize
Spécifie la limite supérieure de la taille d'un champ BLOB.
1024
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
QuoteObjects
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms, telles que MS
Access.
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
4. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Msacc,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token #
Provider
MSAccess
VendorClient
msjet40.dll
5. Cliquez sur Tester pour voir si la connexion fonctionne.
6. Cliquez sur OK pour enregistrer la chaîne de connexion.
Remarque: Votre chaîne de connexion devrait ressembler à ceci
database=C:\Program Files\Office Component Toolpack\Data\Northwind.mdb;
assembly=Borland.Data.Msacc,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;
vendorclient=msjet40.dll;provider=MSAccess;username=admin;password=
2
Pour modifier une connexion Sybase
1. Entrez le chemin de la base de données.
2. Entrez le nom d'utilisateur et le mot de passe dans les champs appropriés.
3. Définissez les options de bases de données suivantes, si nécessaire. Les valeurs par défaut sont présentées dans le tableau
suivant.
Option
Description
Par défaut
BlobSize
Spécifie la limite supérieure de la taille d'un champ BLOB.
1024
ClientAppName
Nom de l'application client défini par l'application intermédiaire.
—
ClientHostName
Nom de l'hôte client défini par l'application intermédiaire.
—
126
2.1 Procédures de bases de données
RAD Studio pour .NET
Construction d'une application de base de
LoginPrompt
Détermine si vous souhaitez que l'utilisateur reçoive une invite de connexion à chaque False
tentative de connexion de l'application à la base de données.
PacketSize
Indique le nombre d'octets par paquet réseau transféré au client à partir du serveur de 512
base de données.
QuoteObjects
Spécifie que les noms de tables, les noms de colonnes et les autres objets doivent False
être délimités lors de leur inclusion dans une instruction SQL. Cela est nécessaire
pour les bases de données autorisant les espaces dans les noms, telles que MS
Access.
TransactionIsolation Les verrous partagés sont conservés pendant la lecture des données afin d'éviter des ReadCommitted
lectures sales (dirty), mais les données peuvent être modifiées avant la fin de la
transaction, ce qui aboutit à des lectures non-répétables ou à des données fantômes.
Cela spécifie la valeur de la propriété TAdoDbxTransaction. IsolationLevel.
4. Vous devez être en mesure d'accepter les valeurs par défaut des paramètres de fournisseur suivants :
Option
Par défaut
Assembly
Borland.Data.Sybase,Version=Current Product Version,Culture=neutral,PublicKeyToken=Token
#
Provider
Sybase
VendorClient
libct.dll
5. Cliquez sur Tester pour voir si la connexion fonctionne.
6. Cliquez sur OK pour enregistrer la chaîne de connexion.
Remarque: Votre chaîne de connexion devrait ressembler à ceci
assembly=Borland.Data.Sybase,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=libct.dll;database=Pubs;
username=admin;hostname=host1;password=;provider=Sybase
Voir aussi
Présentation de ADO.NET (
see page 14)
Fournisseurs de base de données pour .NET (
Concepteurs de composants ADO.NET (
see page 27)
see page 22)
Conception d'une application de bases de données ASP.NET (
see page 182)
Création de projets de base de données dans l'explorateur de données. (
Passage de paramètres dans une application de base de données (
see page 118)
2
see page 132)
2.1.12 Construction d'une application de base de données
résolvant plusieurs tables
RAD Studio prend en charge la résolution multi-table avec BDP.NET. En particulier, les composants DataSync et DataHub sont
conçus pour fournir et résoudre un ensemble de données .NET émanant de plusieurs sources de données hétérogènes. De
plus, ces composants supportent l'affichage de données dynamiques lors de la conception, fournissent et résolvent des données
maître-détail en générant du code SQL optimal pour la résolution de sources de données BDP.
127
Construction d'une application de base de
RAD Studio pour .NET
2.1 Procédures de bases de données
Le DataHub agit en tant que conduite entre un DataSet et un DataSync. La propriété DataPort d'un DataHub peut être réglée sur
n'importe quelle implémentation IDataProvider. DataSync implémente IDataProvider et possède une collection Providers qui
peut contenir tout fournisseur de données .NET implémentant IDbDataAdapter. La méthode GetData de DataSync parcourt tous
les DataProviders de la collection et retourne un DataSet. SaveData résout les modifications de DataSet dans la base de
données via la collection DataProvider. Lors de la résolution de modifications via un BdpDataAdapter, le résolveur génère du
code SQL optimal. Pour les fournisseurs de données autres que BDP, leur CommandBuilder respectif est employé.
La construction d'une application de base de données qui résout plusieurs tables se compose des étapes suivantes :
1. Créer un projet de base de données simple à partir de l'explorateur de données en y incorporant plusieurs objets
BdpDataAdapter permettant la connexion à plusieurs fournisseurs
2. Ajouter et configurer un composant DataSync pour connecter les fournisseurs
3. Ajouter et configurer un composant DataHub pour connecter le DataSync à un DataSet.
Pour créer des projets de base de données dans l'explorateur de données
1. Choisissez Fichier Nouveau Application Windows Forms pour Delphi pour .NET. Le concepteur Windows Forms
apparaît.
2. Choisissez Voir Explorateur de données pour accéder à l'explorateur de données.
3. Développez l'arborescence de l'explorateur de données afin d'exposer les fournisseurs et les tables de bases de données
que vous souhaitez utiliser. Pour développer les noeuds de fournisseur, vous devez disposer d'une connexion dynamique. Si
vous ne disposez pas d'une connexion dynamique, vous devrez probablement modifier la chaîne de connexion.
4. Faites glisser et déposez les tables d'un ou de plusieurs fournisseurs sur la fiche. Pour chaque table que vous déposez sur la
fiche, un BdpConnection et un BdpDataAdapter apparaissent dans la corbeille de composants. Si vous ajoutez plusieurs
tables du même fournisseur, vous pouvez conserver pour ce fournisseur un seul BdpConnection (et supprimer tous les
autres).
5. Configurez chaque composant BdpDataAdapter. Il est inutile de définir les propriétés Active ou DataSet, du fait que le
DataSet sera rempli par le composant DataHub.
6. Ajoutez un composant DataSet à votre fiche à partir de la catégorie Composants de données de la palette d'outils.
7. Ajoutez et configurez un composant DataGrid dans la fiche à partir de la catégorie Contrôles de données de la palette
d'outils. Définissez la propriété DataSource du DataGrid par le nom du composant DataSet ajouté (dataSet1, par exemple).
Pour ajouter et configurer un composant DataSync
1. Faites glisser un composant DataSync sur la fiche à partir de la catégorie Fournisseur de données Borland de la palette
d'outils.
2. Dans la corbeille de composants, sélectionnez le composant DataSync.
3. Dans l'inspecteur d'objets, sélectionnez la propriété Providers, et cliquez sur le bouton points de suspension pour ouvrir
l'éditeur de collection DataProvider.
2
4. Dans l'éditeur de collection DataProvider, ajoutez un DataProvider pour chaque table que vous souhaitez fournir et
résoudre. Vous devez disposer d'un DataProvider pour chaque BdpDataAdapter du projet.
5. Pour chaque DataProvider, sélectionnez le DataProvider dans le volet Membres et définissez la propriété DataAdapter par le
BdpDataAdapter approprié.
6. Cliquez sur OK pour mettre fin à la configuration de vos DataProvider et refermer la boîte de dialogue Editeur de collection
DataProvider.
7. Dans l'inspecteur d'objets, définissez la propriété CommitBehavior pour indiquer la façon dont sont gérés les échecs lors de
la résolution. La logique de résolution comporte trois options :
• Atomic — Le programme tente d'effectuer des transactions pour chaque fournisseur. L'échec d'une transaction entraîne l'arrêt
du traitement des transactions suivantes et l'annulation des transactions précédentes. Si aucune transaction n'échoue, toutes
les transactions sont validées.
• Individual — Le programme tente d'effectuer une transaction pour un fournisseur ; en cas de réussite, elle est validée. La
128
2.1 Procédures de bases de données
RAD Studio pour .NET
Passage de paramètres dans une
transaction suivante est tentée ; si elle réussit, elle est validée, et le traitement se poursuit. Si une transaction échoue pour un
fournisseur, celle-ci est annulée, et le traitement s'arrête.
• ForceIndividual — Le programme tente d'effectuer une transaction pour un fournisseur ; en cas de réussite, elle est validée.
La transaction suivante est tentée ; si elle réussit, elle est validée, et le traitement se poursuit. Si une transaction échoue pour
un fournisseur, celle-ci est annulée, et la transaction suivante est traitée.
Pour ajouter et configurer un composant DataHub
1. Faites glisser un composant DataHub sur la fiche à partir de la catégorie Fournisseur de données Borland de la palette
d'outils.
2. Dans la corbeille de composants, sélectionnez le composant DataHub.
3. Dans l'inspecteur d'objets, définissez la propriété DataPort par le composant DataSync ajouté (DataSync1, par exemple).
4. Définissez la propriété DataSet par le DataSet ajouté (dataSet1, par exemple).
5. Choisissez Exécuter Exécuter. L'application se compile et affiche un Windows Form comportant un DataGrid.
Voir aussi
Présentation de ADO.NET (
see page 14)
Fournisseurs de données pour .NET (
see page 27)
Concepteurs de composants ADO.NET (
see page 22)
Construction d'une application de base de données distribuée (
see page 144)
2.1.13 Passage de paramètres dans une application de base
de données
Les procédures suivantes décrivent une application simple qui vous permet de passer la valeur d'un paramètre à un ensemble
de données au moment de l'exécution. Les paramètres vous permettent de créer des applications au moment de la conception
sans connaître exactement les données que l'utilisateur saisira au moment de l'exécution. Cet exemple suppose que vous avez
déjà configuré et connecté votre base de données exemple Interbase Employee. Pour l'illustration, cet exemple utilise le
connecteur par défaut IBConn1, qui est défini à un emplacement standard. L'emplacement de votre base de données peut être
différent.
Pour transmettre un paramètre
1. Créez un adaptateur de données et une connexion à la base de données Interbase employee.gdb.
2. Ajoutez un contrôle zone de saisie, un contrôle bouton et un contrôle grille de données à votre fiche.
2
3. Configurez l'adaptateur de données.
4. Pour ajouter un paramètre à l'adaptateur de données.
5. Configurez la grille de données.
6. Ajoutez du code à l'événement Click du bouton.
7. Compilez l'application et exécutez-la.
Pour créer un adaptateur de données et une connexion
1. Choisissez Fichier Nouveau Application Windows Forms pour Delphi pour .NET ou C#. Le concepteur Windows Forms
apparaît.
2. Cliquez sur l'onglet Explorateur de données et explorez pour trouver la connexion IBConn1 sous le noeud Interbase.
129
Passage de paramètres dans une
RAD Studio pour .NET
2.1 Procédures de bases de données
3. Placez la table EMPLOYEE sur la fiche Windows par glisser-déposer. Cela crée un objet BdpDataAdapter et un objet
BdpConnection et affiche leurs icônes dans la corbeille des composants.
4. Sélectionnez l'icône de l'adaptateur de données, puis cliquez sur le verbe de concepteur Configurer l'adaptateur de
données dans la zone Verbe de concepteur en bas de l'inspecteur d'objets. Cela affiche la boîte de dialogue Configuration
de l'adaptateur de données.
5. Réécrivez l'instruction SQL qui est affichée dans l'onglet Select de la boîte de dialogue :
SELECT EMP_NO, FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEE WHERE FIRST_NAME = ?;
Comme vous pouvez le voir, cette instruction limite le nombre de champs. Elle contient également un caractère ? dans la clause
Where. Le caractère ? est un caractère générique qui représente la valeur du paramètre transmise par votre application au
moment de l'exécution. Il existe au moins deux raisons pour utiliser un paramètre de cette façon. La première raison consiste à
donner à l'application la possibilité de récupérer de nombreuses instances des données dans les colonnes sélectionnées, tout
en utilisant une valeur différente pour satisfaire la condition. La deuxième raison est que vous ne connaissez pas forcément les
valeurs réelles au moment de la conception. Vous pouvez imaginer à quel point votre application serait limitée si seules les
données pour lesquelles FIRST_NAME = 'Bob' étaient récupérées.
6. Cliquez sur l'onglet DataSet (Ensemble de données).
7. Cliquez sur Nouveau DataSet.
8. Cliquez sur OK. Cela crée l'ensemble de données représentant votre requête.
Pour ajouter un paramètre à l'adaptateur de données
1. Sélectionnez l'icône de l'adaptateur de données, puis développez les propriétés sous SelectCommand dans la zone de
remplissage de l'inspecteur d'objets. Vous devez pouvoir voir votre instruction Select dans la liste déroulante de la
propriété SelectCommand.
2. Affectez la valeur 1 à la propriété ParameterCount.
3. Cliquez sur l'entrée (Collection) située à côté de la propriété Parameters. L'éditeur de collection BdpParameter s'affiche.
4. Cliquez sur Ajouter pour ajouter un nouveau paramètre.
5. Renommez le paramètre en emp.
6. Affectez à BdpType String, à DbType Object, à Direction Input, à SourceColumn FIRST_NAME et à ParameterName emp.
7. Cliquez sur OK.
8. Dans l'inspecteur d'objets, initialisez la propriété Active sous Live Data (Données dynamiques) à la valeur True.
Pour ajouter des contrôles à la fiche
1. Faites glisser et déposez un contrôle zone de saisie sur la fiche.
2. Faites glisser et déposez un bouton sur la fiche.
2
3. Modifiez la propriété Text du bouton en Get Info.
4. Faites glisser et déposez un contrôle grille de données sur la fiche.
5. Organisez les contrôles tels que vous souhaitez les voir apparaître, en vous assurant que DataGrid est assez long pour
afficher quatre champs de données.
Pour configurer la grille de données
1. Sélectionnez la grille de données.
2. Initialisez la propriété DataSource avec le nom de l'ensemble de données (dataSet1 par défaut).
3. Initialisez la propriété DataMember à Table1. Cette opération affiche les noms des colonnes spécifiées dans l'instruction SQL
que vous avez entrée dans l'adaptateur de données.
130
2.1 Procédures de bases de données
RAD Studio pour .NET
Utilisation de la prévisualisation
Pour ajouter du code à l'événement Click du bouton
1. Double-cliquez sur le bouton pour ouvrir l'éditeur de code.
2. Dans le bloc de code de l'événement button1_Click, ajoutez le code suivant :
bdpSelectCommand1.Close();
/* Cela ferme la commande pour s'assurer que nous transmettrons le paramètre à */
/* la bdpSelectCommand la plus
actuelle.
*/
bdpDataAdapter1.Active = false;
/* Cela nettoie l'adaptateur de données pour que nous ne conservions pas d'anciennes
données
*/
bdpSelectCommand1.Parameters["emp"].Value = textBox1.Text;
/* Cela initialise le paramètre avec toute valeur contenue dans le champ texte.
*/
bdpDataAdapter1.Active = true;
/* Cela réactive l'adaptateur de données pour que les données réactualisées apparaissent dans
la grille des données. */
Self.bdpSelectCommand1.Close();
/* Cela ferme la commande pour s'assurer que nous transmettrons le paramètre à */
/* la bdpSelectCommand la plus
actuelle.
*/
Self.BdpDataAdapter1.Active := false;
/* Cela nettoie l'adaptateur de données pour que nous ne conservions pas d'anciennes
données
*/
Self.bdpSelectCommand1.Parameters['emp'].Value := textBox1.Text;
/* Cela initialise le paramètre avec toute valeur contenue dans le champ texte.
*/
Self.BdpDataAdapter1.Active := true;
/* Cela réactive l'adaptateur de données pour que les données réactualisées apparaissent dans
la grille des données. */
Si vous avez modifié les noms de l'un de ces éléments, vous devez mettre à jours ces commandes pour répercuter les
nouveaux noms.
3. Enregistrez votre application.
Pour compiler et exécuter l'application
1. Appuyez sur Maj + F9 pour compiler l'application.
2
2. Appuyez sur F9 pour exécuter l'application.
3. Tapez un nom John, Robert, Roger, Kim, Terri, Katherine ou Ann dans la zone de saisie.
4. Cliquez sur le bouton. Cela affiche le numéro de l'employé, son prénom, son nom de famille et son salaire dans la grille de
données. S'il existe plusieurs personnes avec le même prénom, la grille de données affiche toutes les occurrences des
employés ayant ce même prénom.
Voir aussi
Présentation de ADO.NET (
see page 14)
Fournisseurs de données pour Microsoft .NET (
see page 27)
Conception d'une application de bases de données Windows Forms
131
Utilisation de l'éditeur de texte de
RAD Studio pour .NET
2.1 Procédures de bases de données
2.1.14 Utilisation de la prévisualisation d'adaptateur de
données
CodeGear RAD Studio fournit un outil qui permet à une source de données et à un ensemble de données de communiquer.
Vous pouvez utiliser la prévisualisation de l'adaptateur de données pour spécifier les données à déplacer vers et depuis
l'ensemble de données sous forme d'instructions SQL ou de procédures stockées appelées pour une opération de lecture ou
d'écriture d'une base de données.
Pour utiliser la prévisualisation de l'adaptateur de données
1. Après avoir déposé un composant BdpDataAdapter sur le concepteur, cliquez sur le verbe de concepteur, Configurer
l'adaptateur de données qui apparaît en bas de l'inspecteur d'objets.
2. Cliquez sur l'onglet Prévisualiser pour afficher la prévisualisation de l'adaptateur de données.
3. Pour limiter le nombre de lignes récupérées, cliquez sur la case à cocher Limiter les lignes.
4. Dans la boîte texte Lignes à extraire, entrez le nombre de lignes que doit contenir l'ensemble de résultats.
5. Cliquez sur Actualiser pour réexécuter la requête et remplir la boîte liste avec le nouveau nombre de lignes.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
Conception d'une application de bases de données Windows Forms
Utilisation de l'éditeur de texte de commande (
Utilisation du concepteur éditeur de connexion (
see page 135)
see page 136)
Utilisation du concepteur d'ensemble de données (
Utilisation du concepteur adaptateur de données (
see page 141)
see page 136)
2.1.15 Utilisation de l'éditeur de texte de commande
2
Pour pouvoir créer un ensemble de données, BdpDataAdapter doit avoir au moins une instruction SQL Select définie pour la
propriété CommandText. Une fois construite, cette instruction apparaît comme la propriété CommandText de l'objet
BdpCommand du BdpDataAdapter. Vous pouvez entrer cette instruction Select manuellement ou, à l'aide de l'éditeur de texte
de commande, construire l'instruction, ainsi que les instructions Update, Insert et Delete, en utilisant une simple opération de
pointer-cliquer. Ainsi, une fois que vous êtes connecté à une source de données dynamiques, vous pouvez voir le nom des
tables et colonnes de l'éditeur de texte de commande. Vous pouvez construire l'instruction en choisissant des éléments dans
des listes. En outre, si vous créez votre BdpDataAdapter à l'aide de l'explorateur de données et une connexion dynamique à
une source de données, une instruction Select (semblable à select * from nomtable) est automatiquement créée. Vous
pouvez utiliser cette instruction pour renvoyer toutes les lignes de la source de données nommée, ou vous pouvez modifier
l'instruction avant de générer l'ensemble de données.
Pour générer les commandes
1. Sélectionnez une connexion dans la boîte liste déroulante Connexion. Il doit s'agir d'un objet BdpConnection que vous avez
déjà défini. L'objet BdpDataAdapter associé doit également être défini, et la propriété Active de l'ensemble de données doit
132
2.1 Procédures de bases de données
RAD Studio pour .NET
Utilisation du concepteur adaptateur de
avoir pour valeur True. Cette opération remplit les boîtes liste Tables et Colonnes avec des données issues de la base de
données.
2. Sélectionnez une table dans la boîte liste Tables.
3. Sélectionnez chaque colonne devant apparaître dans les instructions SQL. A mesure que vous sélectionnez les noms de
colonne, ils apparaissent dans la boîte texte SQL.
4. Activez la case à cocher en regard de chaque type d'instruction à générer.
5. Cliquez sur le bouton Générer SQL.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
Conception d'une application de bases de données Windows Forms
Utilisation du concepteur éditeur de connexion (
see page 136)
Utilisation du concepteur adaptateur de données (
Utilisation du concepteur d'ensemble de données (
see page 136)
see page 141)
Utilisation de la prévisualisation d'adaptateur de données (
see page 134)
2.1.16 Utilisation du concepteur adaptateur de données
L'adaptateur de données contient, au minimum, une instruction SQL Select de la propriété de commande SELECT. Vous pouvez
entrer cette instruction vous-même ou, à l'aide du concepteur d'adaptateur de données, construire l'instruction Select, ainsi que
les instructions Update, Insert et Delete. L'objet BdpCommandBuilder construit les instructions Update, Insert et Delete en
fonction des tables et colonnes que vous avez sélectionnées. Le concepteur d'adaptateur de données utilise une connexion
dynamique pour extraire les métadonnées à partir desquelles vous pouvez construire les instructions SQL permettant de
manipuler les données à déplacer d'un ensemble de données vers votre base de données.
Pour invoquer les commandes
1. Sélectionnez une connexion dans la boîte liste déroulante Connexion. Il doit s'agir d'un objet BdpConnection que vous avez
déjà défini. Cette opération remplit les boîtes liste Tables et Colonnes avec des données issues de la base de données.
2. Sélectionnez une table dans la boîte liste Tables.
3. Sélectionnez chaque colonne devant apparaître dans les instructions SQL.
4. Activez la case à cocher en regard de chaque type d'instruction à générer.
2
5. Cliquez sur le bouton Générer SQL.
6. Modifiez, au besoin, le texte généré, ou sélectionnez d'autres colonnes et cliquez de nouveau sur Générer SQL.
7. Cliquez sur OK.
Remarque: Les composants de commande sont automatiquement créés en fonction des sélections effectuées dans la boîte
de dialogue.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
133
Utilisation du concepteur éditeur de
RAD Studio pour .NET
2.1 Procédures de bases de données
Conception d'une application de bases de données Windows Forms
Utilisation du concepteur éditeur de connexion (
Utilisation de l'éditeur de texte de commande (
see page 136)
see page 135)
Utilisation du concepteur d'ensemble de données (
see page 141)
Utilisation de la prévisualisation d'adaptateur de données (
see page 134)
2.1.17 Utilisation du concepteur éditeur de connexion
Chaque objet connexion peut prendre en charge plusieurs connexions nommées. Ces connexions peuvent représenter des
connexions vers plusieurs bases de données et types de base de données.
Pour ajouter une nouvelle connexion
1. Sélectionnez un composant BdpConnection existant dans le concepteur ou déposez un composant BdpConnection dans le
concepteur pour créer un nouvel objet.
2. Cliquez sur l'onglet du concepteur de composant en bas de l'inspecteur d'objets pour afficher la boîte de dialogue Editeur
de connexions.
3. Cliquez sur Ajouter pour afficher la boîte de dialogue d'ajout d'une nouvelle connexion.
4. Sélectionnez un fournisseur dans la boîte liste déroulante Nom du fournisseur.
5. Entrez un nouveau nom pour la connexion dans la boîte texte Nom de connexion.
6. Cliquez sur OK.
7. Entrez les valeurs appropriées pour votre source de données.
8. Cliquez sur OK.
Pour supprimer une connexion
1. Mettez en surbrillance le type de connexion.
2. Cliquez sur Retirer. Une boîte de dialogue de confirmation de la suppression apparaît.
3. Cliquez sur Oui.
Pour renommer une connexion
1. Cliquez avec le bouton droit sur la connexion et choisissez Renommer.
2
2. Tapez le nouveau nom de la connexion.
3. Cliquez sur OK.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
Options de mise en pool des connexions (
see page 8)
Conception d'une application de bases de données Windows Forms
Utilisation du concepteur de texte de commande (
see page 135)
Utilisation du concepteur adaptateur de données (
see page 136)
Utilisation du concepteur d'ensemble de données (
134
see page 141)
2.1 Procédures de bases de données
RAD Studio pour .NET
Utilisation de la prévisualisation d'adaptateur de données (
Utilisation des ensembles de données
see page 134)
2.1.18 Utilisation des ensembles de données standard
L'ensemble de données standard fournit une représentation en mémoire d'une ou plusieurs tables ou vues extraites d'une
source de données connectée. A cause du codage avec indirection de la structure sous-jacente des données, vous ne pouvez
voir que les noms de colonnes de votre source de données pendant l'exécution. Quand vous générez un ensemble de données,
cela extrait tout ce que vous avez spécifié dans votre instruction SELECT dans la boîte de dialogue Configuration de l'adaptateur
de données. Vous pouvez limiter vos colonnes en changeant l'instruction SELECT et en créant un nouvel ensemble de données.
Pour utiliser les ensembles de données
1. Générez un ensemble de données.
2. Ajoutez plusieurs tables à un ensemble de données.
3. Définissez les clés primaires pour les tables de données de l'ensemble de données.
4. Définissez les propriétés des colonnes de votre ensemble de données.
5. Définissez les contraintes de vos colonnes.
6. Définissez les relations entre les tables de votre ensemble de données.
Pour générer un ensemble de données
1. Dans l'explorateur de données, sélectionnez une source de données.
2. Explorez l'arborescence, puis glissez-déposez le nom d'une table sur votre fiche Windows Form ou Web Form. Cela crée le
BdpDataAdapter et le BdpConnection pour cette source de données et affiche les icônes pour ces objets dans la corbeille de
composants.
Remarque: Vous pouvez aussi faire glisser une source de données uniquement sur la fiche plutôt que sur une table, mais
dans ce cas, RAD Studio créera uniquement pour vous un objet connexion. Vous devrez toujours créer et configurer l'objet
BdpDataAdapter explicitement.
3. Cliquez sur l'icône BdpDataAdapter (nommée bdpDataAdapter1 par défaut) pour la sélectionner.
4. Cliquez sur le verbe de concepteur Configurer l'adaptateur de données dans la zone Verbe de concepteur en bas de
l'inspecteur d'objets. Cela affiche la boîte de dialogue Configuration de l'adaptateur de données.
5. Si l'instruction SQL qui est préinitialisée dans la boîte de dialogue est acceptable, cliquez sur l'onglet DataSet (Ensemble de
données), autrement modifiez l'instruction SQL, puis cliquez sur l'onglet DataSet (Ensemble de données).
6. Sélectionnez le bouton radio Nouveau DataSet.
2
Conseil: Vous pouvez accepter le nom par défaut ou changer le nom de l'ensemble de données.
7. Cliquez sur OK pour générer l'ensemble de données. Une icône Ensemble de données apparaît dans la corbeille des
composants pour indiquer que votre ensemble de données a été créé.
Remarque: En parcourant le code pour l'ensemble de données dans l'éditeur de code, vous pouvez voir que les colonnes
sont définies en tant que colonnes de données génériques, dont les propriétés columnName ont pour valeur le nom de la
colonne de la table de base de données. Cela diffère de la façon dont un ensemble de données typé est construit : le nom de
l'objet est alors dérivé du nom réel de la colonne de la base de données et non attribué en tant que valeur de propriété.
135
Utilisation des ensembles de données
RAD Studio pour .NET
2.1 Procédures de bases de données
Pour ajouter plusieurs tables à un ensemble de données
1. Dans l'explorateur de données, sélectionnez une source de données.
2. Explorez l'arborescence, puis glissez-déposez les noms de tables multiples, une par une, sur votre fiche Windows Form ou
Web Form. Cela crée le BdpDataAdapter pour chaque table et un BdpConnection pour cette source de données, et affiche
les icônes pour ces objets dans la corbeille de composants.
3. Cliquez sur l'icône BdpDataAdapter (nommée bdpDataAdapter1 par défaut) pour la sélectionner.
4. Cliquez sur le verbe de concepteur Configurer l'adaptateur de données dans la zone Verbe de concepteur en bas de
l'inspecteur d'objets. Cela affiche la boîte de dialogue Configuration de l'adaptateur de données.
5. Si l'instruction SQL qui est préinitialisée dans la boîte de dialogue est acceptable, cliquez sur l'onglet DataSet (Ensemble de
données), autrement modifiez l'instruction SQL, puis cliquez sur l'onglet DataSet (Ensemble de données).
6. Sélectionnez le bouton radio Nouveau DataSet.
Conseil: Vous pouvez accepter le nom par défaut ou changer le nom de l'ensemble de données.
7. Cliquez sur OK pour générer l'ensemble de données. Une icône Ensemble de données apparaît dans la corbeille des
composants pour indiquer que votre ensemble de données a été créé.
8. Répétez la configuration de l'adaptateur de données pour chacun des autres adaptateurs de données, mais sélectionnez
DataSet existant dans l'onglet DataSet (Ensemble de données) en générant les ensembles de données pour tous les
adaptateurs de données, sauf pour le premier que vous configurez. Cela génère une table de données pour chaque
adaptateur de données et les stocke toutes dans un seul ensemble de données.
Remarque: Il est aussi possible de générer des ensembles de données multiples, soit un par adaptateur de données, soit
des combinaisons de tables de données.
Pour définir les clés primaires de chaque table de données dans l'ensemble de données
1. Sélectionnez chaque adaptateur de données tour à tour et positionnez la propriété Active sous Données dynamiques dans
l'inspecteur d'objets à True.
2. Sélectionnez l'ensemble de données dans la corbeille de composants.
3. Dans l'inspecteur d'objets, dans la propriété Tables, cliquez sur le bouton points de suspension. Cela affiche l'éditeur de
collection de tables. Si vous avez positionné toutes les propriétés Active des adaptateurs de données à True, l'éditeur de
collection de tables contiendra un membre pour chaque table de données stockée dans l'ensemble de données
correspondant.
4. Sélectionnez une table dans la liste des membres.
5. Dans le champ Clé primaire de la table des propriétés, cliquez sur l'élément DataColumn[] pour afficher une liste de noms de
colonnes.
2
6. Cochez la case grise à côté du nom des colonnes qui composent la clé primaire. Le numéro 1 apparaît dans la case à cocher
grise lorsqu'elle est sélectionnée.
7. Définissez les propriétés et les contraintes des colonnes pour vos colonnes de clés primaires.
Pour définir les propriétés de colonnes pour vos colonnes d'ensembles de données
1. Dans l'éditeur de collections de tables, cliquez sur l'élément (Collections) à côté de Colonnes dans le volet Propriétés des
tables. Cela affiche l'éditeur de Collections de colonnes pour la colonne sélectionnée.
2. Définissez les valeurs de propriétés pour les colonnes individuelles.
3. Répétez la procédure pour chaque colonne.
Pour définir des contraintes pour vos colonnes
1. Dans l'éditeur de collection de tables, cliquez sur l'élément (Collections) à côté de Contraintes dans le volet Propriétés de
136
2.1 Procédures de bases de données
RAD Studio pour .NET
Utilisation des ensembles de données
table. Cela affiche l'éditeur de collection de contraintes pour la colonne sélectionnée.
2. Cliquez sur Ajouter pour ajouter soit une contrainte d'unicité, soit une contrainte de clé primaire.
3. Si vous avez sélectionné une contrainte d'unicité, la boîte de dialogue Contrainte Unique apparaît. Sélectionnez un ou
plusieurs noms de colonnes. Vous pouvez aussi cocher la case Clé primaire si vous voulez définir la colonne en tant que clé
primaire. En définissant la contrainte d'unicité sur une colonne, vous imposez une règle selon laquelle toutes les valeurs de la
colonne doivent être uniques. Cela est utile pour les colonnes qui contiennent des numéros d'identification, tels que des
numéros d'employés, des numéros de sécurité sociale, des numéros de pièces, etc.
Remarque: Si vous avez déjà défini une relation clé primaire/clé étrangère entre deux tables, il est possible que vous ne
soyez pas capable de définir une colonne en tant que clé primaire, car elle pourrait avoir été déjà définie comme clé primaire,
ou à cause d'un conflit avec une autre relation.
4. Si vous avez sélectionné Contrainte de clé étrangère, la boîte de dialogue Contrainte de clé étrangère apparaît. Sélectionnez
les tables que vous voulez mettre en relation, en les choisissant dans les listes déroulantes Tables parent et Tables enfant.
5. Cliquez sur Colonnes clé pour sélectionner la colonne de clé primaire dans la liste.
6. Cliquez sur Colonnes clé étrangère pour sélectionner la colonne clé étrangère dans la liste.
Avertissement: Les colonnes clé primaire et clé étrangère doivent avoir le même type de données et contenir des valeurs
uniques. Les colonnes qui peuvent contenir des doublons ne sont pas un bon choix pour des clés primaires ou étrangères. Il
est fréquent de choisir le même nom de colonne pour les deux tables de votre relation clé primaire-étrangère.
Pour définir les relations entre tables dans l'ensemble de données
1. Une fois que vous avez défini les clés primaires pour chaque table de données, sélectionnez l'ensemble de données dans la
corbeille de composants si ce n'est pas déjà fait.
2. Cliquez sur le bouton points de suspension à côté de la propriété Relations dans l'inspecteur d'objets. Cela affiche la boîte
de dialogue Editeur de collection de relations vide.
3. Cliquez sur Ajouter. Cette opération affiche la boîte de dialogue Editeur de relation.
4. Dans les listes déroulantes Table parent et Table enfant, choisissez les tables que vous voulez mettre en relation.
5. Cliquez sur le champ Colonnes clé pour choisir une colonne de clé primaire dans la liste des noms de colonnes de la table
parent.
6. Cliquez dans le champ Colonnes clé étrangère pour choisir une colonne de clé étrangère dans la liste des noms de colonnes
de la table enfant.
Remarque: Si vous avez déjà effectué cette procédure pendant que vous définissiez les contraintes pour vos tables de
données, vous allez peut-être découvrir que toutes les valeurs appropriées sont déjà définies.
Avertissement: Les colonnes clé primaire et clé étrangère doivent avoir le même type de données et contenir des valeurs
uniques. Les colonnes qui peuvent contenir des doublons ne sont pas un bon choix pour des clés primaires ou étrangères. Il
est fréquent de choisir le même nom de colonne pour les deux tables de votre relation clé primaire-étrangère.
7. Cliquez sur OK.
8. Répétez la procédure pour définir des relations supplémentaires entre les mêmes tables de données.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
see page 22)
Conception d'une application de bases de données Windows Forms
Utilisation du concepteur de texte de commande (
see page 135)
137
2
Utilisation d'ensembles de données typés
RAD Studio pour .NET
Utilisation du concepteur éditeur de connexion (
see page 136)
Utilisation du concepteur adaptateur de données (
see page 136)
Utilisation de la prévisualisation d'adaptateur de données (
Utilisation d'ensembles de données typés (
2.1 Procédures de bases de données
see page 134)
see page 141)
2.1.19 Utilisation d'ensembles de données typés
Les ensembles de données typés offrent certains avantages sur les ensembles de données standard. D'une part, ils sont dérivés
d'une hiérarchie XML de la table de base de données cible. Le fichier XML contenant la description de l'ensemble de données
permet au système de fournir des possibilités étendues d'achèvement du code non disponibles lorsqu'on utilise des ensembles
de données standard. Le fait de typer fortement les méthodes, propriétés et événements de l'ensemble de données permet des
vérifications de type au moment de la compilation et peut apporter une amélioration des performances dans certaines
applications.
Pour créer un ensemble de données fortement typé
1. Dans l'explorateur de base de données, sélectionnez la source de données que vous voulez utiliser.
2. Glissez-déposez sur votre fiche le nom de la table de base de données que vous voulez utiliser. Cela affiche une icône
BdpConnection et une icône BdpDataAdapter dans la corbeille de composants.
3. Sélectionnez le BdpDataAdapter.
4. Cliquez sur le verbe de concepteur Configurer l'adaptateur de données dans la zone Verbe de concepteur en dessous de
l'inspecteur d'objets. Cela affiche la boîte de dialogue Configuration de l'adaptateur de données.
5. Modifiez l'instruction SQL préinitialisée si vous le désirez.
6. Cliquez sur OK.
Remarque: Ne créez pas un ensemble de données en sélectionnant l'onglet DataSet (Ensemble de données)
dans la boîte de dialogue Configurer l'adaptateur de données. Cet onglet concerne uniquement les ensembles de
données standard.
7. Cliquez sur le verbe de concepteur Générer l'ensemble de données typé dans la zone Verbe de concepteur en dessous
de l'inspecteur d'objets. Cette opération affiche la boîte de dialogue Générer l'ensemble de données.
8. Sélectionnez la table de base de données que vous voulez utiliser.
2
9. Cliquez sur OK. Cela crée une instance de DataSet typé et affiche une icône <nom DataSet>1 dans la corbeille de
composants. Par exemple, si votre ensemble de données est DataSet1, la nouvelle instance sera nommée dataSet11. Vous
constaterez également qu'un fichier XML .xsd et un nouveau fichier de programme apparaissent dans le gestionnaire de
projet sous votre projet.
Pour modifier l'apparence des colonnes
1. Après avoir créé un nouvel ensemble de données typé, faites glisser un composant DataGrid sur votre fiche.
2. Initialisez la propriété Datasource pour qu'elle pointe sur l'ensemble de données typé et la propriété DataMember pour qu'elle
pointe sur la table cible.
3. Cliquez sur l'entrée (Collection) située à côté de la propriété TableStyles. Cela affiche l'éditeur de collection
DataGridTableStyle.
4. Cliquez sur Ajouter pour ajouter un nouveau membre à la liste des membres.
5. Cliquez sur la liste déroulante située à côté de la propriété MappingName.
6. Cliquez sur l'entrée (Collection) située à côté de la propriété GridColumnStyles. Cela affiche l'éditeur de collection
138
2.1 Procédures de bases de données
RAD Studio pour .NET
Connexion à une base de données à l'aide
DataGridColumnStyle.
7. Cliquez sur Ajouter pour ajouter un nouvel élément à la liste des membres.
Remarque: Par défaut, l'élément est créé en tant que colonne de champ texte. Vous pouvez aussi développer le bouton
Ajouter
et sélectionner le champ BoolColumn si vous voulez un booléen.
8. Cliquez sur la propriété MappingName, sélectionnez la colonne que vous voulez afficher dans votre grille, puis changez toute
propriété supplémentaire voulue, y compris le titre qui apparaîtra comme titre de colonne dans la grille d'exécution.
9. Cliquez deux fois sur OK.
Remarque: Quand vous construisez et lancez l'application, seules les colonnes que vous avez définies explicitement en
suivant les étapes de cette procédure apparaissent.
Pour modifier la structure de l'ensemble de données
1. Dans le gestionnaire de projet, double-cliquez sur le fichier .xsd qui contient la définition XML de votre ensemble de
données.
2. Modifiez le fichier XML en fonction de la structure que vous souhaitez donner à l'ensemble de données. Vous pouvez modifier
les types de données, les noms et tout ce qui a trait à la structure.
3. Si le fichier de code du programme (<dataset>.cs ou <dataset>.pas) est ouvert dans l'éditeur de code, refermez-le
maintenant.
4. Choisissez Projet Compiler pour recompiler le fichier .xsd. Si vous rouvrez le fichier code du programme, vous vous
rendrez compte que le fichier contient les modifications que vous avez apportées au XML dans le fichier .xsd.
Pour définir la propriété Namespace d'un ensemble de données
1. Dans le gestionnaire de projet, double-cliquez sur le fichier .xsd qui contient la définition XML de votre ensemble de
données.
2. Recherchez la propriété targetNamespace.
3. Remplacez le texte suivant par un espace de nommage approprié :
http://www.changeme.now/DataSet1.xsd
4. Si le fichier de code du programme (<dataset>.cs ou <dataset>.pas) est ouvert dans l'éditeur de code, refermez-le
maintenant.
5. Choisissez Projet Compiler pour recompiler le fichier .xsd. Si vous rouvrez le fichier code du programme, vous vous
rendrez compte que la classe InitClass() contient à présent le nouvel espace de nommage.
Voir aussi
Présentation de ADO.NET (
see page 14)
Concepteurs de composants ADO.NET (
2
see page 22)
Conception d'une application de bases de données Windows Forms
Utilisation de l'éditeur de texte de commande (
see page 135)
Utilisation du concepteur éditeur de connexion (
see page 136)
Utilisation du concepteur adaptateur de données (
see page 136)
Utilisation de la prévisualisation d'adaptateur de données (
Utilisation des ensembles de données standard (
see page 134)
see page 137)
Utilisation des annotations avec un ensemble de données typé
139
Connexion à une base de données à l'aide
RAD Studio pour .NET
2.1 Procédures de bases de données
2.1.20 Connexion à une base de données à l'aide du
framework de pilote dbExpress
Cette procédure vous indique comment utiliser le framework de pilote dbExpress pour établir la connexion à une base de
données et lire ses enregistrements. Dans le code exemple, les fichiers ini dbExpress contiennent toutes les informations
relatives à la connexion de base de données particulière, telles que le pilote, le nom d'utilisateur, le mot de passe, etc.
Pour établir la connexion à une base de données et lire ses enregistrements
1. Configurez le fichier ini de connexions avec les informations relatives à la base de données auquelle vous allez vous
connecter. Ce paramétrage comprend le nom du pilote, le nom de l'utilisateur, le mot de passe, etc.
2. Obtient un objet TDBXConnectionFactory renvoyé par TDBXConnectionFactory.GetConnectionFactory.
3. Obtient un objet TDBXConnection renvoyé par TDBXConnectionFactory.GetConnection.
4. Ouvrez la connexion de base de données en appelant TDBXConnection.Open sur l'instance de TDBXConnection.
5. Obtient un objet TDBXCommand en appelant TDBXConnection.CreateCommand sur l'instance de TDBXConnection.
6. Définissez la propriété Text de TDBXCommand sur la commande SQL désirée. Appelez TDBXCommand.Prepare sur
l'instance de TDBXCommand.
7. Exécutez la requête SQL en appelant TDBXCommand.ExecuteQuery, qui renvoie une instance de TDBXReader.
8. Lisez le premier enregistrement de la base de données en appelant TDBXReader.Next. Appelez cette méthode pour
récupérer les enregistrements suivants de la base de données.
9. Récupérez toutes les informations souhaitées de la base de données. Par exemple, TDBXReader.GetColumnCount renvoie
le nombre de colonnes de la base de données. Les propriétés de TDBXReader, ValueType et Value, contiennent le type de
données et la valeur pour un numéro de colonne donné dans l'enregistrement en cours.
//
//
//
//
2
Cet exemple établit la connexion à une base de données avec les fichiers ini.
Ces fichiers doivent être configurés pour la base de données.
Lorsque la connexion est établie, l'exemple lit les valeurs et affiche
les valeurs ANSI des 100 premiers enregistrements dans une zone de liste.
// Obtient un TDBXConnection à l'aide d'un TDBXConnectionFactory.
// ConnectionName = section dans le fichier ini des connexions.
class function TForm1.BuildConnectionFromConnectionName(
ConnectionName: WideString): TDBXConnection;
var
ConnectionFactory: TDBXConnectionFactory;
ConnectionProps: TDBXProperties;
begin
ConnectionFactory := TDBXConnectionFactory.GetConnectionFactory;
ConnectionProps := ConnectionFactory.GetConnectionProperties(ConnectionName);
Result := ConnectionFactory.GetConnection(ConnectionProps,
ConnectionProps.Values[TDBXPropertyNames.UserName],
ConnectionProps.Values[TDBXPropertyNames.Password] );
end;
procedure Connect;
var
connection: TDBXConnection;
command: TDBXCommand;
reader:
TDBXReader;
value: TDBXValue;
valueType: TDBXValueType;
colCountStr: string;
i, j: Integer;
140
2.1 Procédures de bases de données
RAD Studio pour .NET
Construction d'une application de base de
numCols: integer;
ListBox1: TListBox;
const
sqlCommand = 'select * from employee';
begin
// Ouvrir la connexion à la base de données.
connection := BuildConnectionFromConnectionName('ConnectionName');
connection.Open;
// Obtenir la commande
command := connection.CreateCommand();
command.Text := sqlCommand;
// Exécuter la requête
command.Prepare;
reader := command.ExecuteQuery;
// Obtenir les valeurs de la base de données
if reader.Next then
begin
numCols := reader.GetColumnCount;
Str(numCols, colCountStr);
ListBox1.Items.Add('Nombre de colonnes = ' + colCountStr);
j := 1;
repeat
for i := 0 to reader.GetColumnCount - 1 do
begin
valueType := reader.ValueType[i];
if valueType.DataType = TDBXDataTypes.AnsiStringType then
begin
value := reader.Value[i];
ListBox1.Items.Add(valueType.Name + ' = ' +
value.GetString);
end
else
ListBox1.Items.Add(valueType.Name);
end;
Inc(j);
until (j > 100) or not reader.Next;
reader.Next;
end;
// Libérer les ressources
command.Free;
end;
2
2.1.21 Construction d'une application de base de données
distribuée
La gestion distante de données est fondamentale dans le cadre du développement d'applications de bases de données
distribuées. La technologie distante .NET offre un framework souple et extensible pour les communications inter-processus. La
gestion distante .NET permet d'interagir avec des objets situés dans des domaines d'applications différents, dans des processus
différents exécutés sur la même machine ou sur des machines différentes d'un même réseau.
A l'aide des composants RemoteServer et RemoteConnection, vous pouvez aisément migrer une application client/serveur
utilisant des composants DataHub et DataSync vers une application distante d'ensemble de données multi-niveau.
141
Construction d'une application de base de
RAD Studio pour .NET
2.1 Procédures de bases de données
RemoteServer implémente IDataService et se présente en tant qu'objet SAO (Server Activated Object) singleton. Côté client, les
propriétés RemoteConnection forment l'URL de connexion au RemoteServer. Channel indique le protocole à utiliser (TCP/IP ou
HTTP), Port indique le port sur lequel le RemoteServer écoute les requêtes, et URI désigne l'identificateur de ressource unique
du RemoteServer.
La construction d'une application distribuée comportant des composants distants se compose des étapes suivantes :
• Construire côté serveur une application Windows Forms possédant une ou plusieurs connexions à un fournisseur de données
BDP.NET, un composant DataSync destiné à collecter les connexions et définir le comportement de validation, et un
composant RemoteServer afin de définir le protocole et l'URI de communication avec les clients
• Construire côté client une application Windows Forms avec un composant RemoteConnection dont les propriétés indiquent la
connexion à l'application serveur, un composant DataHub de transmission de données vers et depuis un DataSet, ainsi qu'un
composant DataGrid pour l'affichage des données.
Remarque: Le composant RemoteServer est hébergé dans des applications Windows Forms sans nécessiter d'ajout manuel
de code.
Pour créer l'application côté serveur
1. Choisissez Fichier Nouveau Application Windows Forms pour Delphi pour .NET ou C#. Le concepteur Windows Forms
apparaît.
2. Choisissez Voir Explorateur de données pour accéder à l'explorateur de données, et développez l'arborescence de
l'explorateur de données pour exposer les fournisseurs et les tables de base de données à utiliser. Pour développer les
noeuds de fournisseur, vous devez disposer d'une connexion dynamique. Si vous ne disposez pas d'une connexion
dynamique, vous devrez probablement modifier la chaîne de connexion.
3. Faites glisser et déposez les tables d'un ou de plusieurs fournisseurs sur la fiche. Pour chaque table que vous déposez sur la
fiche, un BdpConnection et un BdpDataAdapter apparaissent dans la corbeille de composants. Si vous ajoutez plusieurs
tables du même fournisseur, vous pouvez conserver pour ce fournisseur un seul BdpConnection (et supprimer tous les
autres).
4. Configurez chaque composant BdpDataAdapter. Il est inutile de définir la propriété Active ou DataSet, car le DataSet sera
rempli par le composant DataHub côté client.
5. Faites glisser un composant DataSync sur la fiche à partir de la catégorie Fournisseur de données Borland de la palette
d'outils, et configurez les propriétés de DataSync suivantes dans l'inspecteur d'objets :
Propriété
Description
Providers
Indique une collection de DataProviders à utiliser en tant que sources de données. Cliquez sur le bouton
points de suspension pour ouvrir la boîte de dialogue Editeur de collection DataProvider et ajoutez un
DataProvider pour chaque table à fournir et à résoudre.
CommitBehavior Indique la logique (Atomic, Individual ou ForceIndividual) pour la gestion des échecs lors de la résolution.
2
6. Faites glisser un composant RemoteServer sur la fiche à partir de la catégorie Fournisseur de données Borland de la
palette d'outils, et configurez les propriétés de RemoteServer suivantes dans l'inspecteur d'objets :
Propriété
Description
DataSync
Indique le DataSync nécessitant la gestion distante de données. Sélectionnez le DataSync dans la liste
déroulante de l'inspecteur d'objets.
AutoStart
Indique s'il est nécessaire de démarrer automatiquement le serveur distant lors de l'exécution de l'application.
Définissez cette propriété par True.
ChannelType Indique le type de canal : Http (HTTP) ou Tcp (TCP/IP). Sélectionnez le type de canal dans la liste déroulante
de l'inspecteur d'objets.
Port
Indique le port que le serveur distant écoute. Entrez une nouvelle valeur ou acceptez la valeur du port par
défaut, 8000.
URI
Indique l'URI du serveur distant. Par défaut, la propriété URI contient la même valeur que la propriété Name.
142
2.1 Procédures de bases de données
RAD Studio pour .NET
Construction d'une application de base de
7. Choisissez Exécuter Exécuter pour lancer l'application côté serveur.
Pour créer l'application côté client
1. Choisissez Fichier Nouveau Application Windows Forms pour Delphi pour .NET ou C#. Le concepteur Windows Forms
apparaît.
2. Faites glisser un composant DataSet vers votre fiche à partir de la catégorie Composants de données de la palette
d'outils.
3. Faites glisser un composant DataGrid sur la fiche à partir de la catégorie Contrôles de données de la palette d'outils, puis
définissez la propriété DataSource du DataGrid par le nom du composant DataSet ajouté (dataSet1, par exemple).
4. Faites glisser un composant RemoteConnection sur la fiche à partir de la catégorie Fournisseur de données Borland de la
palette d'outils, et configurez les propriétés de RemoteConnection suivantes dans l'inspecteur d'objets :
Propriété
Description
ProviderType Indique le type de fournisseur publié par le serveur distant. Dans le cas présent, la propriété doit être réglée sur
Borland.Data.Provider.DataSync. Si le serveur distant s'exécute, vous pouvez sélectionner cette valeur dans
la liste déroulante. Sinon, vous devez entrer la valeur.
ChannelType Indique le type de canal : Http (HTTP) ou Tcp (TCP/IP). Sélectionnez le type de canal dans la liste déroulante
de l'inspecteur d'objets. Celui-ci doit correspondre à la valeur utilisée pour le serveur distant.
Host
Nom ou adresse IP du serveur distant.
Port
Indique le port que le serveur distant écoute. Entrez une nouvelle valeur ou acceptez la valeur du port par
défaut, 8000. Celui-ci doit correspondre à la valeur utilisée pour le serveur distant.
URI
Indique l'URI du serveur distant. Ceci doit correspondre à la propriété URI du composant RemoteServer dans
l'application du serveur distant.
5. Faites glisser un composant DataHub sur la fiche à partir de la catégorie Fournisseur de données Borland de la palette
d'outils, et configurez les propriétés de DataHub suivantes dans l'inspecteur d'objets :
Propriété Description
DataPort
Indique la source de données. Indique la propriété DataPort du composant RemoteConnection ajouté
(RemoteConnection1, par exemple).
DataSet
Indique le DataSet destiné à recevoir les données extraites de la source de données spécifiée. Définissez cette
propriété par le DataSet ajouté (dataSet1, par exemple).
6. Choisissez Exécuter Exécuter. L'application se compile et affiche un Windows Form comportant un composant DataGrid.
Voir aussi
Présentation de ADO.NET (
see page 14)
Fournisseurs de données pour .NET (
see page 27)
Concepteurs de composants ADO.NET (
2
see page 22)
Construction d'une application de base de données résolvant plusieurs tables (
see page 130)
143
Ajout d'une référence à un serveur COM
RAD Studio pour .NET
2.2 Procédures d'applications
2.2 Procédures d'applications interopérables
Cette section propose des informations relatives à la construction d'applications interopérables.
Rubriques
Nom
Ajout d'une référence J2EE (
Description
see page 148)
Ajout d'une référence à un serveur COM (
RAD Studio fournit un moyen de générer un assemblage .NET à partir d'une
archive J2EE. Après la création de l'assemblage, une référence est
automatiquement ajoutée à votre projet.
see page 148)
2.2.1 Ajout d'une référence J2EE
RAD Studio fournit un moyen de générer un assemblage .NET à partir d'une archive J2EE. Après la création de l'assemblage,
une référence est automatiquement ajoutée à votre projet.
Pour ajouter une référence J2EE
1. Dans le gestionnaire de projet, cliquez avec le bouton droit sur le noeud projet de niveau supérieur et choisissez Ajouter
une référence J2EE. La boîte de dialogue de sélection d'une archive J2EE s'affiche.
2. Dans cette boîte de dialogue, naviguez jusqu'au fichier .jar ou .ear )à partir duquel s'effectuera la génération de
l'assemblage .NET.
3. Dans la boîte de dialogue de sélection d'une archive J2EE, cliquez sur Ouvrir. La boîte de dialogue de sélection des
EJBs dans une liste s'affiche.
4. Dans cette boîte de dialogue, vous pouvez générer un assemblage pour tous les EJBs ou pour des EJBs individuels de
l'archive.
2.2.2 Ajout d'une référence à un serveur COM
Pour ajouter une référence à un serveur COM
2
1. Dans le gestionnaire de projet, cliquez avec le bouton droit de la souris sur le noeud de l'arborescence Références de votre
projet, puis sélectionnez Ajouter une référence.
2. Dans la boîte de dialogue Ajout d'une référence, cliquez sur l'onglet Imports COM. L'EDI va parcourir la base de registres
système pour rechercher toutes les bibliothèques de types et tous les serveurs COM recensés.
3. Sélectionnez les éléments que vous souhaitez référencer dans votre projet.
Conseil: Vous pouvez sélectionner individuellement plusieurs éléments de la liste en maintenant enfoncée la touche CTRL
pendant que vous cliquez sur chaque élément. Pour sélectionner une plage d'éléments, sélectionnez le premier élément,
puis maintenez la touche MAJ enfoncée pendant que vous sélectionnez le deuxième élément.
4. Cliquez sur le bouton Ajouter référence. Tous les éléments que vous avez sélectionnés apparaissent dans la liste Nouvelles
références dans la partie inférieure de la boîte de dialogue.
Conseil: Vous pouvez supprimer des éléments de la liste Nouvelles références
. Sélectionnez les éléments, puis cliquez sur le bouton Retirer.
144
2.2 Procédures d'applications
RAD Studio pour .NET
Ajout d'une référence à un serveur COM
5. Si le composant COM que vous souhaitez référencer n'apparaît pas dans la liste, cliquez sur le bouton Parcourir pour ajouter
une référence explicite à ce composant.
6. Dans la boîte de dialogue de sélection d'une référence, naviguez jusqu'au dossier contenant le composant.
7. Sélectionnez-le, puis cliquez sur Ouvrir.
8. Lorsque vous avez sélectionné tous les serveurs COM que vous vouliez ajouter, cliquez sur OK.
Lorsque vous avez cliqué sur le bouton OK dans la boîte de dialogue Ajout d'une référence, l'EDI génère des assemblages
d'interopérabilité pour chaque élément sélectionné, à moins qu'un assemblage PIA (Primary Interop Assembly) n'ait déjà été
créé. Ces assemblages s'appellent Interop.NomBiblio.dll, où NomBiblio est le nom de la bibliothèque de types du
composant (notez que ce nom peut différer du nom du fichier DLL du contrôle). Les assemblages générés sont stockés dans
un dossier appelé COMImports, dans le répertoire de votre projet. Chaque assemblage d'interopérabilité généré est
paramétré Copie locale, ce qui signifie qu'à la construction du projet, l'assemblage est automatiquement copié dans le dossier
cible de construction.
Il est possible que le dossier COMImports n'existe pas, par exemple si vous déplacez le projet sur une nouvelle machine ou si
vous le supprimez de la machine où il réside. Si le dossier COMImports n'existe pas lorsque le projet est rouvert, l'EDI le
recrée et régénère les assemblages d'interopérabilité. Pour que cela fonctionne, il faut d'abord recenser les serveurs COM
sur la machine sur laquelle le projet réside.
S'il existe un assemblage PIA pour le serveur COM, l'EDI ne génère pas de nouvel assemblage d'interopérabilité. Une référence
à l'assemblage PIA est simplement ajoutée et le paramètre Copie locale est désactivé, car les assemblages PIA sont
déployés dans le cache de l'assemblage global.
Remarque: Pour voir le paramètre Copie locale sur un assemblage référencé, cliquez avec le bouton droit de la souris sur
l'assemblage dans le Gestionnaire de projet
. Le paramètre Copie locale est un élément du menu contextuel. Le projet conservera toujours les références aux
assemblages d'interopérabilité, même si le dossier COMImports n'a pas pu être régénéré. Dans ce cas, le Gestionnaire de
projet mettra en évidence l'assemblage référencé pour indiquer qu'il n'existe pas actuellement sur la machine.
Voir aussi
Présentation de COM Interop (
see page 40)
Ajout d'un contrôle ActiveX à la palette des outils
2
145
Importation et exportation d'un modèle
RAD Studio pour .NET
2.3 Procédures de modélisation
2.3 Procédures de modélisation
Cette section propose des informations relatives à la modélisation des applications.
Rubriques
Nom
Description
Exportation d'un diagramme de visualisation de code en image (
see page 150) Vous pouvez exporter un diagramme de visualisation de code en image puis
ouvrir l'image dans n'importe quel visualiseur graphique qui prend en charge le
format de fichier bitmap Windows (.bmp).
Importation et exportation d'un modèle avec XMI (XML Metadata Interchange)
( see page 151)
RAD Studio prend en charge XMI version 1.1. Pour davantage d'informations sur
XMI ou pour télécharger la spécification complète, consultez le lien sur le site
Web de l'OMG à la fin de ce document.
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code (
see page 152)
Visualisation du code permet de visualiser et de parcourir la structure logique de
l'application, à l'inverse de la vue par fichiers du gestionnaire de projet.
Utilisation de la fenêtre Vue globale (
Les vastes modèles de production ne tiendront pas en totalité dans la fenêtre de
diagramme. Pour visualiser le diagramme, vous pouvez utiliser la fenêtre Vue
globale.
see page 153)
2.3.1 Exportation d'un diagramme de visualisation de code
en image
Vous pouvez exporter un diagramme de visualisation de code en image puis ouvrir l'image dans n'importe quel visualiseur
graphique qui prend en charge le format de fichier bitmap Windows (.bmp).
Pour exporter un diagramme vers une image
1. Ouvrez un projet.
2. Cliquez sur l'onglet Vue modèle.
3. Cliquez avec le bouton droit sur le noeud diagramme de l'arborescence et choisissez Exporter dans une image
4. Réglez les paramètres de zoom, si nécessaire.
5. Cliquez sur Enregistrer.
6. Nommez l'image et cliquez sur Enregistrer.
Voir aussi
2
Fonctionnalités UML dans Delphi pour .NET
Présentation des outils de modélisation intégrés
Présentation de la visualisation de code (
see page 57)
Importation et exportation d'un modèle avec XMI (
see page 151)
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code (
Utilisation de la fenêtre Vue globale (
see page 153)
Ajout de colonnes à un composant
Utilisation de l'éditeur d'expression OCL
146
see page 152)
2.3 Procédures de modélisation
RAD Studio pour .NET
Utilisation de la fenêtre Vue modèle et du
2.3.2 Importation et exportation d'un modèle avec XMI (XML
Metadata Interchange)
RAD Studio prend en charge XMI version 1.1. Pour davantage d'informations sur XMI ou pour télécharger la spécification
complète, consultez le lien sur le site Web de l'OMG à la fin de ce document.
Pour importer un modèle au format XMI
1. Exportez le modèle depuis l'outil de modélisation en utilisant le format XMI. Si vous exportez depuis Rational Rose,
choisissez XMI version 1.1 en utilisant l'extension Unisys.
2. Dans RAD Studio, choisissez Fichier Nouveau Autre.
3. Sélectionnez Application Windows Forms ECO dans la boîte de dialogue Nouveaux éléments.
Remarque: Au démarrage de la nouvelle application ECO, vous pouvez utiliser Delphi pour .NET ou C#.
4. Ouvrez la fenêtre Vue modèle, cliquez avec le bouton droit sur le noeud projet de niveau supérieur dans l'arborescence, puis
choisissez Importer le projet à partir de XMI.
5. Dans la boîte de dialogue Importation XMI, cliquez sur le bouton Parcourir pour sélectionner le fichier XMI exporté à l'étape
précédente.
6. Cliquez sur le bouton Importer dans la boîte de dialogue Importation XMI.
RAD Studio génère le code source Delphi ou C# gérant ECO pour les éléments du modèle dans les diagrammes de classes du
fichier XMI.
Pour exporter un modèle au format XMI
1. Ouvrez la fenêtre Vue modèle, cliquez avec le bouton droit sur le noeud projet de niveau supérieur dans l'arborescence, puis
choisissez Exporter le projet vers XMI.
2. Dans la boîte de dialogue Exportation XMI, sélectionnez la version XMI et le codage XMI appropriés pour l'outil que vous
utiliserez au final pour ouvrir le fichier modèle.
3. Cliquez sur le bouton Parcourir pour naviguer vers le dossier de destination.
4. Entrez un nom de fichier cible pour le fichier exporté.
5. Cliquez sur le bouton Exporter dans la boîte de dialogue Exportation XMI.
Voir aussi
Site Web de l'OMG (Object Management Group)
2
Fonctionnalités UML dans Delphi pour .NET
Présentation des outils de modélisation intégrés
Présentation de la visualisation de code (
see page 57)
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code (
Utilisation de la fenêtre Vue globale (
see page 152)
see page 153)
Ajout de colonnes à un composant
Utilisation de l'éditeur d'expression OCL
147
Utilisation de la fenêtre Vue modèle et du
RAD Studio pour .NET
2.3 Procédures de modélisation
2.3.3 Utilisation de la fenêtre Vue modèle et du diagramme
Visualisation du code
Visualisation du code permet de visualiser et de parcourir la structure logique de l'application, à l'inverse de la vue par fichiers du
gestionnaire de projet.
Pour afficher la fenêtre Vue modèle
1. Démarrez un nouveau projet ou chargez un projet existant.
2. Sélectionnez Voir Vue modèle. La fenêtre Vue modèle qui apparaît représente les éléments de votre projet dans une vue
arborescente.
Utilisation de la fenêtre Vue modèle avec les diagrammes de visualisation du code
Pour...
...Action
Afficher ou masquer des éléments Cliquez sur le signe plus (+) ou moins (-) en regard de l'icône de l'élément selon
imbriqués dans une interface, une classe ou que vous souhaitez afficher ou masquer les éléments imbriqués.
un package UML
Afficher un diagramme Visualisation du Développez l'icône espace de nommage ou unité ( ) et double-cliquez sur
code pour un espace de nommage .NET, l'icône diagramme ( ) dans l'arborescence vue modèle.
ou une unité Delphi
Afficher un diagramme Visualisation du Développez l'icône du projet ( ) dans l'arborescence Vue modèle, puis
double-cliquez sur l'icône du diagramme.
code pour le projet entier
Ouvrir l'éditeur de code source sur un Cliquez avec le bouton droit sur l'élément et choisissez Ouvrir le source. Notez
élément précis de l'arborescence Vue qu'un espace de nommage .NET peut couvrir plusieurs fichiers source. Il n'est
pas possible d'ouvrir un fichier source pour un espace de nommage directement
modèle
dans l'arborescence Vue modèle.
Ouvrir le diagramme Visualisation du code Cliquez avec le bouton droit sur l'élément et choisissez Afficher l'élément sur le
sur un élément précis de l'arborescence diagramme.
Vue modèle
Le diagramme Visualisation du code comporte un ensemble de fonctions permettant d'afficher des modèles importants,
d'afficher ou de masquer des attributs et des propriétés, etc., et de passer de la représentation graphique du diagramme
directement au code source de l'élément concerné.
Utilisation du diagramme Visualisation du code
2
Pour...
Réorganiser
diagramme
...Action
les
éléments
sur
le Cliquez sur l'élément et faites-le glisser vers un nouvel emplacement.
Afficher ou masquer les attributs, les Cliquez sur le signe plus (+) en regard de la catégorie (attributs, opérations, etc.) à
opérations, les propriétés et les types afficher. Cliquez sur le signe moins (-) pour masquer les éléments d'une catégorie
imbriqués d'un élément sur le précise.
diagramme
Disposer
automatiquement
éléments sur le diagramme
Imprimer le diagramme
148
les Cliquez avec le bouton droit n'importe où dans la fenêtre du diagramme
Visualisation du code, puis choisissez Disposition Effectuer une disposition
complète ou Disposition Optimiser les tailles.
Cliquez avec le bouton droit n'importe où dans la fenêtre du diagramme
Visualisation du code, puis choisissez Imprimer.
2.3 Procédures de modélisation
RAD Studio pour .NET
Utilisation de la fenêtre Vue globale
Ouvrir l'éditeur de code source sur Cliquez avec le bouton droit sur l'élément et choisissez Atteindre la définition.
un élément précis du diagramme
Visualisation du code
Enregistrer
qu'image
le
diagramme
en
tant Cliquez avec le bouton droit n'importe où dans la fenêtre du diagramme
Visualisation du code, puis choisissez Exporter dans une image.
Remarque: A l'exception des liens Présentation de la visualisation de code et Utilisation de la fenêtre Vue globale, les liens
ci-dessous sont uniquement disponibles dans l'édition Architect de RAD Studio.
Voir aussi
Présentation de la visualisation de code (
Utilisation de la fenêtre Vue globale (
see page 57)
see page 153)
Fonctionnalités UML dans Delphi pour .NET
Présentation des outils de modélisation intégrés
Importation et exportation d'un modèle avec XMI (
see page 151)
Conception d'une interface utilisateur gérant ECO
Ajout de colonnes à un composant
Utilisation de l'éditeur d'expression OCL
2.3.4 Utilisation de la fenêtre Vue globale
Les vastes modèles de production ne tiendront pas en totalité dans la fenêtre de diagramme. Pour visualiser le diagramme, vous
pouvez utiliser la fenêtre Vue globale.
Pour parcourir le modèle à l'aide de la fenêtre Vue globale
1. Cliquez sur le bouton Vue globale dans le coin inférieur droit du diagramme. Une vue miniature du diagramme complet
s'affiche dans sa fenêtre dimensionnable. Un rectangle plus petit dans la fenêtre Vue globale contient la partie du modèle
actuellement affichée sur le diagramme.
2. Cliquez sur le rectangle mobile et faites-le glisser dans la fenêtre Vue globale pour naviguer dynamiquement jusqu'à la partie
du diagramme à visualiser.
3. Cliquez n'importe où hors de la fenêtre Vue globale pour la refermer.
Conseil: La fenêtre Vue globale
2
possède une poignée de dimensionnement dans son angle supérieur gauche. Cliquez sur cette poignée et faites-la glisser
pour redimensionner la fenêtre Vue globale. Lors de cette opération, la taille du contenu est adaptée à la nouvelle taille de la
fenêtre.
Le redimensionnement est utile quand la taille du modèle ne permet pas de lire le texte de la représentation miniature dans la
fenêtre Vue globale.
Remarque: A l'exception des liens Présentation de la visualisation de code et Utilisation de la fenêtre Vue modèle et du
diagramme Visualisation du code, les liens ci-dessous sont uniquement disponibles dans l'édition Architect de RAD Studio.
Voir aussi
Présentation de la visualisation de code (
see page 57)
Utilisation de la fenêtre Vue modèle et du diagramme Visualisation du code (
see page 152)
149
Utilisation de la fenêtre Vue globale
RAD Studio pour .NET
Fonctionnalités UML dans Delphi pour .NET
Présentation des outils de modélisation intégrés
Importation et exportation d'un modèle avec XMI (
Ajout de colonnes à un composant
Utilisation de l'éditeur d'expression OCL
2
150
see page 151)
2.3 Procédures de modélisation
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
Cette section propose des informations relatives au développement d'applications VCL pour .NET.
Rubriques
Nom
Description
Construction d'applications Fiches VCL avec graphiques (
see page 158)
Chacune des procédures ci-dessous permet de construire une application Fiche
VCL qui utilise des graphiques. Construisez un ou plusieurs exemples. *
1. Dessin de lignes droites.
2. Dessin de rectangles et d'ellipses.
3. Dessin d'un polygone.
4. Affichage d'une image bitmap.
5. Ajout d'un bitmap dans une boîte à options.
Construction d'une application Fiches VCL.NET de base de données ADO.NET
( see page 158)
La procédure suivante indique comment construire une application de base de
données ADO.NET.
La construction d'une application Fiches VCL ADO.NET comprend les étapes
principales suivantes :
1. Définition de la connexion à la base de données.
2. Définition de l'ensemble de données.
3. Installation du fournisseur de données, de l'ensemble de
données client et de la source de données.
4. Connexion d'une grille de données aux composants
connexion.
5. Exécution de l'application.
Construction d'une application Fiches VCL (
see page 160)
Création d'actions dans une application Fiches VCL (
see page 160)
La procédure suivante illustre les étapes essentielles de la construction d'une
application Fiches VCL avec RAD Studio.
Dans RAD Studio, les procédures suivantes illustrent comment créer des actions
avec l'outil ActionList. Vous allez configurer une application simple et créer un
menu Edition avec les actions Couper et Coller pour couper et coller un mémo.
La création d'une application VCL comprend les étapes principales suivantes :
1. Ajout d'un menu principal, d'une liste d'actions et d'outils
mémo à une fiche.
2. Création des actions Couper et Coller.
3. Ajout des actions au menu principal et association à la
catégorie d'actions d'édition.
2
4. Construction et exécution de l'application.
Construction d'une application Fiches VCL Hello World (
see page 162)
L'application Fiches VCL Hello World illustre les étapes essentielles de la
création d'une application Fiches VCL. L'application utilise une fiche VCL, un
contrôle et un événement, et affiche une boîte de dialogue en réponse à une
action de l'utilisateur.
La création de l'application Hello World comprend les étapes suivantes :
1. Création d'une fiche VCL.NET avec un contrôle bouton.
2. Ecriture du code pour afficher "Hello World" quand
l'utilisateur clique sur le bouton.
3. Exécution de l'application.
151
RAD Studio pour .NET
Utilisation de ActionManager pour créer des actions dans une application Fiches
VCL ( see page 163)
2.4 Procédures VCL pour .NET
Dans RAD Studio, la procédure suivante illustre comment créer des actions avec
ActionManager. Elle configure une interface utilisateur simple avec une zone de
texte, adaptée à une application d'édition de texte, et explique comment créer un
élément de menu fichier avec une action d'ouverture de fichier.
La construction d'une application VCL avec ActionManager comprend les étapes
principales suivantes :
1. Ajout d'une action d'ouverture de fichier au composant
ActionManager sur une fiche.
2. Création du menu principal.
3. Ajout de l'action au menu.
4. Construction et exécution de l'application.
Conception d'une application Fiches VCL de bases de données dbExpress.NET
( see page 164)
Les procédures suivantes indiquent comment construire une application de base
de données dbExpress.
La construction d'une application Fiches VCL dbExpress.NET comprend les
étapes principales suivantes :
1. Définition de la connexion à la base de données.
2. Installation de l'ensemble de données unidirectionnel.
3. Installation du fournisseur de données, de l'ensemble de
données client et de la source de données.
4. Connexion d'une grille de données aux composants
connexion.
5. Exécution de l'application.
Construction d'une application avec des composants XML (
see page 165)
Modifications requises en raison du support 64 bits .NET 2.0 (
see page 167)
Cet exemple crée une application Fiches VCL qui utilise un composant
XMLDocument pour afficher le contenu d'un fichier XML.
Des changements ont été apportés afin de prendre en charge .NET 2.0 64 bits.
Ces changements peuvent nécessiter des modifications de code mineures afin
que les applications existantes fonctionnent correctement. Ce document décrit
ces modifications en détail. Il existe deux zones générales :
1. Patterns de code modifiés
2. Déclarations de l'API Windows pour certains callbacks et
enregistrements
Avertissement: Ces modifications sont nécessaires en
raison des changements apportés pour la prise en charge
des systèmes 64 bits. Elles doivent être effectuées pour
les applications conçues pour les systèmes 32 bits et 64
bits.
Création d'un nouveau composant VCL .NET (
see page 170)
Affichage d'une image bitmap dans une application Fiches VCL (
2
Vous pouvez utiliser l'expert Nouveau composant VCL pour créer un nouveau
composant VCL .NET et l'ajouter à la palette d'outils.
see page 171) Ces procédures chargent une image bitmap à partir d'un fichier et l'affichent sur
une fiche VCL.
1. Création d'une fiche VCL avec un contrôle bouton.
2. Fourniture d'une image bitmap.
3. Codage du gestionnaire d'événement onClick du bouton
pour charger et afficher une image bitmap.
4. Construction et exécution de l'application.
Dessin de rectangles et d'ellipses dans une application Fiches VCL (
172)
see page
Ces procédures dessinent un rectangle et une ellipse dans une fiche VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche
pour dessiner un rectangle et une ellipse.
3. Construction et exécution de l'application.
152
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Dessin d'un rectangle arrondi dans une application Fiches VCL (
Construction d'applications Fiches VCL
see page 173) Ces procédures dessinent un rectangle arrondi dans une fiche VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche
pour dessiner un polygone.
3. Construction et exécution de l'application.
Dessin de lignes droites dans une application Fiches VCL (
see page 173)
Ces procédures dessinent deux diagonales droites sur une image dans une fiche
VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche
pour dessiner les lignes droites.
3. Construction et exécution de l'application.
Insertion d'une image bitmap dans un contrôle d'une application Fiches VCL (
see page 174)
Ces procédures ajoutent une image bitmap à une boîte à options d'une
application Fiches VCL.
1. Création d'une fiche VCL.
2. Ajout de composants à la fiche.
3. Définition des propriétés des composants dans
l'inspecteur d'objets.
4. Ecriture des gestionnaires d'événements pour l'action de
dessin des composants.
5. Construction et exécution de l'application.
Importation de contrôles .NET dans VCL.NET (
see page 176)
Dans certains cas, vous souhaiterez peut-être utiliser des composants .NET sur
vos fiches VCL.NET. Il n'existe pas de moyen direct d'utiliser des composants
.NET. Vous pouvez en revanche envelopper les composants dans une
enveloppe ActiveX, que vous pouvez ensuite ajouter à votre application
VCL.NET. Pour ce faire, RAD Studio propose l'expert Importation .NET.
2.4.1 Construction d'applications Fiches VCL avec
graphiques
Chacune des procédures ci-dessous permet de construire une application Fiche VCL qui utilise des graphiques. Construisez un
ou plusieurs exemples. *
1. Dessin de lignes droites.
2. Dessin de rectangles et d'ellipses.
2
3. Dessin d'un polygone.
4. Affichage d'une image bitmap.
5. Ajout d'un bitmap dans une boîte à options.
Voir aussi
Présentation de VCL.NET (
see page 76)
Dessin de lignes droites dans une application VCL (
see page 173)
Dessin de rectangles et d'ellipses dans une application VCL (
see page 172)
Dessin d'un rectangle arrondi dans une application VCL (
see page 173)
Affichage d'une image bitmap dans une application VCL (
see page 171)
153
Construction d'une application Fiches
RAD Studio pour .NET
Insertion d'une image bitmap dans une boîte à options d'une application VCL (
2.4 Procédures VCL pour .NET
see page 174)
2.4.2 Construction d'une application Fiches VCL.NET de
base de données ADO.NET
La procédure suivante indique comment construire une application de base de données ADO.NET.
La construction d'une application Fiches VCL ADO.NET comprend les étapes principales suivantes :
1. Définition de la connexion à la base de données.
2. Définition de l'ensemble de données.
3. Installation du fournisseur de données, de l'ensemble de données client et de la source de données.
4. Connexion d'une grille de données aux composants connexion.
5. Exécution de l'application.
Pour ajouter un composant connexion ADO
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL. Le concepteur de fiches
VCL apparaît.
2. A partir de la catégorie dbGO de la palette d'outils, placez un composant TADOConnection sur la fiche.
3. Double-cliquez sur le composant TADOConnection pour afficher la boîte de dialogue Chaîne de connexion.
4. Si nécessaire, sélectionnez Utiliser la chaîne de connexion, puis cliquez sur le bouton Construire pour afficher la boîte de
dialogue Propriétés des liaisons.
5. Sur la page Fournisseur de la boîte de dialogue, sélectionnez Fournisseur Microsoft Jet 4.0 OLE DB puis cliquez sur le
bouton Suivant pour afficher la page Connexion.
6. Sur la page Connexion, cliquez sur le bouton points de suspension pour naviguer jusqu'à la base de données
dbdemos.mdb. Le chemin d'accès par défaut de cette base de données est C:\Program Files\Fichiers
communs\Borland Shared\Data.
7. S'il n'est pas déjà rempli, entrez Admin dans le champ Nom d'utilisateur et cochez la case Mot de passe vide.
8. Cliquez sur Tester la connexion pour confirmer la connexion. L'état de la connexion s'affiche dans une boîte de dialogue.
9. Cliquez deux fois sur OK pour fermer les boîtes de dialogue Propriétés de liaison et Chaîne de connexion.
Pour configurer l'ensemble de données
1. A partir de la catégorie dbGO, double-cliquez sur un composant TADODataSet pour le placer sur la fiche.
2
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété Connection de la catégorie Liaisons sur
ADOConnection1.
3. Affectez une commande SQL à la propriété CommandText ; par exemple, Select * from orders. Vous pouvez soit taper
l'instruction Select dans l'inspecteur d'objets, soit cliquer sur les points de suspension à droite de CommandText pour
afficher l'éditeur de texte de commande, dans lequel vous pouvez construire votre propre instruction de requête.
Conseil: Si vous avez besoin d'une assistance particulière lorsque vous utilisez l'éditeur de CommandText
, cliquez sur le bouton Aide ou appuyez sur la touche F1.
4. Définissez la propriété Active sur True pour ouvrir l'ensemble de données. Vous êtes invité à vous connecter.
5. Entrez Admin comme nom d'utilisateur.
6. Laissez le champ du mot de passe vide.
154
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Construction d'une application Fiches VCL
Pour ajouter le fournisseur
1. Dans la catégorie Accès aux données de la palette d'outils, double-cliquez sur un composant TDataSetProvider pour le
placer en haut de la fiche.
2. Dans l'inspecteur d'objets, définissez la propriété DataSet sur la valeur ADODataSet1.
Pour ajouter l'ensemble de données client
1. Dans la catégorie Accès aux données de la palette d'outils, double-cliquez sur un composant TClientDataSet pour le
placer à droite du composant DataSetProvider sur la fiche.
2. Dans l'inspecteur d'objets, définissez la propriété ProviderName sur DataSetProvider1.
3. Définissez la propriété Active sur True pour permettre la transmission des données à votre application. Une source de
données se connecte à l'ensemble de données client par des contrôles orientés données. Chaque contrôle orienté données
doit être associé à un composant source de données afin de pouvoir afficher et manipuler des données. De même, tous les
ensembles de données doivent être associés à un composant source de données afin que leurs données puissent être
affichées et manipulées dans les contrôles orientés données de la fiche.
Pour ajouter la source de données
1. Dans la catégorie Accès aux données de la palette d'outils, double-cliquez sur un composant TDataSource pour le placer à
droite du composant ClientDataSet sur la fiche.
2. Dans l'inspecteur d'objets, définissez la propriété DataSet sur ClientDataSet1.
Pour connecter un DataGrid au DataSet
1. Dans la catégorie Contrôles de données de la palette d'outils, double-cliquez sur un composant TDBGrid pour le placer sur
la fiche.
2. Dans l'inspecteur d'objets, définissez la propriété DataSource sur DataSource1.
3. Sélectionnez Exécuter Exécuter. Vous êtes invité à vous connecter.
4. Entrez Admin comme nom d'utilisateur.
5. Laissez le champ du mot de passe vide.
6. Cliquez sur OK. L'application se compile et affiche une fiche VCL comportant un composant DBGrid.
Voir aussi
Présentation de VCL.NET (
see page 76)
Conception d'une application Fiches VCL de bases de données dbExpress.NET (
see page 164)
2.4.3 Construction d'une application Fiches VCL
2
La procédure suivante illustre les étapes essentielles de la construction d'une application Fiches VCL avec RAD Studio.
Pour créer une fiche VCL
1. Choisissez Fichier Nouveau Autre. La boîte de dialogue Nouveaux éléments apparaît.
2. Sélectionnez Projets Delphi pour .NET.
3. Double-cliquez sur Application Fiches VCL. Le concepteur de fiches VCL apparaît.
4. A partir de la palette d'outils, placez des composants sur la fiche pour créer l'interface utilisateur.
5. Ecrivez le code des contrôles.
155
Création d'actions dans une application
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
Pour associer du code à un contrôle
1. Double-cliquez sur un composant de la fiche. L'éditeur de code apparaît, avec le curseur dans le bloc de code du
gestionnaire d'événement.
2. Codez la logique de votre application.
3. Enregistrez et compilez l'application.
Voir aussi
Présentation de VCL.NET (
see page 76)
2.4.4 Création d'actions dans une application Fiches VCL
Dans RAD Studio, les procédures suivantes illustrent comment créer des actions avec l'outil ActionList. Vous allez configurer
une application simple et créer un menu Edition avec les actions Couper et Coller pour couper et coller un mémo.
La création d'une application VCL comprend les étapes principales suivantes :
1. Ajout d'un menu principal, d'une liste d'actions et d'outils mémo à une fiche.
2. Création des actions Couper et Coller.
3. Ajout des actions au menu principal et association à la catégorie d'actions d'édition.
4. Construction et exécution de l'application.
Pour ajouter le menu principal, la liste d'actions et le mémo à une fiche
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL pour créer une nouvelle fiche.
2. Cliquez sur l'onglet Conception pour passer au concepteur de fiches VCL.
3. Dans la catégorie Standard de la palette d'outils, placez un composant TMainMenu, TActionList et TMemo sur la fiche.
Pour créer les actions
1. Double-cliquez sur ActionList1 dans la fiche. L'éditeur ActionList s'affiche.
2. Sélectionnez Nouvelle action standard dans la liste déroulante pour afficher la boîte de dialogue Classes d'actions
standard.
3. Faites défiler la liste jusqu'à l'action TEditCut, sélectionnez-la puis cliquez sur OK. EditCut1 s'affiche dans la liste Actions de
l'éditeur.
2
4. Sélectionnez Nouvelle action standard dans la liste déroulante pour afficher la boîte de dialogue Classes d'actions
standard.
5. Faites défiler la liste jusqu'à l'action TEditPaste, sélectionnez-la puis cliquez sur OK. EditPaste1 s'affiche dans la liste
Actions de l'éditeur.
6. Fermez la fenêtre de l'éditeur ActionList.
Pour ajouter les actions Couper et Coller à la catégorie Edition du menu principal
1. Double-cliquez sur MainMenu1 dans la fiche. L'éditeur MainMenu1 s'affiche avec la première catégorie de commande vide
sélectionnée.
2. Dans l'inspecteur d'objets, entrez Edition pour la propriété Caption puis appuyez sur la touche ENTREE. Edition
apparaît comme première catégorie de commandes.
3. Cliquez sur Edition pour afficher une action vide sous cette catégorie.
4. Cliquez sur l'action vide pour la sélectionner.
156
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Construction d'une application Fiches VCL
5. Dans l'inspecteur d'objets, sélectionnez EditCut1 dans la liste déroulante d'actions de la propriété Action, située dans la
catégorie Liaison.
6. Si elle n'est pas déjà remplie, développez la liste des propriétés Action, entrez Couper pour la propriété Caption, Edition
pour la catégorie, puis appuyez sur Entrée. Couper apparaît comme première action.
7. Dans l'éditeur MainMenu1, cliquez sur la seconde action vide sous Couper pour la sélectionner.
8. Dans l'inspecteur d'objets, sélectionnez EditPaste dans la liste déroulante d'actions de la propriété Action, située dans la
catégorie Liaison.
9. Développez la liste des propriétés Action, entrez Coller pour la propriété Caption, Edition pour la catégorie, puis appuyez
sur Entrée. Coller apparaît comme seconde action.
Pour construire et exécuter l'application
1. Enregistrez tous les fichiers du projet.
2. Choisissez Exécuter Exécuter. L'application s'exécute et affiche une fiche avec la barre de menus principale et le menu
Edition.
3. Dans l'application, sélectionnez le texte du mémo.
4. Choisissez Edition Couper. Le texte est coupé du mémo.
5. Choisissez Edition Coller. Le texte est collé dans le mémo.
Voir aussi
Présentation de VCL.NET (
see page 76)
Construction d'une application Fiches VCL (
see page 160)
2.4.5 Construction d'une application Fiches VCL Hello World
L'application Fiches VCL Hello World illustre les étapes essentielles de la création d'une application Fiches VCL. L'application
utilise une fiche VCL, un contrôle et un événement, et affiche une boîte de dialogue en réponse à une action de l'utilisateur.
La création de l'application Hello World comprend les étapes suivantes :
1. Création d'une fiche VCL.NET avec un contrôle bouton.
2. Ecriture du code pour afficher "Hello World" quand l'utilisateur clique sur le bouton.
3. Exécution de l'application.
Pour créer une fiche VCL
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL. Le concepteur de fiches
VCL apparaît.
2
2. Cliquez sur l'onglet Conception pour passer à la vue Fiche.
3. Dans la catégorie Standard de la palette d'outils, placez un composant TButton sur la fiche.
Pour afficher la chaîne "Hello World"
1. Sélectionnez Button1 sur la fiche.
2. Dans l'inspecteur d'objets, double-cliquez sur le gestionnaire d'événement OnClick de l'onglet Evénements. L'éditeur de
code s'affiche, avec le curseur placé dans le bloc du gestionnaire d'événement TForm1.Button1Click.
3. Placez le curseur avant le mot réservé begin, puis appuyez sur la touche Entrée. Cette action crée une nouvelle ligne
au-dessus du bloc de code.
4. Placez le curseur sur la nouvelle ligne créée, puis tapez la déclaration de variable suivante :
157
Utilisation de ActionManager pour créer
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
var s: string;
5. Placez le curseur dans le bloc de code, puis tapez le code suivant :
s:= 'Hello World!';
ShowMessage(s);
Pour exécuter l'application "Hello World"
1. Enregistrez les fichiers de votre projet.
2. Choisissez Exécuter Exécuter pour construire et exécuter l'application. La fiche apparaît avec un bouton appelé Button1.
3. Cliquez sur Button1. Une boîte de dialogue affiche le message "Hello World!".
4. Cliquez sur OK pour fermer le message.
5. Fermez la fiche VCL pour revenir à l'EDI.
Voir aussi
Présentation de VCL.NET (
see page 76)
Construction d'une application Fiches VCL (
see page 160)
2.4.6 Utilisation de ActionManager pour créer des actions
dans une application Fiches VCL
Dans RAD Studio, la procédure suivante illustre comment créer des actions avec ActionManager. Elle configure une interface
utilisateur simple avec une zone de texte, adaptée à une application d'édition de texte, et explique comment créer un élément de
menu fichier avec une action d'ouverture de fichier.
La construction d'une application VCL avec ActionManager comprend les étapes principales suivantes :
1. Ajout d'une action d'ouverture de fichier au composant ActionManager sur une fiche.
2. Création du menu principal.
3. Ajout de l'action au menu.
4. Construction et exécution de l'application.
Pour ajouter une action d'ouverture de fichier à ActionManager
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL pour créer une nouvelle fiche.
2. A partir de la page Supplément de la palette d'outils, ajoutez un composant TActionManager sur la fiche.
2
3. Double-cliquez sur le composant TActionManager pour afficher l'éditeur Gestionnaire d'action.
Conseil: Pour afficher les libellés des composants non visuels comme TActionManager, choisissez Outils->Options
d'environnement
. Sur l'onglet Concepteur, cochez Afficher les libellés des composants et cliquez sur OK.
4. Au besoin, cliquez sur l'onglet Actions.
5. Sélectionnez Nouvelle action standard dans la liste déroulante pour afficher la boîte de dialogue Classes d'actions
standard.
6. Faites défiler jusqu'à la catégorie Fichier et cliquez sur l'action TFileOpen.
7. Cliquez sur OK pour fermer la boîte de dialogue.
8. Dans l'éditeur Gestionnaire d'actions, sélectionnez la catégorie Fichier. Ouvrir... s'affiche dans la boîte liste Actions : .
158
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Conception d'une application Fiches VCL
9. Cliquez sur Fermer pour fermer l'éditeur.
Pour créer le menu principal et y ajouter l'action Fichier
1. A partir de la page Supplément de la palette d'outils, placez un composant TActionMainMenuBar sur la fiche.
2. Ouvrez l'éditeur Gestionnaire d'actions et sélectionnez la catégorie Fichier dans la zone de liste Catégories.
3. Faites glisser Fichier sur la barre de menus vide. Fichier apparaît dans la barre de menus.
4. Cliquez sur Fermer pour fermer l'éditeur.
Pour construire et exécuter l'application
1. Sélectionnez Exécuter Exécuter. L'application s'exécute et affiche une fiche avec la barre de menus principale et le menu
Fichier.
2. Sélectionnez Fichier Ouvrir. La boîte de dialogue d'ouverture de fichier s'affiche.
Voir aussi
Présentation de VCL.NET (
see page 76)
Construction d'une application Fiches VCL (
see page 160)
2.4.7 Conception d'une application Fiches VCL de bases de
données dbExpress.NET
Les procédures suivantes indiquent comment construire une application de base de données dbExpress.
La construction d'une application Fiches VCL dbExpress.NET comprend les étapes principales suivantes :
1. Définition de la connexion à la base de données.
2. Installation de l'ensemble de données unidirectionnel.
3. Installation du fournisseur de données, de l'ensemble de données client et de la source de données.
4. Connexion d'une grille de données aux composants connexion.
5. Exécution de l'application.
Pour ajouter un composant de connexion dbExpress
1. Choisissez Fichier Nouveau Application Fiches VCL. Le concepteur de fiches VCL apparaît.
2. A partir de la catégorie dbExpress de la palette d'outils, placez un composant TSQLConnection sur la fiche.
2
3. Double-cliquez sur le composant TSQLConnection pour afficher l'éditeur de connexion.
4. Dans l'éditeur de connexion, définissez la liste Nom de connexion sur IBConnection.
5. Dans la zone Paramètres de connexion, indiquez dans le champ Base de données le chemin d'accès au fichier de base
de données InterBase appelé employee.gdb. Par défaut, le fichier se trouve dans C:\Program Files\Fichiers
communs\CodeGear Shared\Data.
6. Acceptez la valeur des champs Nom d'utilisateur (sysdba) et Mot de passe (masterkey).
7. Pour tester la connexion, cliquez sur le bouton représenté par une coche (situé juste au-dessus de la liste Nom de
connexion).
Remarque: Par défaut, vous êtes invité à vous connecter. Utilisez le mot de passe masterkey. Si la connexion fonctionne, un
message de confirmation apparaît. Si vous ne parvenez pas à vous connecter à la base de données, vérifiez que vous avez
installé InterBase et que le serveur est démarré.
159
Construction d'une application avec des
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
8. Cliquez sur OK pour fermer l'éditeur de connexions et enregistrer les modifications.
Pour configurer l'ensemble de données unidirectionnel
1. Dans la catégorie dbExpress de la palette d'outils, placez un composant TSQLDataSet en haut de la fiche.
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété SQLConnection sur SQLConnection1.
3. Affectez une commande SQL à la propriété CommandText ; par exemple, Select * from sales. Pour la commande
SQL, vous pouvez soit taper une instruction Select dans l'inspecteur d'objets, soit cliquer sur les points de suspension à
droite de CommandText pour afficher l'éditeur de texte de commande, dans lequel vous pouvez construire votre propre
instruction de requête.
Conseil: Si vous avez besoin d'une assistance particulière lorsque vous utilisez l'éditeur de texte de commande
, cliquez sur le bouton Aide ou appuyez sur la touche F1.
4. Dans l'inspecteur d'objets, définissez la propriété Active sur True pour ouvrir l'ensemble de données
Pour ajouter le fournisseur
1. Dans la catégorie Accès aux données de la palette d'outils, placez un composant TDataSetProvider en haut de la fiche.
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété DataSet sur SQLDataSet1.
Pour ajouter l'ensemble de données client
1. Dans la catégorie Accès aux données de la palette d'outils, placez un composant TClientDataSet à droite du composant
DataSetProvider sur la fiche.
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété ProviderName sur DataSetProvider1.
3. Définissez la propriété Active sur True pour permettre la transmission des données à votre application.
Une source de données se connecte à l'ensemble de données client par des contrôles orientés données. Chaque contrôle
orienté données doit être associé à un composant source de données afin de pouvoir afficher et manipuler des données. De
même, tous les ensembles de données doivent être associés à un composant source de données afin que leurs données
puissent être affichées et manipulées dans les contrôles orientés données de la fiche.
Pour ajouter la source de données
1. Dans la catégorie Accès aux données de la palette d'outils, placez un composant TDataSource à droite du composant
ClientDataSet sur la fiche.
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété DataSet sur ClientDataSet1.
Pour connecter un DataGrid au DataSet
1. Dans la catégorie Contrôles de données de la palette d'outils, placez un composant TDBGrid sur la fiche.
2
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété DataSource sur DataSource1.
3. Enregistrez tous les fichiers du projet.
4. Sélectionnez Exécuter Exécuter. Vous êtes invité à saisir un mot de passe.
5. Entrez masterkey comme mot de passe. L'application se compile et affiche une fiche VCL.NET comportant un composant
DBGrid.
Voir aussi
Présentation de VCL.NET (
160
see page 76)
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Construction d'une application avec des
2.4.8 Construction d'une application avec des composants
XML
Cet exemple crée une application Fiches VCL qui utilise un composant XMLDocument pour afficher le contenu d'un fichier XML.
Les étapes de base sont les suivantes :
1. Création d'un document XML.
2. Création d'une fiche VCL.
3. Positionnement d'un composant XMLDocument sur la fiche et association au fichier XML.
4. Création de composants VCL pour permettre l'affichage du contenu du fichier XML.
5. Ecriture de gestionnaires d'événements pour afficher le contenu des noeuds enfants XML.
6. Compilez l'application et exécutez-la.
Pour créer le document XML
1. Copiez le texte ci-dessous dans un fichier dans un éditeur de texte.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE StockHoldings [
<!ELEMENT StockHoldings (Stock+)>
<!ELEMENT Stock (name)>
<!ELEMENT Stock (price)>
<!ELEMENT Stock (symbol)>
<!ELEMENT Stock (shares)>
]>
<StockHoldings>
<Stock exchange="NASDAQ">
<name>Borland</name>
<price>10.375</price>
<symbol>BORL</symbol>
<shares>100</shares>
</Stock>
<Stock exchange="NYSE">
<name>MyCompany</name>
<price>8.75</price>
<symbol>MYCO</symbol>
<shares type="preferred">25</shares>
</Stock>
</StockHoldings>
2
2. Enregistrez le fichier sur votre disque local en tant que document XML. Donnez-lui un nom semblable à stock.xml.
3. Ouvrez le document dans votre navigateur. Le contenu devrait s'afficher sans erreur.
Remarque: Dans le navigateur, vous pouvez choisir Voir->Source
pour consulter le fichier source dans l'éditeur de texte.
Pour créer une fiche avec un composant XMLDocument
1. Démarrez un nouveau projet.
2. Choisissez Fichier Nouveau Autre.
3. Dans la boîte de dialogue Nouveaux éléments, sélectionnez Projets Delphi pour .NET.
161
Modifications requises en raison du
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
4. Double-cliquez sur Application Fiches VCL. Le concepteur de fiches VCL apparaît.
5. A partir de la catégorie Internet de la palette d'outils, placez un composant TXMLDocument sur la fiche.
6. Dans l'inspecteur d'objets, cliquez sur les points de suspension à côté de la propriété FileName, recherchez le fichier XML
que vous avez créé et ouvrez-le. Le fichier XML est associé au composant TXMLDocument.
7. Dans l'inspecteur d'objets, définissez la propriété Active sur la valeur True.
Pour configurer les composants VCL
1. Sur la page Standard de la palette d'outils, placez un composant TMemo sur la fiche.
2. Sur la page Standard de la palette d'outils, placez deux composants TButton sur la fiche juste au-dessus de Memo1.
3. Dans l'inspecteur d'objets, avec Button1 sélectionné, entrez Borland pour la propriété Caption.
4. Dans l'inspecteur d'objets, avec Button2 sélectionné, entrez MyCompany pour la propriété Caption.
Pour afficher le contenu des noeuds enfants dans le fichier XML
1. Sélectionnez Button1.
2. Dans l'inspecteur d'objets, double-cliquez sur l'événement OnClick de l'onglet Evénements. Le code s'affiche, le curseur
placé dans le bloc du gestionnaire de l'événement TForm1.Button1Click.
3. Entrez le code suivant pour afficher le cours de l'action du premier noeud enfant quand l'utilisateur clique sur le bouton
Borland :
BorlandStock:=XMLDocument1.DocumentElement.ChildNodes[0];
Price:= BorlandStock.ChildNodes['price'].Text;
Memo1.Text := Price;
4. Ajoutez une section var juste au-dessus du bloc de code, au-dessus de l'instruction begin dans le gestionnaire
d'événement, puis entrez les déclarations de variables locales suivantes :
var
BorlandStock: IXMLNode;
Price: string;
5. Sélectionnez Button2.
6. Dans l'inspecteur d'objets, double-cliquez sur l'événement OnClick sur l'onglet Evénements. Le code s'affiche, avec le
curseur placé dans le bloc du gestionnaire d'événement TForm1.Button2Click.
7. Entrez le code suivant pour afficher le cours de l'action du second noeud enfant quand l'utilisateur clique sur le bouton
MyCompany :
MyCompany:=XMLDocument1.DocumentElement.ChildNodes[1];
Price:= MyCompany.ChildNodes['price'].Text;
Memo1.Text := Price;
2
8. Ajoutez une section var juste au-dessus du bloc de code, au-dessus de l'instruction begin dans le gestionnaire d'événement,
puis entrez les déclarations de variables locales suivantes :
var
MyCompany: IXMLNode;
Price: string;
Pour compiler et exécuter l'application
1. Sélectionnez Exécuter Exécuter pour compiler et exécuter l'application. L'application affiche deux boutons et un mémo.
2. Cliquez sur le bouton Borland. Le cours de l'action s'affiche.
3. Cliquez sur le bouton MyCompany. Le cours de l'action s'affiche.
Voir aussi
Présentation de VCL.NET (
see page 76)
Construction d'une application Fiches VCL (
162
see page 160)
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Modifications requises en raison du
2.4.9 Modifications requises en raison du support 64 bits
.NET 2.0
Des changements ont été apportés afin de prendre en charge .NET 2.0 64 bits. Ces changements peuvent nécessiter des
modifications de code mineures afin que les applications existantes fonctionnent correctement. Ce document décrit ces
modifications en détail. Il existe deux zones générales :
1. Patterns de code modifiés
2. Déclarations de l'API Windows pour certains callbacks et enregistrements
Avertissement: Ces modifications sont nécessaires en raison des changements apportés pour la prise en charge des
systèmes 64 bits. Elles doivent être effectuées pour les applications conçues pour les systèmes 32 bits et 64 bits.
Pour effectuer les modifications nécessaires pour les divers patterns de code
1. Instructions Case L'utilisation d'un handle dans une instruction case ne se compile plus. Remplacez les instructions :
case Msg.WParam of
par l'une des instructions suivantes :
case Msg.WParam.ToInt64 of // Case spécifique à VCL.NET
Int64(Msg.WParam) of
// Compatible avec VCL/Win32
2. Transtypage en enumérations Un handle ne peut plus être directement transtyper en un type énuméré. Remplacez le
code :
LEnum := TEnum(GetWindowLong(...));
par ceci :
LEnum := TEnum(GetWindowLong(...).ToInt64);
3. Utilisation de handles avec des ensembles La surcharge des opérateurs d'ensembles n'est pas supportée. Ainsi, le code :
if Msg.WParam in [1..5] then
doit être remplacé par l'une des instructions suivantes :
if Msg.WParam.ToInt64 in [1..5] then
if Int64(Msg.WParam) in [1..5] then
// spécifique à VCL.NET
// Compatible à VCL/Win32
4. Indexation dans les tableaux L'utilisation d'un handle pour indexer dans un tableau ne se compile plus. Un code tel que :
S := StrArray[Msg.WParam];
doit être changé par l'une des instructions suivantes :
S := StrArray[Msg.WParam.ToInt64];
S := StrArray[Int64(Msg.WParam)];
2
// spécifique à VCL.NET
// Compatible avec VCL/Win32
5. Adoption d'une taille de handle spécifique Le code supposé fonctionner sur les plates-formes 64 bits ne devrait pas
prendre implicitement la valeur d'un handle ou un IntPtr se trouve dans l'étendue Int32. Dans le cas d'un IntPtr, la
méthode ToInt32 déclenche une exception de débordement s'il ne se trouve pas dans l'étendue. Un code tel que :
LIntPtr := IntPtr.Create(Buffer.ToInt32 + 10);
doit être changé par la forme suivante :
LIntPtr := IntPtr.Create(Buffer.ToInt64 + 10);
De la même façon, le code suivant :
var
DC: HDC;
163
Modifications requises en raison du
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
begin
...
SendMessage(Window, Message, Integer(DC), 0);
end;
doit être remplacé par :
var
DC: HDC;
begin
...
SendMessage(Window, Message, WPARAM(DC), 0);
end;
Pour effectuer les modifications nécessaires dans les callbacks Windows
1. Examinez la première colonne du tableau ci-dessous pour déterminer si vous avez utilisé une de ces unités.
2. Si vous avez utilisé une unité, déterminez si vous avez utilisé un des callbacks de cette unité listé dans la seconde colonne de
la table.
3. Pour chaque occurrence d'un tel callback, modifiez les paramètres notés dans la colonne 3 de façon appropriée.
Unité
Callback
Détails
DDEml
TFNCallback
Types des paramètres Data1 et Data2 modifiés
MMSystem
TFNDriverProc
Type du paramètre dwDriverId modifié
MMSystem
TFNDrvCallBack
Types des paramètres dwUser, dw1 et dw2 modifiés
MMSystem
TFNTimeCallBack
Types des paramètres dwUser, dw1 et dw2 modifiés
RichEdit
TEditStreamCallBack
Type du paramètre dwCookie modifié
Windows
TFNWndProc
Types WParam, LParam et Result modifiés
Windows
TFNWndEnumProc
Type du paramètre LParam modifié
Windows
TFNTimerProc
Type du paramètre P3 modifié
Windows
TFNAPCProc
Type du paramètre dwParam modifié
Windows
TFNDlgProc
Type Result modifié
Windows
TFNSendAsyncProc
Type du paramètre P3 modifié
Windows
TFNPropEnumProcEx
Type du paramètre P4 modifié
WinInet
PFN_AUTH_NOTIFY
Type du paramètre dwContext modifié
Pour effectuer les modifications nécessaires dans les enregistrements Variant
2
1. Examinez la première colonne du tableau ci-dessous pour déterminer si vous avez utilisé une de ces unités.
2. Si vous avez utilisé une unité, déterminez si vous avez utilisé un des enregistrements de cette unité listé dans la seconde
colonne de la table.
3. Pour chacun de ces enregistrements, trouvez tous les endroits où un champ a été transmis en tant que paramètre var ayant
été modifié en une propriété et modifiez le code de façon appropriée. Le compilateur vous avertit si vous devez effectuer la
mise à jour.
Unité
Enregistrement
ActiveX
TPictDesc
ActiveX
TPropSpec
164
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
ActiveX
TStgMedium
ActiveX
TTypeDesc
ActiveX
TVarDesc
ActiveX
TVariantArg
CommCtrl
TPropSheetHeader
CommCtrl
TPropSheetPage
CommCtrl
TTVInsertStruct
CommCtrl
TTVInsertStructA
CommCtrl
TTVInsertStructW
MMSystem
TMixerControlDetails
ShlObj
TStrRet
Windows
TInput
Windows
TProcessHeapEntry
Windows
TSystemInfo
WinSpool
TPrinterNotifyInfoData
Création d'un nouveau composant VCL
Voir aussi
Modifications requises en raison du support 64 bits .NET 2.0 (
see page 62)
2.4.10 Création d'un nouveau composant VCL .NET
Vous pouvez utiliser l'expert Nouveau composant VCL pour créer un nouveau composant VCL .NET et l'ajouter à la palette
d'outils.
Procédures générales de création d'un nouveau composant VCL .NET
1. Créez un package(.dll).
2. Créez votre nouveau composant VCL .NET :
1. Spécifiez le composant ancêtre.
2. Spécifiez le nom de la classe.
2
3. Recensez votre composant et ajoutez-le à la VCL.
Pour créer un package
1. Choisissez Fichier->Nouveau->Autre->Projets Delphi pour .NET->Package.
2. RAD Studio crée le package et l'affiche dans le gestionnaire de projets.
Pour créer votre nouveau composant VCL .NET
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Nouveaux fichiers Composant VCL. Cela affiche la
première page de l'expert Nouveau composant VCL et charge la liste des composants ancêtre.
2. Sur la page Composant ancêtre de la boîte de dialogue Nouveau composant VCL, sélectionnez un composant ancêtre dans
la liste et cliquez sur Suivant.
3. Sur la page Composant de la boîte de dialogue Nouveau composant VCL, examinez les valeurs par défaut de Nom de
165
Affichage d'une image bitmap dans une
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
classe, Page de palette, Nom d'unité et Chemin de recherche. Vous pouvez accepter les valeurs par défaut ou entrer les
valeurs de votre choix.
4. Cliquez sur Suivant. A ce stade, le gestionnaire de projets doit maintenant lister votre nouveau composant .NET VCL dans
le package que vous avez créé.
Pour recenser votre composant dans la VCL
1. Choisissez Composants->Composants .NET installés.
2. Sélectionnez l'onglet Composants VCL .NET.
3. Cliquez sur Ajouter.
4. Dans la boîte de dialogue Sélection d'un package/assemblage VCL .NET, cliquez sur le package qui contient le composant
.NET VCL que vous venez de créer.
5. Sur la palette d'outils, cherchez l'unité dans laquelle votre composant .NET VCL a été installé. In that unit, you should see
your .NET VCL component listed.
Voir aussi
Présentation de VCL pour .NET (
see page 76)
2.4.11 Affichage d'une image bitmap dans une application
Fiches VCL
Ces procédures chargent une image bitmap à partir d'un fichier et l'affichent sur une fiche VCL.
1. Création d'une fiche VCL avec un contrôle bouton.
2. Fourniture d'une image bitmap.
3. Codage du gestionnaire d'événement onClick du bouton pour charger et afficher une image bitmap.
4. Construction et exécution de l'application.
Pour créer une fiche VCL et un bouton
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL. Le concepteur de fiches
VCL apparaît.
2. Dans la catégorie Standard de la palette d'outils, placez un composant TButton sur la fiche.
Pour fournir une image bitmap
2
1. Créez un répertoire dans lequel stocker les fichiers de votre projet.
2. Localisez une image bitmap et copiez-la dans le répertoire de votre projet.
3. Enregistrez tous les fichiers du projet dans le répertoire de votre projet.
Pour écrire le gestionnaire d'événement OnClick
1. Dans la catégorie Entrée de l'onglet Evénements, double-cliquez sur l'événement OnClick de Button1. L'éditeur de code
s'affiche, le curseur placé dans le bloc du gestionnaire de l'événement TForm1.Button1Click.
2. Entrez le code de gestion d'événement suivant, en remplaçant MyFile.bmp par le nom de l'image bitmap du répertoire de
votre projet :
Rect := TRect.Create(0,0,100,100);
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('MyFile.bmp');
166
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Dessin de rectangles et d'ellipses dans une
Form1.Canvas.Brush.Bitmap := Bitmap;
Form1.Canvas.FillRect(Rect);
finally
Form1.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;
Conseil: Vous pouvez modifier la taille du rectangle à afficher en ajustant les valeurs du paramètre Rect.
3. Dans la section var du code, ajoutez ces déclarations de variable :
Bitmap : TBitmap;
Rect : TRect;
Pour exécuter le programme
1. Enregistrez tous les fichiers du projet.
2. Choisissez Exécuter Exécuter.
3. Cliquez sur le bouton pour afficher l'image bitmap dans un rectangle de 100 x 100 pixels dans le coin supérieur gauche de la
fiche.
Voir aussi
Présentation de VCL.NET (
see page 76)
Dessin de lignes droites dans une application VCL (
see page 173)
Dessin de rectangles et d'ellipses dans une application VCL (
Dessin d'un rectangle arrondi dans une application VCL (
see page 172)
see page 173)
Insertion d'une image bitmap dans un contrôle d'une application Fiches VCL (
see page 174)
2.4.12 Dessin de rectangles et d'ellipses dans une
application Fiches VCL
Ces procédures dessinent un rectangle et une ellipse dans une fiche VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche pour dessiner un rectangle et une ellipse.
3. Construction et exécution de l'application.
Pour créer une fiche VCL
2
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL.
2. Dans l'inspecteur d'objets, cliquez sur l'onglet Conception, si nécessaire, pour afficher Form1.
Pour écrire le gestionnaire d'événement OnPaint
1. Dans l'inspecteur d'objets, cliquez sur l'onglet Evénements.
2. Double-cliquez sur l'événement OnPaint dans la catégorie Divers de l'onglet Evénements. L'éditeur de code s'affiche, le
curseur placé dans le bloc du gestionnaire de l'événement TForm1.FormPaint.
3. Entrez le code de gestion d'événement suivant :
Canvas.Rectangle (0, 0, ClientWidth div 2, ClientHeight div 2);
Canvas.Ellipse (0, 0, ClientWidth div 2, ClientHeight div 2);
167
Dessin de lignes droites dans une
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
Pour exécuter le programme
1. Enregistrez tous les fichiers du projet.
2. Choisissez Exécuter Exécuter.
3. L'application s'exécute et affiche un rectangle dans le quart supérieur gauche de la fiche, avec une ellipse au milieu du
rectangle.
Voir aussi
Présentation de VCL.NET (
see page 76)
Dessin d'un rectangle arrondi dans une application Fiches VCL (
see page 173)
2.4.13 Dessin d'un rectangle arrondi dans une application
Fiches VCL
Ces procédures dessinent un rectangle arrondi dans une fiche VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche pour dessiner un polygone.
3. Construction et exécution de l'application.
Pour créer une fiche VCL
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL.
2. Dans le concepteur, cliquez sur la fiche, si nécessaire, pour afficher les propriétés de Form1 dans l'inspecteur d'objets.
Pour écrire le gestionnaire d'événement OnPaint
1. Dans l'inspecteur d'objets, cliquez sur l'onglet Evénements.
2. Double-cliquez sur le gestionnaire d'événement OnPaint dans la catégorie Visuel. L'éditeur de code s'affiche, le curseur
placé dans le bloc du gestionnaire de l'événement TForm1.FormPaint.
3. Entrez le code de gestion d'événement suivant :
Canvas.RoundRect(0, 0, ClientWidth div 2,
ClientHeight div 2, 10, 10);
Pour exécuter le programme
2
1. Enregistrez tous les fichiers du projet.
2. Sélectionnez Exécuter Exécuter.
3. L'application s'exécute et affiche un rectangle arrondi dans le quart supérieur gauche de la fiche.
Voir aussi
Présentation de VCL.NET (
see page 76)
Dessin de rectangles et d'ellipses dans une application Fiches VCL (
168
see page 172)
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Insertion d'une image bitmap dans un
2.4.14 Dessin de lignes droites dans une application Fiches
VCL
Ces procédures dessinent deux diagonales droites sur une image dans une fiche VCL.
1. Création d'une fiche VCL.
2. Codage du gestionnaire d'événement OnPaint de la fiche pour dessiner les lignes droites.
3. Construction et exécution de l'application.
Pour créer une fiche VCL et y placer une image
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL.
2. Cliquez sur l'onglet Conception, si nécessaire, pour afficher Form1 dans l'inspecteur d'objets.
Pour écrire le gestionnaire d'événement OnPaint
1. Dans l'inspecteur d'objets, cliquez sur l'onglet Evénements.
2. Dans la catégorie Visuel, double-cliquez sur l'événement OnPaint. L'éditeur de code s'affiche, le curseur placé dans le bloc
du gestionnaire de l'événement TForm1.FormPaint.
3. Entrez le code de gestion d'événement suivant :
with Canvas do
begin
MoveTo(0,0);
LineTo(ClientWidth, ClientHeight);
MoveTo(0, ClientHeight);
LineTo(ClientWidth, 0);
end;
Pour exécuter le programme
1. Enregistrez tous les fichiers du projet.
2. Choisissez Exécuter Exécuter. L'application s'exécute et affiche une fiche avec deux diagonales.
Conseil: Pour que le crayon devienne vert, insérez l'instruction suivante après la première instruction MoveTo() dans le
code du gestionnaire d'événement : Pen.Color := clRed; Essayez d'utiliser d'autres propriétés des objets canevas et
crayon.
Voir aussi
Présentation de VCL.NET (
2
see page 76)
Construction d'applications Fiches VCL avec graphiques (
see page 158)
Dessin de rectangles et d'ellipses dans une application Fiches VCL (
see page 172)
Dessin d'un rectangle arrondi dans une application Fiches VCL (
see page 173)
Affichage d'une image bitmap dans une application Fiches VCL (
see page 171)
169
Insertion d'une image bitmap dans un
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
2.4.15 Insertion d'une image bitmap dans un contrôle d'une
application Fiches VCL
Ces procédures ajoutent une image bitmap à une boîte à options d'une application Fiches VCL.
1. Création d'une fiche VCL.
2. Ajout de composants à la fiche.
3. Définition des propriétés des composants dans l'inspecteur d'objets.
4. Ecriture des gestionnaires d'événements pour l'action de dessin des composants.
5. Construction et exécution de l'application.
Pour créer une fiche VCL avec un composant ComboBox
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Application Fiches VCL. Le concepteur de fiches
VCL apparaît.
2. Cliquez sur l'onglet Conception pour afficher la fiche.
3. A partir de la catégorie Win32 de la palette d'outils, placez un composant TImageList sur la fiche.
4. Dans la catégorie Standard de la palette d'outils, placez un composant TComboBox sur la fiche.
Pour définir les propriétés d'un composant
1. Sélectionnez ComboBox1 sur la fiche.
2. Dans l'inspecteur d'objets, définissez la liste déroulante de la propriété Style sur csOwnerDrawFixed.
3. Dans l'inspecteur d'objets, cliquez sur [...] à côté de la propriété Items. L'éditeur de liste de chaînes s'affiche.
4. Entrez une chaîne à associer à l'image bitmap, par exemple MyImage, puis cliquez sur OK.
5. Double-cliquez sur ImageList1 dans la fiche. L'éditeur ImageList s'affiche.
6. Cliquez sur le bouton Ajouter pour afficher la boîte de dialogue d'ajout d'images.
7. Recherchez sur votre disque local une image bitmap à afficher dans la boîte à options.
8. Sélectionnez une très petite image comme une icône. Copiez-la dans le répertoire de votre projet et cliquez sur Ouvrir.
L'image s'affiche dans l'éditeur ImageList.
9. Cliquez sur OK pour fermer l'éditeur.
2
Pour ajouter le code du gestionnaire d'événement
1. Dans le concepteur, sélectionnez ComboBox1.
2. Dans l'inspecteur d'objets, cliquez sur l'onglet Evénements.
3. Double-cliquez sur l'événement OnDrawItem. L'éditeur de code s'affiche, avec le curseur placé dans le bloc du gestionnaire
d'événement DrawItem.
4. Entrez le code suivant pour ce gestionnaire d'événement :
ComboBox1.Canvas.FillRect(rect);
ImageList1.Draw(ComboBox1.Canvas, Rect.Left, Rect.Top, Index);
ComboBox1.Canvas.TextOut(Rect.Left+ImageList1.Width+2,
Rect.Top, ComboBox1.Items[Index]);
Pour exécuter le programme
1. Enregistrez tous les fichiers du projet.
170
2.4 Procédures VCL pour .NET
RAD Studio pour .NET
Importation de contrôles .NET dans
2. Choisissez Exécuter Exécuter. L'application s'exécute et affiche une fiche avec une boîte à options.
3. Cliquez sur la liste déroulante de la boîte à options. L'image bitmap et la chaîne de texte apparaissent en tant qu'élément de
la liste.
Voir aussi
Présentation de VCL.NET (
see page 76)
Construction d'applications Fiches VCL avec graphiques (
see page 158)
2.4.16 Importation de contrôles .NET dans VCL.NET
Dans certains cas, vous souhaiterez peut-être utiliser des composants .NET sur vos fiches VCL.NET. Il n'existe pas de moyen
direct d'utiliser des composants .NET. Vous pouvez en revanche envelopper les composants dans une enveloppe ActiveX, que
vous pouvez ensuite ajouter à votre application VCL.NET. Pour ce faire, RAD Studio propose l'expert Importation .NET.
Pour utiliser des composants .NET dans une fiche VCL.NET
1. Exécution de l'expert d'importation de contrôles WinForm.
2. Construction du package pour créer un fichier assemblage.
3. Ajout de l'assemblage à la palette d'outils.
Pour exécuter l'expert d'importation de contrôles WinForm
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Package de contrôles WinForm. Cela démarre
l'expert d'importation de contrôles WinForm.
2. Spécifiez le fichier suivant :
c:\Windows\Microsoft.NET\Framework\v1.1.4322\System.Windows.Forms.dll
3. Cliquez sur Suivant. Cette action affiche la seconde page de l'expert d'importation de contrôles WinForm, qui contient la
liste de tous les composants disponibles.
4. Cochez les cases en regard des composants à importer.
Remarque: Si vous voulez importer tous les composants, cliquez sur le bouton Tout activer
.
5. Cliquez sur Suivant. Cette action affiche la troisième page de l'expert, qui comporte des options de génération pour les
unités.
6. Acceptez les valeurs par défaut et cliquez sur Suivant. Cette action affiche la quatrième page de l'expert, dans laquelle vous
pouvez définir un emplacement et un nom pour le fichier package.
7. Cliquez sur Suivant. Cette action affiche la cinquième page de l'expert, dans laquelle vous pouvez écraser des fichiers
portant le même nom.
8. Cliquez sur Suivant. Cette action lance le processus de génération et affiche des messages d'état pour chaque fichier au fur
et à mesure de leur création, y compris pour le fichier package (.dpk).
9. Si vous souhaitez importer des contrôles supplémentaires, cliquez sur Nouveau. Sinon, cliquez sur Terminer. Le package
contenant les unités apparaît dans le gestionnaire de projet.
Pour construire et ajouter le package
1. Sélectionnez le noeud du package dans le gestionnaire de projet.
2. Dans le menu principal, choisissez Projet Construire <nom_projet>, où <nom_projet> représente le nom de votre projet.
Cette action crée le fichier assemblage qui contient le package et les unités.
171
2
Importation de contrôles .NET dans
RAD Studio pour .NET
2.4 Procédures VCL pour .NET
3. Choisissez Composant Composants .NET installés.
4. Cliquez sur l'onglet Composants VCL .NET.
5. Cliquez sur Ajouter.
6. Sélectionnez l'assemblage package, puis cliquez sur Ouvrir. L'emplacement dépend de l'emplacement du répertoire des
options de votre projet. Il se peut aussi que le fichier se trouve dans votre répertoire de documents par défaut.
7. Cliquez sur OK. Les contrôles individuels apparaissent dans la palette d'outils sous la catégorie Contrôles WinForm. Vous
pouvez maintenant ajouter ces contrôles à vos applications Fiches VCL.NET.
Voir aussi
Présentation de VCL.NET (
2
172
see page 76)
2.5 Procédures ASP.NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
Cette section propose des informations relatives au développement d'applications ASP.NET Web Forms.
Rubriques
Nom
Conception d'une application ASP .NET (
Description
see page 181)
Conception d'une application de bases de données ASP.NET (
Les procédures suivantes décrivent les étapes générales nécessaires à la
construction d'un projet ASP.NET simple. Pour des rubriques plus avancées, voir
les informations connexes après la procédure.
see page 182)
Développement d'une application ASP.NET avec des contrôles de base de
données, Partie 1 ( see page 185)
La procédure suivante décrit les étapes minimales requises pour construire une
application ASP.NET simple de base de données comme BDP.NET. Une fois les
objets connexion requis générés, le projet affiche les données dans un DataGrid.
Pour consulter un exemple de base de données plus détaillé utilisant d'autres
technologies de base de données pour ASP.NET 2.0, voir Construction d'une
application ASP.NET avec des contrôles de base de données ( see page 185).
BDP.NET comprend des concepteurs de composants facilitant la création
d'applications de base de données. Au lieu de déposer des composants
individuels sur un concepteur, puis de les configurer séparément, utilisez des
concepteurs... suite ( see page 182)
Cet exemple montre comment créer une page Web qui contient un contrôle
GridView et un contrôle de base de données. Cet exemple illustre les opérations
suivantes :
• Ajout d'un composant ASP.NET à une fiche.
• Utilisation de la fenêtre Tâches intelligentes.
• Configuration et connexion à une source de données.
• Utilisation du SQL pour lire les données d'une base de
données.
• Exécution de l'application dans un navigateur.
Remarque: Vous pouvez créer des projets ASP.NET
seulement dans CodeGear RAD Studio, et non dans les
personnalités Win32.
Construction d'une application ASP.NET avec des contrôles de base de
données, Partie 2 ( see page 187)
Cet exemple présente un plus ample développement d'une page Web contenant
un contrôle GridView et un contrôle de base de données. Les étapes ajoutent
davantage de capacités au contrôle GridView, incluant l'édition. Cet exemple
illustre les opérations suivantes :
• Utilisation de la fenêtre Tâches intelligentes.
• Changement de la configuration d'une source de
données.
2
• Exécution de l'application dans un navigateur.
Construction d'une application ASP.NET avec des contrôles de base de
données, Partie 3 ( see page 188)
Cet exemple présente un plus ample développement d'une page Web avec un
contrôle GridView et un contrôle de base de données. Il ajoute un contrôle
FormView pour insérer des lignes. Cet exemple illustre les opérations suivantes :
• Ajout d'un composant ASP.NET à une fiche.
• Utilisation de la fenêtre Tâches intelligentes.
• Edition du balisage pour changer l'apparence d'un
composant.
• Exécution de l'application dans un navigateur.
173
RAD Studio pour .NET
Construction d'une application "Hello World" ASP.NET (
Construction d'un plan de site ASP .NET (
see page 189)
see page 190)
2.5 Procédures ASP.NET
Malgré sa simplicité, l'application "Hello World" ASP.NET illustre les étapes
essentielles de la création d'une application ASP.NET. L'application utilise une
fiche Web, des contrôles et un événement permettant d'afficher un résultat en
réponse à une action de l'utilisateur.
Cet exemple montre comment créer un site Web avec un SiteMap (plan de site),
Menu, SiteMapPath et une master page. Un fichier web.sitemap est un fichier
XML qui décrit la structure d'un site web. Une master page sert de modèle pour
les pages du site Web. Un Menu et un SiteMapPath vous permettent de
naviguer sur un site Web. Cet exemple illustre les opérations suivantes :
• Création d'un plan de site Web.
• Création d'une master page.
• Ajout d'un Menu et d'un SiteMapPath à une master page.
• Utilisation de la fenêtre Tâches intelligentes.
• Ajout de pages contenu référençant la master... suite (
see page 190)
Création d'une application de porte-documents avec des contrôles DB Web (
see page 194)
Les contrôles DB Web, la mise en cache XML et les adaptateurs de données
BDP.NET permettent de créer des applications de porte-documents côté serveur.
Vous pouvez créer ce type d'application uniquement lorsque vous employez
l'authentification utilisateur pour garantir que chaque utilisateur possède un
exemplaire unique du fichier XML.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Construction d'une application avec les contrôles DB Web (
Les procédures suivantes décrivent les étapes minimales requises pour
construire une application ASP.NET simple de base de données à l'aide des
contrôles DB Web et de BDP.NET. Une fois les objets connexion requis générés,
le projet affiche les données dans un DBWebGrid avec un DBWebNavigator. Des
informations supplémentaires sont fournies pour les autres contrôles DB Web
courants.
Les utilisateurs doivent déjà être familiarisés avec la création d'un projet
ASP.NET à l'aide de BDP.NET.
La construction d'une application ASP.NET avec les contrôles DB Web et
BDP.NET comprend trois étapes principales :
see page 195)
1. Préparez un projet ASP.NET avec BDP.NET ou d'autres
composants de connexion.... suite ( see page 195)
Conversion d'éléments HTML en contrôles serveur (
see page 196)
Création d'un fichier XML pour des contrôles DB Web (
see page 197)
2
Création de métadonnées pour un ensemble de données (
174
see page 199)
A la différence des contrôles Web, les éléments HTML ne peuvent pas, par
défaut, être contrôlés par programme. Cependant, vous pouvez convertir un
élément HTML en contrôle serveur, puis écrire du code pour accéder à l'élément
ou le modifier. La plupart des éléments HTML figurant dans la palette d'outils
peuvent être convertis à l'aide de la commande Exécuter comme un contrôle
serveur. Les éléments HTML qui n'apparaissent pas dans la palette d'outils
(body, par exemple) peuvent être convertis manuellement.
Les procédures suivantes expliquent comment convertir un élément table
HTML à l'aide de la commande Exécuter comme un contrôle... suite ( see page
196)
Vous pouvez utiliser des fichiers XML en tant que source de données, en
particulier si vous souhaitez prototyper des applications sans effectuer des
lectures et des écritures dans une base de données. Vous devez d'abord créer le
fichier XML. Le contrôle DBWebDataSource fournit un moyen performant de
créer le fichier XML à partir de données issues d'une base de données. Cette
procédure suppose que vous pouvez créer une connexion à une base de
données dynamique contenant les données que vous souhaitez employer.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser... suite ( see page
197)
Lorsque vous choisissez d'utiliser un fichier XML pour une source de données
dans une application ASP.NET utilisant les contrôles DB Web, vous pouvez avoir
besoin de créer les métadonnées afin de structurer les données XML de votre
ensemble de données. Si vous avez choisi de créer un fichier XML sans fichier
de schéma XML (.xsd), vous devez créer manuellement les métadonnées. Cette
procédure suppose que vous avez déjà créé un fichier XML contenant des
données.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.... suite ( see page 199)
2.5 Procédures ASP.NET
Création d'un répertoire virtuel (
RAD Studio pour .NET
see page 200)
Lorsque vous créez une application ASP.NET, l'EDI génère automatiquement un
répertoire virtuel basé sur les paramètres de la boîte de dialogue Nouvelle
application Web ASP.NET.
Toutefois, l'EDI peut également créer un répertoire virtuel pour une application
que vous n'avez pas créée dans l'EDI, telle que les applications démo du dossier
DBWeb.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Ajout de valeurs agrégées avec DBWebAggregateControl (
Débogage et mise à jour d'applications ASP.NET (
see page 200)
see page 201)
Vous pouvez utiliser DBWebAggregateControl pour appliquer l'une des fonctions
d'agrégation standard à une colonne de données. Le contrôle affiche la valeur
agrégée dans une zone de texte qui prend également en charge un libellé lié.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Lors de l'installation de RAD Studio, le programme d'installation a demandé
l'autorisation de mise à jour du fichier machine.config sur votre ordinateur.
Ces informations sont nécessaires pour le débogage d'applications RAD Studio
sous IIS. Si vous avez répondu Oui à cette invite, des informations du débogueur
Borland ont été écrites dans le fichier machine.config et seront disponibles
pour les applications que vous avez créées avec Delphi 8. Vous n'avez pas à
effectuer cette procédure.
Si vous avez répondu Non à cette invite, les informations du débogueur sont
écrites dans le ficher web.config de l'application quand vous créez une
application ASP.NET... suite ( see page 201)
Déploiement d'une application ASP.NET avec Blackfish SQL vers un système
sans RAD Studio ( see page 202)
Vous pouvez déployer une application ASP.NET avec Blackfish SQL vers un
système sans RAD Studio.
Génération de messages HTTP dans ASP.NET (
Lors de la tentative de débogage d'applications ASP.NET, vous pourrez
constater que les messages d'erreur sont parfois mystérieux, voire
incompréhensibles. Ceci peut être dû à une option de configuration d'Internet
Explorer. Pour faciliter le débogage, vous devez modifier cette option.
see page 203)
Liaison de colonnes dans un contrôle DBWebGrid (
see page 203)
Définition de permissions pour l'utilisation de fichiers XML (
Dépannage d'applications ASP.NET (
see page 204)
see page 205)
Utilisation de l'expert Contrôle DB Web (
Pour éviter les erreurs de permissions lors de l'utilisation d'un fichier XML en tant
que source de données, vous devez accorder des droits aux clients qui
emploieront vos applications ASP.NET. Pour ce faire, vous pouvez procéder de
deux façons comme indiqué ci-dessous.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
A la différence des applications Windows traditionnelles, les applications web
sont dépendantes de serveurs et de ressources qui ne se trouvent pas
directement sous leur contrôle ou sous celui de l'utilisateur. Les applications web
sont souvent des combinaisons hybrides de ressources client, serveur et réseau.
Les éléments à vérifier sont l'installation ASP.NET, l'installation et la
configuration IIS et la sécurité. Ces trois zones de recherche sont étendues et
complexes. Les procédures suivantes fournissent des solutions à quelques-uns
des problèmes les plus courants.
Remarque: Les suggestions suivantes ne s'appliquent qu'à IIS 5.1.
see page 208)
Utilisation du gestionnaire de déploiement ASP.NET (
Vous souhaiterez parfois modifier l'ordre dans lequel les colonnes apparaissent
dans un contrôle DBWebGrid. Vous pouvez réaliser cette tâche en effectuant
une liaison manuelle des colonnes, à partir du constructeur de propriétés.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
see page 208)
L'expert Contrôle DB Web vous aide à créer un contrôle web orienté données
basé sur un contrôle web standard.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web)
sont dépréciés dans la version 2007. Vous devez utiliser à la place les contrôles
Web standard.
Vous pouvez ajouter un gestionnaire de déploiement ASP.NET à un projet
d'application ASP.NET pour vous aider à déployer l'application. Le gestionnaire
de déploiement détermine quels fichiers sont requis pour le déploiement,
demande le nom du répertoire de destination et des informations de connexion,
puis copie les fichiers dans ce répertoire. Le gestionnaire de déploiement génère
une liste de fichiers à copier basée sur les noms des fichiers de votre répertoire
de projet ; vous pouvez inclure ou exclure des fichiers de cette liste selon vos
besoins.
Vous pouvez utiliser le bouton droit de la souris, lorsque la fenêtre Gestionnaire
de déploiement... suite ( see page 208)
175
2
Conception d'une application ASP .NET
Utilisation de l'éditeur de balise HTML (
RAD Studio pour .NET
see page 211)
Gestion de contrôles utilisateur ASP.NET (
see page 213)
2.5 Procédures ASP.NET
Lorsque vous créez ou modifiez un fichier HTML, vous pouvez utiliser la fenêtre
Editeur de balise, située sous le concepteur de fiches, pour éditer les balises
HTML. Par exemple, si vous utilisez une fiche Web ASP.NET, l'éditeur de balise
n'est pas supporté. Si vous utilisez une fiche HTML, vous pouvez afficher
l'éditeur de balise dans le concepteur en sélectionnant Voir Editeur de balise.
L'éditeur de balise permet d'examiner et de modifier des balises HTML tout en
affichant les contrôles correspondants dans le concepteur situé au dessus.
L'éditeur de balise vous permet d'utiliser les fonctionnalités d'achèvement de
code,... suite ( see page 211)
Les contrôles utilisateur permettent de réutiliser la fonctionnalité d'interface
utilisateur commune entre applications web ASP.NET. Par exemple, vous
pourriez créer un contrôle utilisateur encapsulant un écran de connexion. Vous
pourriez ensuite ajouter le contrôle utilisateur à n'importe quelle fiche Web
nécessitant la fonctionnalité écran de connexion. Pour plus d'informations sur les
contrôles utilisateur, cliquez sur le lien à la fin de cette rubrique.
2.5.1 Conception d'une application ASP .NET
Les procédures suivantes décrivent les étapes générales nécessaires à la construction d'un projet ASP.NET simple. Pour des
rubriques plus avancées, voir les informations connexes après la procédure.
Pour créer un projet ASP.NET
1. Créez un nouveau projet ASP.NET en cliquant sur Fichier Nouveau Application Web ASP.NET. La boîte de dialogue
Nouvelle application Web ASP.NET apparaît.
2. Dans le champ Nom, entrez le nom du projet.
3. Acceptez le chemin par défaut figurant dans le champ Chemin ou entrez un autre chemin dans ce même champ.
Pour modifier les paramètres de serveur Web (facultatif)
1. Dans la boîte de dialogue Nouvelle application Web ASP.NET, cliquez sur Afficher les options. La boîte de dialogue se
développe en laissant apparaître d'autres options de serveur.
2. Définissez les différents attributs de lecture et d'écriture requis ou acceptez les paramètres par défaut.
Conseil: Dans la plupart des cas, les paramètres par défaut sont suffisants.
3. Cliquez sur OK. Le concepteur de fiches Web apparaît.
Pour créer une page ASP.NET
1. Assurez-vous que le concepteur est visible.
2
2. A partir de la palette d'outils, faites glisser des composants dans le concepteur pour définir l'interface utilisateur.
3. Ajoutez la logique de code sous-jacent aux composants.
Pour ajouter la logique de code sous-jacent à un composant
1. Dans le concepteur, double-cliquez sur le composant auquel vous souhaitez appliquer la logique. Le concepteur de code
sous-jacent apparaît, avec le curseur placé entre des crochets de gestionnaire d'événement.
2. Ajoutez votre logique.
Pour visualiser et modifier le balisage
1. Cliquez sur l'onglet ApplicationName.aspx de l'éditeur de code pour visualiser le balisage, qui montre les informations des
composants HTML et ASP.NET.
2. Modifiez le balisage.
176
2.5 Procédures ASP.NET
RAD Studio pour .NET
Conception d'une application de bases de
3. Enregistrez le fichier.
Pour exécuter l'application
1. Exécutez l'application en cliquant sur Exécuter Exécuter.
2. Vous pouvez également cliquer avec le bouton droit sur l'éditeur de code et sélectionner Afficher dans le navigateur sur le
menu contextuel.
3. Ceci a pour effet d'enregistrer et de compiler l'application. Après avoir compilé l'application, le fichier .aspx généré affiche du
code HTML dans le navigateur web par défaut.
Voir aussi
Présentation de ASP.NET (
see page 84)
Construction d'une application "Hello World" ASP.NET (
see page 189)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 185)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 187)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 188)
Construction d'un sommaire de site ASP .NET (
see page 190)
2.5.2 Conception d'une application de bases de données
ASP.NET
La procédure suivante décrit les étapes minimales requises pour construire une application ASP.NET simple de base de
données comme BDP.NET. Une fois les objets connexion requis générés, le projet affiche les données dans un DataGrid.
Pour consulter un exemple de base de données plus détaillé utilisant d'autres technologies de base de données pour ASP.NET
2.0, voir Construction d'une application ASP.NET avec des contrôles de base de données ( see page 185).
BDP.NET comprend des concepteurs de composants facilitant la création d'applications de base de données. Au lieu de
déposer des composants individuels sur un concepteur, puis de les configurer séparément, utilisez des concepteurs BDP.NET
pour créer et configurer rapidement des composants base de données. La procédure suivante illustre de façon concrète les
principaux composants de ASP.NET, ADO.NET et BDP.NET.
La construction d'une application ASP.NET avec des composants de base de données comprend quatre étapes principales :
1. Créer un projet ASP.NET.
2. Configurer des composants connexion de base de données et une source de données.
2
3. Ajouter un appel à DataBind.
4. Connecter un DataGrid aux composants connexion.
Conseil: Pour le test, utilisez la base de données employee.gdb incluse avec Interbase, si celui-ci est inclus avec votre
version du produit.
Pour créer un projet ASP.NET
1. Choisissez Fichier Nouveau Application Web ASP.NET. La boîte de dialogue Nouvelle application Web ASP.NET
apparaît.
2. Dans le champ Nom, entrez le nom du projet.
3. Utilisez le chemin par défaut figurant dans le champ Chemin ou entrez le chemin du projet.
177
Conception d'une application de bases de
RAD Studio pour .NET
2.5 Procédures ASP.NET
Pour modifier les paramètres de serveur Web (facultatif)
1. Dans la boîte de dialogue Nouvelle application Web ASP.NET, cliquez sur Afficher les options. La boîte de dialogue se
développe en laissant apparaître d'autres options de serveur.
2. Définissez les différents attributs de lecture et d'écriture requis ou acceptez les paramètres par défaut.
Conseil: Dans la plupart des cas, les paramètres par défaut sont suffisants.
3. Cliquez sur OK. Le concepteur de fiches Web apparaît.
Pour configurer des composants de données
1. Faites glisser et déposez un composant BdpDataAdapter sur le concepteur. Au besoin, sélectionnez BdpDataAdapter.
2. Dans l'inspecteur d'objets, sélectionnez Configurer l'adaptateur de données. La boîte de dialogue de configuration de
l'adaptateur de données apparaît.
3. Au besoin, sélectionnez l'onglet Commande. Dans la liste déroulante Connexion, sélectionnez Nouvelle connexion.
4. La boîte de dialogue Fournisseur de données Borland : Editeur de connexions apparaît.
Conseil: Vous pouvez également utiliser l'explorateur de données pour faire glisser et déposer une table sur la surface du
concepteur. L'explorateur de données définit automatiquement la chaîne de connexion.
Pour définir une connexion :
1. Dans la boîte de dialogue Fournisseur de données Borland : Editeur de connexions, sélectionnez l'élément approprié
dans la liste Connexions.
2. Dans Paramètres de connexion, entrez le chemin de Base de données.
Remarque: S'il s'agit d'une base de données située sur le disque local, préfixez le chemin avec localhost:
. Si vous utilisez Interbase, par exemple, vous entrerez le chemin de votre base de données Interbase.
localhost:C:\Program Files\Borland\Interbase\Examples\Database\employee.gdb (ou le chemin
correspondant sur votre système).
3. Complétez les champs Nom d'utilisateur et Mot de passe pour la base de données.
4. Cliquez sur Tester pour confirmer la connexion. Une boîte de dialogue confirme l'état de la connexion.
5. Cliquez sur OK pour retourner dans la boîte de dialogue Fournisseur de données Borland : Editeur de connexions.
6. Cliquez sur OK pour retourner dans la boîte de dialogue de configuration de l'adaptateur de données. Les zones Tables
et Colonnes de la page Commande sont mises à jour avec les informations de la connexion.
Pour définir une commande :
2
1. Dans la zone de sélection, entrez une commande SQL.
Conseil: Pour la base de données Interbase, employee.gdb, vous pourriez entrer select * from SALES
, par exemple.
2. Cliquez sur l'onglet de prévisualisation des données.
3. Cliquez sur Actualiser. Les données de colonne et de ligne apparaissent.
4. Cliquez sur l'onglet DataSet (Ensemble de données).
5. Assurez-vous que Nouveau DataSet (Nouvel ensemble de données) est sélectionné.
6. Cliquez sur OK. De nouveaux composants pour DataSet et BdpConnection apparaissent sur le concepteur.
7. Sélectionnez le composant BdpDataAdapter.
178
2.5 Procédures ASP.NET
RAD Studio pour .NET
Développement d'une application
8. Dans l'inspecteur d'objets, sélectionnez la liste déroulante de la propriété Active et définissez la valeur sur True.
Pour connecter un DataGrid à un DataSet
1. Faites glisser et déposez un contrôle web DataGrid sur le concepteur. Au besoin, sélectionnez DataGrid.
2. Dans l'inspecteur d'objets, sélectionnez la liste déroulante de la propriété DataSource. Sélectionnez le composant DataSet
généré précédemment (il s'agit par défaut de DataSet1).
3. Dans l'inspecteur d'objets, sélectionnez la liste déroulante de la propriété DataMember. Sélectionnez la table appropriée.
L'objet DataGrid affiche les données à partir de l'objet DataSet.
Pour ajouter un appel à DataBind
1. Utilisez la liste déroulante de l'inspecteur d'objets pour sélectionner la fiche Web (WebForm1 est la valeur par défaut).
2. Dans l'inspecteur d'objets, sélectionnez l'onglet Evénements.
3. Définissez l'événement Load sur Page_Load.
4. Dans l'inspecteur d'objets, double-cliquez sur Page_Load. Le concepteur de code sous-jacent apparaît, avec le curseur
placé entre des crochets de gestionnaire d'événement.
5. Code de l'appel à DataBind :
this.dataGrid1.DataBind();
Self.dataGrid1.DataBind();
Remarque: Si vous utilisez des contrôles orientés données, par exemple à partir d'un fournisseur tiers, vous n'avez peut-être
pas besoin de coder l'appel à DataBind.
6. Choisissez Exécuter Exécuter. L'application se compile puis le serveur HTTP affiche une fiche Web comportant la grille de
données.
Bien que présentant un nombre minimum d'étapes requises pour construire un projet de base de données, la procédure
précédente illustre de façon concrète les composants principaux des architectures ASP.NET, ADO.NET et BDP.NET,
notamment : fournisseurs, ensembles de données et adaptateurs. L'adaptateur se connecte à la source de données physique
via un fournisseur, en envoyant une commande qui lira des données à partir de la source de données et remplira un
ensemble de données. Une fois l'ensemble de données rempli, une grille de données affiche ses données.
Utilisez d'autres concepteurs BDP.NET pour modifier et gérer les composants de votre projet.
Voir aussi
Présentation de ASP.NET (
see page 84)
Présentation de ADO.NET (
see page 14)
Fournisseurs de données pour .NET (
see page 27)
Concepteurs de composants ADO.NET (
see page 22)
Création de projets de base de données dans l'explorateur de données. (
see page 118)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 185)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 187)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 188)
2
2.5.3 Développement d'une application ASP.NET avec des
contrôles de base de données, Partie 1
Cet exemple montre comment créer une page Web qui contient un contrôle GridView et un contrôle de base de données. Cet
179
Développement d'une application
RAD Studio pour .NET
2.5 Procédures ASP.NET
exemple illustre les opérations suivantes :
• Ajout d'un composant ASP.NET à une fiche.
• Utilisation de la fenêtre Tâches intelligentes.
• Configuration et connexion à une source de données.
• Utilisation du SQL pour lire les données d'une base de données.
• Exécution de l'application dans un navigateur.
Remarque: Vous pouvez créer des projets ASP.NET seulement dans CodeGear RAD Studio, et non dans les personnalités
Win32.
Pour créer une page contenant un contrôle GridView et un contrôle base de données
1. Créez un nouveau projet ASP.NET en cliquant sur Fichier Nouveau Application Web ASP.NET.
2. Dans la boîte de dialogue Nouvelle application Web ASP.NET, nommez votre projet :
• Acceptez le chemin par défaut figurant dans le champ Chemin ou entrez un autre chemin dans ce même champ.
• Choisissez Cassini ou IIS comme serveur dans le menu déroulant Serveur. Cliquez sur OK.
3. (Facultatif) Dans la boîte de dialogue Nouvelle application Web ASP.NET, cliquez sur Afficher les options. La boîte de
dialogue se développe et fait apparaître d'autres options de serveur. Définissez les différents attributs de lecture et d'écriture
requis ou acceptez les paramètres par défaut.
Conseil: Dans la plupart des cas, les paramètres par défaut sont suffisants.
4. Assurez-vous que l'onglet Conception est sélectionné dans l'éditeur de code. Dans la palette d'outils sous Data Web 2.0,
double-cliquez sur le composant GridView pour ajouter le composant à votre application.
5. Affichez la fenêtre Tâches intelligentes du composant GridView en cliquant sur la flèche du coin supérieur droit du
GridView ou sur l'option Tâches intelligentes du menu contextuel de GridView.
6. Pour connecter le GridView à une source de données, cliquez sur <Nouvelle source de données> dans la liste déroulante
Choisir la source de données. Cela affiche le dialogue Choisir un type de source de données, partie de l'expert
Configuration de la source de données.
7. Dans le dialogue Choisir un type de source de données, sélectionnez Base de données. Entrez un ID pour la source de
données et cliquez sur OK pour afficher la boîte de dialogue Choisir votre connexion de données.
8. Sur le dialogue Choisir votre connexion de données, cliquez sur Nouvelle connexion.
9. Le dialogue Choisir la source de données liste plusieurs sources de données, déterminées par votre configuration. La liste
peut comporter :
• AdoDbx : AdoDbx Client
• Microsoft SQL Server : Microsoft SQL Server
2
• Blackfish SQL : Blackfish SQL Server Sélectionnez dans les listes la source de données et le fournisseur de données
relatifs à cette source de données. Cliquez ensuite sur Continuer.
10. Sur le dialogue Ajouter une connexion, entrez les informations de connexion adéquates.
• Cliquez sur Avancées pour entrer d'autres informations détaillées de connexion pour votre source de données, si nécessaire.
• Cliquez sur le bouton Tester la connexion pour tester la connexion. Cliquez sur OK pour fermer la boîte de dialogue.
11. Sur le dialogue Choisir votre connexion de données, cliquez sur Suivant pour poursuivre la configuration de la source de
données.
12. Sur le dialogue Enregistrer la chaîne de connexion dans le fichier de configuration de l'application, entrez un nom et
cochez Oui, enregistrer cette connexion sous. Ainsi, la propriété ConnectionString de la source de données référence le
nom entré plutôt que la chaîne de connexion réelle. Le fichier web.config de ce projet contient la chaîne de connexion basée
sur les informations entrées. Cliquez sur Suivant.
180
2.5 Procédures ASP.NET
RAD Studio pour .NET
Construction d'une application ASP.NET
13. Sur le dialogue Configurer l'instruction Select, définissez le bouton radio pour spécifier une instruction SQL Select
personnalisée ou générer une instruction SQL Select pour la base de données à laquelle vous êtes connecté. En cas de
génération SQL, sélectionnez la table dans la liste déroulante Nom, cochez les colonnes souhaitées, et cliquez
facultativement sur les boutons WHERE, ORDER BY ou Avancées pour qualifier l'instruction SQL. Le champ Instruction
SELECT montre l'instruction SQL générée. En cas de spécification directe du SQL, cliquez sur Suivant pour afficher la boîte
de dialogue Définir les instructions personnalisées ou les procédures stockées et complétez les champs.
Facultativement, cliquez sur Constructeur de requêtes pour afficher une boîte de dialogue vous permettant de créer
graphiquement une instruction SELECT. Vous pouvez créer des instructions SQL pour les instructions SELECT, UPDATE,
INSERT et DELETE en cliquant sur les onglets correspondants. Cliquez sur Suivant dans l'un des dialogues pour poursuivre
avec la configuration de la source de données.
Remarque: Si vous spécifiez directement le SQL, vous ne pouvez pas utiliser la fonctionnalité pour générer
automatiquement les instructions INSERT, UPDATE ou DELETE.
Remarque: Le constructeur de requêtes
peut seulement construire des instructions SELECT.
14. (Facultatif) Sur le dialogue Tester la requête, cliquez sur Tester la requête pour tester la requête SQL. Si la requête réussit,
les données appropriées sont affichées dans le dialogue. Cliquez sur Terminer pour achever la configuration de la source de
données.
15. (Facultatif) Si vous sélectionnez le composant SQLDataSource sur l'onglet concepteur, notez que la propriété
ConnectionString contient l'information de chaîne de connexion. Les données de la chaîne de connexion sont également
stockées dans le fichier web.config de l'élément connectionStrings.
16. (Facultatif) Cliquez sur l'onglet WebForm.aspx de l'éditeur de code pour visualiser le balisage, qui montre les informations
des composants HTML et ASP.NET. Vous pouvez voir que la propriété Columns de GridView contient des champs liés aux
noms de colonnes de la table de votre base de données.
17. Pour afficher la page dans un navigateur Web, cliquez avec le bouton droit sur l'éditeur de code et sélectionnez Afficher
dans le navigateur sur le menu contextuel. Le projet se construit en affichant une fenêtre de statut de la construction qui se
ferme à l'achèvement de la construction. Le navigateur affiche une table de la base de données sur laquelle vous travaillez.
C'est la fin de la partie 1 de l'exemple.
Voir aussi
Présentation de ASP.NET (
see page 84)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 187)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 188)
Construction d'un sommaire de site ASP .NET (
see page 190)
2.5.4 Construction d'une application ASP.NET avec des
contrôles de base de données, Partie 2
2
Cet exemple présente un plus ample développement d'une page Web contenant un contrôle GridView et un contrôle de base de
données. Les étapes ajoutent davantage de capacités au contrôle GridView, incluant l'édition. Cet exemple illustre les
opérations suivantes :
• Utilisation de la fenêtre Tâches intelligentes.
• Changement de la configuration d'une source de données.
• Exécution de l'application dans un navigateur.
Pour ajouter la fonctionnalité d'édition au contrôle GridView
1. Ouvrez ou reprenez le développement avec le projet décrit dans Construction d'une application de base de données
181
Construction d'une application ASP.NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
ASP.NET ( see page 185). A la fin de cette phase, le volet Conception de l'éditeur de code affichait un contrôle GridView
et un contrôle SqlDataSource.
2. Pour activer les fonctionnalités d'affichage de GridView, ouvrez la fenêtre Tâches intelligentes du composant GridView en
cliquant sur la flèche située près du coin supérieur droit du contrôle GridView. Cochez Activer le tri, Activer la sélection et
Activer la pagination. La représentation à la conception du GridView a été mise à jour.
3. Pour afficher la page dans un navigateur Web, cliquez avec le bouton droit sur l'éditeur de code et cliquez sur Afficher dans
le navigateur dans le menu contextuel. La pagination, le tri et la sélection sont à présent supportés par cette grille. Vous
pouvez trier chaque colonne en cliquant sur le nom de colonne en haut de la colonne. "Sélectionner" ne semble pas
fonctionner car le format du GridView ne met pas en évidence les lignes sélectionnées. La pagination n'est pas activée si les
données tiennent sur une seule page.
4. Revenez au volet Concepteur de l'éditeur de code. Ouvrez la fenêtre Tâches intelligentes du GridView et cliquez sur
Format automatique pour afficher la boîte de dialogue Format automatique. Choisissez Classique. La description du
fichier webform1.aspx du composant asp:GridView comporte maintenant des propriétés de style qui ont été modifiées en
sélectionnant Classique sur le dialogue Format automatique.
5. A ce stade, la sélection des lignes est activée. Pour activer l'édition des lignes, vous devez reconfigurer la connexion. Sur la
fenêtre Tâches intelligentes du GridView, cliquez sur Configurer la source de données. Cliquez sur Suivant dans le
dialogue Choisir votre connexion de données. Cliquez sur le bouton Avancées dans le dialogue Configurer l'instruction
Select. Sur le dialogue Options de génération SQL avancées, cochez Générer les instructions INSERT, UPDATE et
DELETE. Cliquez sur OK pour fermer le dialogue Options de génération SQL avancées.
Remarque: Vous ne pouvez pas utiliser le dialogue Options de génération SQL avancées
si vous choisissez de générer vos propres instructions SQL dans le dialogue Configurer l'instruction Select.
6. Cliquez sur Suivant puis sur Terminer dans le dialogue Configurer l'instruction Select pour quitter l'expert.
7. La fenêtre Tâches intelligentes du GridView contient les cases à cocher Activer l'édition et Activer la suppression.
Cochez ces deux cases. Le contrôle GridView du volet Conception affiche à présent les liens Editer et Supprimer.
8. Pour afficher la page dans un navigateur Web, cliquez avec le bouton droit sur l'éditeur de code et cliquez sur Afficher dans
le navigateur dans le menu contextuel. Les liens Editer, Supprimer et Sélectionner devraient fonctionner pour chaque
ligne.
C'est la fin de la partie 2 de l'exemple.
Voir aussi
Présentation de ASP.NET (
see page 84)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 185)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 188)
Construction d'un sommaire de site ASP .NET (
2
see page 190)
2.5.5 Construction d'une application ASP.NET avec des
contrôles de base de données, Partie 3
Cet exemple présente un plus ample développement d'une page Web avec un contrôle GridView et un contrôle de base de
données. Il ajoute un contrôle FormView pour insérer des lignes. Cet exemple illustre les opérations suivantes :
• Ajout d'un composant ASP.NET à une fiche.
• Utilisation de la fenêtre Tâches intelligentes.
• Edition du balisage pour changer l'apparence d'un composant.
• Exécution de l'application dans un navigateur.
182
2.5 Procédures ASP.NET
RAD Studio pour .NET
Construction d'une application "Hello
Pour ajouter un contrôle FormView
1. Ouvrez ou reprenez le développement avec le projet décrit dans Construction d'une application de base de données
ASP.NET ( see page 187). A la fin de cette phase, le volet Conception de l'éditeur de code affichait un contrôle GridView
et un contrôle SqlDataSource.
2. Assurez-vous que l'onglet Conception est sélectionné dans l'éditeur de code. Ajoutez une nouvelle ligne à la fin de la
conception Web en appuyant sur les touches Ctrl-Fin, puis sur la touche Entrée. Dans la palette d'outils sous Données
Web, double-cliquez sur un composant FormView qui est ajouté à la fiche.
3. Affichez la fenêtre Tâches intelligentes pour le composant FormView en cliquant sur l'onglet situé dans le coin supérieur
droit du composant. Dans le menu déroulant Choisir la source de données, sélectionnez la source de données que vous
aviez préalablement ajoutée et configurée. Sur l'onglet Conception, le composant FormView affiche les champs de
données.
4. Cliquez sur Format automatique dans la fenêtre Tâches intelligentes du FormView. Sur la boîte de dialogue Format
automatique, sélectionnez Ardoise et cliquez sur OK.
5. Dans l'onglet Conception, sélectionnez le composant FormView. Dans l'inspecteur d'objets, changez la valeur de la
propriété DefaultMode en Insert. Cette modification vous permet d'utiliser le contrôle FormView pour ajouter des lignes dans
la base de données.
6. L'apparence initiale du contrôle FormView comporte des libellés et des champs sur la même ligne. L'apparence du contrôle
FormView est définie par le balisage de l'entrée InsertItemTemplate du fichier de balisage Default.aspx. Affichez le texte de
Default.aspx en cliquant sur l'onglet Default.aspx en bas du volet Default.aspx. Afin de placer les libellés et les champs sur
des lignes séparées, modifiez Default.aspx et ajoutez des balises <br/> immédiatement après les libellés de colonne. Le
contrôle FormView a maintenant les libellés et les champs sur des lignes séparées.
7. Affichez la page dans un navigateur Web, en cliquant avec le bouton droit sur l'éditeur de code et en sélectionnant l'option
Afficher dans le navigateur du menu contextuel. La fiche est à présent affichée avec le contrôle FormView pour l'insertion
de lignes.
L'exemple est terminé.
Voir aussi
Présentation de ASP.NET (
see page 84)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 185)
Construction d'une application ASP.NET avec des contrôles de base de données (
see page 187)
Construction d'un sommaire de site ASP .NET (
see page 190)
2.5.6 Construction d'une application "Hello World" ASP.NET
Malgré sa simplicité, l'application "Hello World" ASP.NET illustre les étapes essentielles de la création d'une application
ASP.NET. L'application utilise une fiche Web, des contrôles et un événement permettant d'afficher un résultat en réponse à une
action de l'utilisateur.
Pour créer un projet ASP.NET
1. Créez un nouveau projet ASP.NET en cliquant sur Fichier Nouveau Application Web ASP.NET. La boîte de dialogue
Nouvelle application Web ASP.NET apparaît.
2. Dans le champ Nom, entrez HelloWorld comme nom d'application.
3. Acceptez le chemin par défaut figurant dans le champ Chemin ou entrez un autre chemin.
183
2
Construction d'un plan de site ASP .NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
Pour modifier les paramètres de serveur Web (facultatif)
1. Dans la boîte de dialogue Nouvelle application Web ASP.NET, cliquez sur Afficher les options. La boîte de dialogue se
développe en laissant apparaître d'autres options de serveur.
2. Définissez les différents attributs de lecture et d'écriture requis ou acceptez les paramètres par défaut.
Conseil: Pour la plupart des projets ASP.NET, les paramètres par défaut sont suffisants.
3. Cliquez sur OK. Le concepteur de fiches Web apparaît.
Pour créer la page ASP.NET
1. Si nécessaire, cliquez sur la vue Conception.
2. Dans la catégorie Contrôles Web de la palette d'outils, faites glisser un composant Button sur la surface du concepteur. Le
contrôle Button apparaît sur le concepteur. Assurez-vous que le contrôle est sélectionné.
3. Dans l'inspecteur d'objets, définissez la propriété Text sur Hello, world!.
Pour associer du code au contrôle bouton
1. Dans le concepteur, double-cliquez sur le contrôle Button. Le concepteur de code sous-jacent apparaît, avec le curseur placé
entre des crochets de gestionnaire d'événement.
2. Codez la logique de l'application :
button1.Text = "Hello, développeur !";
button1.Text := 'Hello, développeur !';
3. Choisissez Fichier Enregistrer pour enregistrer l'application.
Pour exécuter l'application "Hello World"
1. Choisissez Exécuter Exécuter. L'application se compile puis le serveur HTTP affiche dans le navigateur par défaut une
fiche Web comportant le bouton "Hello, world!".
2. Cliquez sur le bouton "Hello, world!". Le serveur insère la réponse, "Hello, développeur!" dans la page mise à jour.
3. Fermez le navigateur Web pour revenir à l'EDI.
Voir aussi
Présentation de ASP.NET (
see page 84)
Conception d'une application ASP .NET (
see page 181)
Construction d'une application de base de données ASP.NET (
see page 182)
2
2.5.7 Construction d'un plan de site ASP .NET
Cet exemple montre comment créer un site Web avec un SiteMap (plan de site), Menu, SiteMapPath et une master page. Un
fichier web.sitemap est un fichier XML qui décrit la structure d'un site web. Une master page sert de modèle pour les pages du
site Web. Un Menu et un SiteMapPath vous permettent de naviguer sur un site Web. Cet exemple illustre les opérations
suivantes :
• Création d'un plan de site Web.
• Création d'une master page.
• Ajout d'un Menu et d'un SiteMapPath à une master page.
184
2.5 Procédures ASP.NET
RAD Studio pour .NET
Construction d'un plan de site ASP .NET
• Utilisation de la fenêtre Tâches intelligentes.
• Ajout de pages contenu référençant la master page sur le site.
• Exécution de l'application dans un navigateur.
L'exemple crée le site Web en plusieurs étapes, chaque étape étant construite d'après les étapes précédentes.
Remarque: Vous pouvez créer des projets ASP.NET seulement dans CodeGear RAD Studio, et non dans les personnalités
Win32.
Pour ajouter un plan de site (SiteMap)
1. Créez un nouveau projet ASP.NET en cliquant sur Fichier Nouveau Application Web ASP.NET.
2. Dans la boîte de dialogue Nouvelle application Web ASP.NET, nommez votre projet ou utilisez la valeur par défaut.
Acceptez le chemin par défaut figurant dans le champ Chemin ou entrez un autre chemin dans ce même champ. Choisissez
Cassini ou IIS comme serveur dans le menu déroulant Serveur.
3. (Facultatif) Dans la boîte de dialogue Nouvelle application Web ASP.NET, cliquez sur Afficher les options. La boîte de
dialogue se développe et fait apparaître d'autres options de serveur. Définissez les différents attributs de lecture et d'écriture
requis ou acceptez les paramètres par défaut.
Conseil: Dans la plupart des cas, les paramètres par défaut sont suffisants.
4. Ajoutez un nouveau fichier web.sitemap au projet en cliquant sur Fichier Nouveau Autre. Dans la boîte de dialogue
Nouveaux éléments sous Nouveaux fichiers ASP.NET, sélectionnez Plan du site et cliquez sur OK. L'EDI affiche un
nouvel onglet Web.sitemap avec un texte modèle de plan de site.
5. Remplacez le texte du modèle sur l'onglet Web.sitemap par le texte suivant :
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode title="Home" url="~/home.aspx" >
<siteMapNode title="Book 1" url="~/book1/book1.aspx" >
<siteMapNode title="Chapter 1" url="~/book1/chapter1/chapter1.aspx" >
</siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap>
Ce XML définit une hiérarchie des pages dans le site. Enregistrez cette modification en cliquant sur Fichier Enregistrer ou en
entrant Ctrl-S.
Pour ajouter une master page
1. Ajoutez une nouvelle master page au projet en cliquant sur Fichier Nouveau Autre. Dans la boîte de dialogue Nouveaux
éléments sous Nouveaux fichiers ASP.NET, sélectionnez Master Page ASP.NET et cliquez sur OK. Sur le dialogue
Nouvelle Master Page, le nom par défaut de la master page est MasterPage1.master. Vous pouvez entrer un autre nom,
mais vous devez utiliser l'extension .master. Cliquez sur OK. L'EDI affiche un nouvel onglet MasterPage1.master contenant
une nouvelle master page avec un emplacement de contenu. Le contenu par défaut d'une master page est un contrôle
ContentPlaceHolder unique, utilisé pour indiquer où le contenu peut être inséré dans les pages contenu référençant cette
master page. Cet exemple utilise seulement un ContentPlaceHolder, mais vous pouvez avoir plusieurs
ContentPlaceHolder sur une master page.
2. Cliquez sur l'onglet MasterPage1.master en bas de la master page pour visualiser son balisage. Avant d'ajouter les contrôles
Menu et SiteMapPath à la master page, ajoutez certains éléments <div> pour contrôler le positionnement de ces contrôles.
Pour ce faire, remplacez le texte de l'élément body de la master page par le texte suivant :
<body>
<form runat="server">
<div id="titlediv" style="WIDTH: 100%">
<h1>Sample</h1>
</div>
<div id="breadcrumbdiv" style="WIDTH: 100%">
</div>
185
2
Construction d'un plan de site ASP .NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
<div id="menudiv" style="FLOAT: left; WIDTH: 33%">
</div>
<div id="contentdiv" style="FLOAT: left; WIDTH: 66%">
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
Enregistrez cette modification en cliquant sur Fichier Enregistrer ou en entrant Ctrl-S. La master page a maintenant
plusieurs divisions qui apparaissent sous forme de rectangles dans le volet Conception. L'emplacement de contenu est
également décalé sur le côté droit de la page. Les master pages sont utilisées pour construire des pages contenu. Tous les
éléments d'une master page apparaissent sur une page contenu basée sur cette master page. Si la master page est modifiée,
cette modification se propage sur les pages contenu dérivées de celle-ci.
Pour ajouter un menu et un SiteMapPath sur la master page
1. Pour ajouter un menu, visualisez le volet Conception de la master page. Faites glisser un contrôle Menu de la palette d'outils
sous Navigation dans le <div> immédiatement sur la gauche du ContentPlaceHolder. Positionnez le Menu afin que sa
partie supérieure soit alignée avec la partie supérieure du ContentPlaceHolder.
2. Affichez la fenêtre Tâches intelligentes du contrôle Menu en cliquant sur la flèche du coin supérieur droit du Menu ou en
cliquant sur l'option Tâches intelligentes du menu contextuel de Menu.
3. Pour connecter le Menu à une source de données, cliquez sur <Nouvelle source de données> dans la liste déroulante
Choisir la source de données de la fenêtre Tâches intelligentes. Cela affiche le dialogue Choisir un type de source de
données.
4. Sur le dialogue Choisir un type de source de données, sélectionnez le type de source de données Plan du site. Entrez un
ID pour la source de données ou utilisez l'ID par défaut et cliquez sur OK pour ajouter la source de données.
5. Pour personnaliser le contrôle Menu, cliquez sur le Menu. Dans l'inspecteur d'objets, définissez la propriété
StaticDisplayLevels sur 3. C'est le nombre de niveaux affichés dans le Menu. Notez que le menu affiche les données du
fichier XML SiteMap dans le volet Conception.
6. Pour ajouter un SiteMapPath, visualisez le volet Conception de la master page. Faites glisser un contrôle SiteMapPath de
la palette d'outils sous Navigation dans le second <div> à partir du haut de la master page, juste au-dessus du <div>
contenant le Menu. Un SiteMapPath présente le chemin utilisé pour obtenir une page et permet de retracer vos étapes.
Le menu et le SiteMapPath sont utilisés pour la navigagtion du site.
Pour ajouter une page contenu
2
1. Créez une nouvelle page contenu en cliquant sur Fichier New Autre. Dans la boîte de dialogue Nouveaux éléments sous
Nouveaux fichiers ASP.NET, sélectionnez Page contenu ASP.NET et cliquez sur OK. Dans le dialogue Nouvelle page
contenu, nommez la page Home.aspx. Sélectionnez ~/MasterPage1.master dans le menu déroulant Fichier master
page. Dans la page contenu résultante, les éléments gris sont les éléments dont la page contenu hérite de la master page :
tout à l'exception du contrôle ContentPlaceHolder. Ces éléments sont grisés pour indiquer qu'ils sont en lecture seule. Seul
le contrôle ContentPlaceHolder peut être modifié.
2. Dans la partie inférieure du volet Home.aspx, cliquez sur l'onglet Home.aspx. Sur la première ligne, définissez l'attribut Title
sur Title="Home". Enregistrez cette modification en cliquant sur Fichier Enregistrer ou en entrant Ctrl-S.
3. La page contenu (home.aspx) a un seul contrôle Content qui correspond au contrôle ContentPlaceHolder de la master page
(masterpage1.master). Pour personnaliser la page contenu, cliquez sur l'onglet Conception dans la partie inférieure du volet
Home.aspx. Cliquez à l'intérieur de l'élément ContentPlaceHolder et tapez Home.
Cette page contenu servira de page d'accueil du site.
Pour créer le contenu d'un site
1. Pour créer un contenu de site, vous devez créer des pages contenu et des dossiers pour les contenir. Pour créer un nouveau
dossier, cliquez avec le bouton droit sur le projet dans le gestionnaire de projets et cliquez sur Ajouter nouveau Dossier.
Entrez Book1 comme nom de dossier.
186
2.5 Procédures ASP.NET
RAD Studio pour .NET
Création d'une application de
2. Cliquez avec le bouton droit sur le dossier Book1 dans le gestionnaire de projets et cliquez sur Ajouter nouveau Autre.
Dans la boîte de dialogue Nouveaux éléments sous Nouveaux fichiers ASP.NET, sélectionnez Page contenu ASP.NET et
cliquez sur OK. Dans le dialogue Nouvelle page contenu, nommez la page Book1.aspx. Sélectionnez
~/MasterPage1.master dans le fichier master page.
3. Dans la partie inférieure du volet Book1.aspx, cliquez sur l'onglet Book1.aspx. Sur la première ligne, définissez l'attribut Title
sur Title="Book1". Enregistrez cette modification en cliquant sur Fichier Enregistrer ou en entrant Ctrl-S.
4. Dans la partie inférieure du volet Book1.aspx, cliquez sur l'onglet Conception. Cliquez à l'intérieur de l'élément
ContentPlaceHolder et entrez Book1.
5. Ajoutez un dossier dans le dossier Book1. Cliquez avec le bouton droit sur le dossier Book1 dans le gestionnaire de
projets et cliquez sur Ajouter nouveau Dossier. Entrez Chapter1 comme nom de dossier.
6. Cliquez avec le bouton droit sur le dossier Chapter1 dans le gestionnaire de projets et cliquez sur Ajouter nouveau Autre.
Dans la boîte de dialogue Nouveaux éléments sous Nouveaux fichiers ASP.NET, sélectionnez Page contenu ASP.NET et
cliquez sur OK. Dans le dialogue Nouvelle page contenu, nommez la page Chapter1.aspx. Sélectionnez
~/MasterPage1.master dans le fichier master page.
7. Dans la partie inférieure du volet Chapter1.aspx, cliquez sur l'onglet Chapter1.aspx. Sur la première ligne, définissez
l'attribut Title sur Title="Chapter1". Enregistrez cette modification en cliquant sur Fichier Enregistrer ou en entrant Ctrl-S.
8. Dans la partie inférieure du volet Chapter1.aspx, cliquez sur l'onglet Conception. Cliquez à l'intérieur de l'élément
ContentPlaceHolder et entrez Chapter1.
Les pages et les dossiers ont été ajoutés afin de correspondre aux éléments appropriés du fichier XML sitemap. C'est la fin de
l'ajout d'un contenu de site.
Pour terminer le site
1. Le fichier Default.aspx n'est plus nécessaire. Cliquez avec le bouton droit sur Default.aspx dans le gestionnaire de projets et
cliquez sur Supprimer. Cliquez sur Oui dans le dialogue de confirmation.
2. Vous devez définir une page de démarrage, c'est-à-dire la première page affichée lors de l'exécution de l'application. Dans le
gestionnaire de projets, cliquez avec le bouton droit sur Home.aspx et sélectionnez Définir comme page de démarrage
dans le menu contextuel.
L'application est maintenant prête pour l'exécution.
Pour visualiser la page dans un navigateur Web
1. Pour exécuter l'application et la visualiser dans un navigateur, cliquez sur Exécuter Exécuter. Le projet se construit en
affichant une fenêtre de statut de la construction qui se ferme à l'achèvement de la construction.
2. La page d'acceuil doit être affichée dans un navigateur Web.
3. Cliquez sur Book1 dans le menu pour afficher la page Book1. Cliquez sur Chapter1 pour afficher la page Chapter1.
4. Notez que le SiteMapPath est mis à jour pour afficher l'emplacement dans le site de la page actuellement affichée. Vous
pouvez cliquer sur les noeuds pour accéder aux pages précédentes du chemin.
Le projet est terminé.
2
Voir aussi
Présentation de ASP.NET (
see page 84)
Construction d'une application de base de données ASP.NET 2.0 (
see page 185)
Construction d'une application de base de données ASP.NET 2.0 (
see page 187)
Construction d'une application de base de données ASP.NET 2.0 (
see page 188)
187
Création d'une application de
RAD Studio pour .NET
2.5 Procédures ASP.NET
2.5.8 Création d'une application de porte-documents avec
des contrôles DB Web
Les contrôles DB Web, la mise en cache XML et les adaptateurs de données BDP.NET permettent de créer des applications de
porte-documents côté serveur. Vous pouvez créer ce type d'application uniquement lorsque vous employez l'authentification
utilisateur pour garantir que chaque utilisateur possède un exemplaire unique du fichier XML.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour créer une application de porte-documents
1. Créez une application BDP.NET.
2. Ajoutez un contrôle DBWebDataSource et liez-le à l'ensemble de données BDP.
3. Configurez le contrôle DBWebDataSource pour générer des fichiers XML et XSD.
4. Configurez les propriétés AutoUpdateCache et UseUniqueFileName.
5. Configurez un événement OnApplyChangesRequest pour appeler la méthode AutoUpdate du BdpDataAdapter.
6. Exécution de l'application.
Pour configurer les propriétés AutoUpdateCache et UseUniqueFileName
1. Construisez une application de base de données ASP.NET standard utilisant les composants BDP.NET et le composant
DBWebDataSource.
2. Dans le composant DBWebDataSource, indiquez les noms des fichiers XML et XSD à créer.
Remarque: Il est préférable de créer ces fichiers dans le répertoire du projet ou dans un sous-répertoire ne dépendant pas
du répertoire du projet, habituellement sur votre serveur web.
3. Définissez la propriété AutoUpdateCache sur True.
4. Définissez UseUniqueFileName sur True.
5. Sélectionnez l'onglet Evénements pour le composant DBWebDataSource.
6. Double-cliquez sur le champ OnApplyChangesRequest pour afficher le gestionnaire d'événement dans l'éditeur de code.
7. Ajoutez le code suivant :
2
BdpDataAdapter1.AutoUpdate;
8. Choisissez Exécuter Exécuter. Lors de sa première exécution, l'application crée le fichier XSD à l'aide des métadonnées
du serveur.
Lorsqu'un utilisateur exécute l'application pour la première fois, celle-ci extrait des données à partir du serveur. Lorsque
l'utilisateur modifie des données, l'application enregistre ces modifications sur le serveur dans un fichier unique dont le nom
s'appuie sur celui de l'utilisateur. Si l'utilisateur arrête l'application et la redémarre ultérieurement, l'application restaure les
données spécifiques de l'utilisateur. L'utilisateur peut alors annuler ou modifier les données. A chaque appel réussi de
OnApplyChangesRequest, l'application supprime les fichiers utilisateur uniques et en crée de nouveaux.
Avertissement: Si les tables ou les colonnes auxquelles a accédé l'application sont altérées après l'exécution de
l'application, vous devez supprimer le fichier XSD pour éviter toute discordance entre le fichier XSD et les métadonnées du
serveur. Autrement, vous risquez d'être confronté à des erreurs d'exécution et à un comportement imprévisible.
Voir aussi
Présentation des contrôles Borland DB Web (
188
see page 87)
2.5 Procédures ASP.NET
RAD Studio pour .NET
Utilisation de fichiers XML avec des contrôles DB Web (
Construction d'une application avec les
see page 98)
Conception d'une application avec des contrôles DB Web (
see page 195)
2.5.9 Construction d'une application avec les contrôles DB
Web
Les procédures suivantes décrivent les étapes minimales requises pour construire une application ASP.NET simple de base de
données à l'aide des contrôles DB Web et de BDP.NET. Une fois les objets connexion requis générés, le projet affiche les
données dans un DBWebGrid avec un DBWebNavigator. Des informations supplémentaires sont fournies pour les autres
contrôles DB Web courants.
Les utilisateurs doivent déjà être familiarisés avec la création d'un projet ASP.NET à l'aide de BDP.NET.
La construction d'une application ASP.NET avec les contrôles DB Web et BDP.NET comprend trois étapes principales :
1. Préparez un projet ASP.NET avec BDP.NET ou d'autres composants de connexion.
2. Faites glisser et déposez un composant DBWebDataSource sur le concepteur et définissez sa propriété DataSource sur un
DataSet, DataView ou DataTable.
3. Faites glisser et déposez un composant DBWebGrid et d'autres contrôles sur le concepteur.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous
devez utiliser à la place les contrôles Web standard.
Pour préparer un projet ASP.NET pour des contrôles DB Web :
1. Créer un projet ASP.NET.
2. Configurez les composants BDP.NET ou d'autres composants d'accès aux données, en définissant la propriété DataSource
sur un DataSet, DataView ou DataTable existant.
Conseil: Pour plus d'informations sur la définition des composants d'accès aux données BDP.NET, reportez-vous à la
procédure de construction d'une application de base de données ASP.NET. Au lieu d'utiliser un DataGrid et d'ajouter un appel
DataBind, vous allez utiliser les contrôles DB Web sans appel DataBind dans la procédure suivante.
Pour configurer un DBWebDataSource
1. Placez un composant DBWebDataSource sur le concepteur.
2. Dans l'inspecteur d'objets, sélectionnez la propriété DataSource.
3. Sélectionnez une source de données existante (appelée par défaut dataSet1).
2
Pour configurer des contrôles DB Web
1. Placez un composant DBWebNavigator sur le concepteur.
2. Dans l'inspecteur d'objets, sélectionnez une source de données dans la propriété DBDataSource.
3. Dans l'inspecteur d'objets, sélectionnez un DataTable à partir de la liste déroulante de la propriété TableName.
Conseil: Si aucun TableName n'est disponible, vérifiez que la propriété Active du BdpDataAdapter est définie par True.
4. Placez un composant DBWebGrid sur le concepteur.
5. Dans l'inspecteur d'objets, sélectionnez la source de données à partir de la liste déroulante de la propriété DBDataSource.
6. Dans l'inspecteur d'objets, sélectionnez un DataTable à partir de la liste déroulante de la propriété TableName. La grille
189
Conversion d'éléments HTML en contrôles
RAD Studio pour .NET
2.5 Procédures ASP.NET
affiche des données.
7. Placez d'autres contrôles DB Web si nécessaire.
8. Définissez de façon appropriée les valeurs des propriétés DBDataSource, TableName et autres.
Remarque: Pour les contrôles colonne orientés données (comme DBWebTextBox, DBWebImage, DBWebMemo et
DBWebCalendar), définissez aussi la propriété ColumnName. Pour les contrôles références orientés données (comme
DBWebDropDownList, DBWebListBox et DBWebRadioButtonList), définissez également les propriétés LookupTableName,
DataTextField et DataValueField.
9. Choisissez Exécuter Exécuter. L'application se compile puis le serveur HTTP affiche une fiche Web avec DBWebGrid
affichant les données.
Conseil: Les composants web déposés à partir de la palette d'outils
sont placés en position absolue sur une fiche Web ASP.NET. Un double clic sur des composants de la palette d'outils les
laisse dans la disposition du flux ASP.NET. La disposition du flux est beaucoup plus facile à gérer. Par exemple, des
contrôles en position absolue sur une fiche web peuvent écraser d'autres contrôles en cas de modification de leur taille
pendant l'exécution. L'écrasement peut se produire quand vous ajoutez ou supprimez des lignes d'un contrôle grille, ce qui
modifie sa taille.
Voir aussi
Conception d'une application de bases de données ASP.NET
Contrôles CodeGear DB Web (
see page 87)
Utilisation de fichiers XML avec des contrôles DB Web (
Présentation de l'expert des contrôles DB Web (
Présentation de ASP.NET (
see page 84)
Présentation de ADO.NET (
see page 14)
Fournisseurs de données pour .NET (
see page 98)
see page 92)
see page 27)
Concepteurs de composants ADO.NET (
see page 22)
2.5.10 Conversion d'éléments HTML en contrôles serveur
2
A la différence des contrôles Web, les éléments HTML ne peuvent pas, par défaut, être contrôlés par programme. Cependant,
vous pouvez convertir un élément HTML en contrôle serveur, puis écrire du code pour accéder à l'élément ou le modifier. La
plupart des éléments HTML figurant dans la palette d'outils peuvent être convertis à l'aide de la commande Exécuter comme
un contrôle serveur. Les éléments HTML qui n'apparaissent pas dans la palette d'outils (body, par exemple) peuvent être
convertis manuellement.
Les procédures suivantes expliquent comment convertir un élément table HTML à l'aide de la commande Exécuter comme un
contrôle serveur et comment convertir un élément body manuellement.
Pour convertir un élément de table HTML en contrôle serveur
1. Alors que l'application ASP.NET est ouverte, affichez le concepteur.
2. A partir de la palette d'outils, ajoutez l'élément Tableau HTML de la catégorie Eléments HTML dans le concepteur.
3. Cliquez à l'aide du bouton droit sur l'élément Tableau dans le concepteur, puis choisissez Exécuter comme un contrôle
serveur. L'icône contrôle serveur est ajoutée à l'élément Tableau. Dans le fichier .aspx, les attributs id="TABLE1" et
runat="server" sont ajoutés à la balise table. Dans le fichier sous-jacent, TABLE1 est déclaré à l'aide de
System.Web.UI.HtmlControls.HtmlTable.
190
2.5 Procédures ASP.NET
RAD Studio pour .NET
Création d'un fichier XML pour des
4. Vous pouvez à présent référencer TABLE1 dans le code. A titre d'essai, ajoutez un composant Button de la catégorie
Contrôles Web de la palette d'outils au concepteur.
5. Double-cliquez sur le bouton. L'éditeur de code s'ouvre sur l'événement click du bouton.
6. Ajoutez la ligne suivante au gestionnaire d'événement pour modifier en bleu la couleur d'arrière-plan du tableau. Notez que
TABLE1 est l'identificateur ajouté automatiquement à la balise table à l'étape 3.
TABLE1.BgColor := 'blue';
TABLE1.BgColor = "blue";
7. Choisissez Exécuter Exécuter pour lancer l'application.
8. Cliquez sur le bouton pour modifier la couleur de la table.
Pour convertir manuellement un élément HTML body en contrôle serveur
1. Alors que l'application ASP.NET est ouverte, affichez le fichier .aspx.
2. Ajoutez les attributs runat="server" et id="identifier" à la balise body, identifier étant un identificateur de
description tel que bodytag.
3. Ajoutez la déclaration suivante à la section strict protected du fichier sous-jacent :
bodytag: System.Web.UI.HtmlControls.HtmlGenericControl;
protected System.Web.UI.HtmlControls.HtmlGenericControl bodytag;
4. Vous pouvez à présent référencer bodytag dans le code. A titre d'essai, ajoutez un composant Button de la catégorie
Contrôles Web de la palette d'outils au concepteur.
5. Double-cliquez sur le bouton. L'éditeur de code s'ouvre sur l'événement click du bouton.
6. Ajoutez la ligne suivante pour modifier en jaune la couleur d'arrière-plan de la fiche Web.
bodytag.Attributes['bgcolor'] := 'yellow';
bodytag.Attributes["bgcolor"] = "yellow";
7. Choisissez Exécuter Exécuter pour lancer l'application.
8. Cliquez sur le bouton pour modifier la couleur d'arrière-plan de la fiche.
Voir aussi
Choix entre éléments HTML et contrôles Web
2.5.11 Création d'un fichier XML pour des contrôles DB Web
Vous pouvez utiliser des fichiers XML en tant que source de données, en particulier si vous souhaitez prototyper des
applications sans effectuer des lectures et des écritures dans une base de données. Vous devez d'abord créer le fichier XML. Le
contrôle DBWebDataSource fournit un moyen performant de créer le fichier XML à partir de données issues d'une base de
données. Cette procédure suppose que vous pouvez créer une connexion à une base de données dynamique contenant les
données que vous souhaitez employer.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour créer et utiliser un fichier XML
1. Créez une application ASP.NET utilisant les contrôles DB Web.
2. Indiquez le fichier XML comme source de données d'une nouvelle application ASP.NET.
Pour créer une application ASP.NET utilisant des contrôles DBWeb
1. Choisissez Fichier Nouveau Application Web ASP.NET pour Delphi pour .NET.
191
2
Création de métadonnées pour un
RAD Studio pour .NET
2.5 Procédures ASP.NET
2. Créez une connexion de base de données et un adaptateur de données utilisant les contrôles BDP.NET ou d'autres contrôles
adaptateur de données.
3. Faites glisser et déposez un contrôle DBWebDataSource sur le concepteur à partir de la zone DB Web de la palette
d'outils.
4. Dans la propriété XMLFileName ou XMLSchemaFile, indiquez le nom d'un fichier qui n'existe pas encore.
5. Générez un ensemble de données à partir de l'adaptateur de données.
6. Définissez la propriété DataSource du DBWebDataSource sur dataSet1.
7. Définissez la propriété Active de l'adaptateur de données sur True.
8. Choisissez Exécuter Exécuter. Ceci permet non seulement d'exécuter l'application mais également de créer le fichier XML
ou XSD et de le remplir avec des données du DataSet.
Pour indiquer le fichier XML comme source de données d'une nouvelle application ASP.NET
1. Choisissez Fichier Nouveau Application Web ASP.NET pour Delphi pour .NET.
2. Faites glisser et déposez un composant DataSet sur le concepteur à partir de la zone Composants de données de la
palette d'outils.
3. Faites glisser et déposez un contrôle DBWebDataSource sur le concepteur à partir de la zone DB Web de la palette
d'outils.
4. Indiquez le nom du fichier XML existant au niveau de la propriété XMLFileName du contrôle DBWebDataSource.
Remarque: Si vous avez créé un fichier XSD au lieu d'un fichier XML, indiquez ici le nom du fichier XSD.
5. Indiquez le composant DataSet au niveau de la propriété DataSource du contrôle DBWebDataSource.
6. Faites glisser et déposez un contrôle DBWebGrid sur le concepteur à partir de la zone DB Web de la palette d'outils.
7. Définissez la propriété DBDataSource du DBWebGrid sur le nom du DBWebDataSource
8. Choisissez Exécuter Exécuter pour afficher l'application. L'application extrait des données du DataSet et du fichier XML
pour remplir le DBWebGrid.
Avertissement: Il est possible de spécifier un fichier XML existant dans la propriété XMLFileName de votre
DBWebDataSource ainsi qu'un BdpDataAdapter actif et son DataSet. Vous pouvez exécuter l'application pour que les
contrôles DBWeb affichent les données extraites du fichier XML. Cependant, cela ne constitue pas l'utilisation ni le
comportement habituel des fonctionnalités XML du DBWebDataSource. Bien que les données de votre fichier XML puissent
s'afficher correctement, les résultats d'une mise à jour ou de toute autre opération sur les données seront imprévisibles.
Voir aussi
Utilisation de fichiers XML avec des contrôles DBWeb (
Présentation des contrôles DBWeb Borland (
2
see page 98)
see page 87)
Conception d'une application avec des contrôles DBWeb (
Définition de permissions pour l'utilisation de fichiers XML (
see page 195)
see page 204)
Conception d'une application de bases de données ASP.NET (
see page 182)
2.5.12 Création de métadonnées pour un ensemble de
données
Lorsque vous choisissez d'utiliser un fichier XML pour une source de données dans une application ASP.NET utilisant les
contrôles DB Web, vous pouvez avoir besoin de créer les métadonnées afin de structurer les données XML de votre ensemble
192
2.5 Procédures ASP.NET
RAD Studio pour .NET
Création d'un répertoire virtuel
de données. Si vous avez choisi de créer un fichier XML sans fichier de schéma XML (.xsd), vous devez créer manuellement les
métadonnées. Cette procédure suppose que vous avez déjà créé un fichier XML contenant des données.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour configurer l'application
1. Choisissez Fichier Nouveau Application Web ASP.NET pour Delphi pour .NET.
2. Faites glisser et déposez un contrôle DBWebDataSource sur la fiche.
3. Faites glisser et déposez un composant DataSet sur la fiche.
4. Cliquez sur le bouton points de suspension (...) à côté de la propriété XMLFileName du DBWebDataSource et recherchez le
fichier XML.
5. Sélectionnez le composant DataSet dans la corbeille de composants.
6. Cliquez sur la propriété Tables (Collection) pour afficher l'éditeur de collection de tables.
Pour créer les métadonnées
1. Cliquez sur Ajouter pour ajouter une nouvelle table à la collection. A titre d'essai, nous utiliserons les enregistrements XML
suivants.
<?xml version="1.0" standalone="yes">
<NewSongs>
/// Déclaration XML
/// <song> devient le nom de table dans l'ensemble de données.
<song>
/// <songid> devient Column1 dans l'ensemble de données.
<songid>1001</songid>
/// <title> devient Column2 dans l'ensemble de données.
<title>Mary Had a Little Lamb</title>
</song>
<song>
<songid>1003</songid>
<title>Twinkle, Twinkle Little Star</title>
</song>
</NewSongs>
2. Changez la propriété TableName en song.
3. Cliquez sur la propriété Columns (Collection) pour afficher l'éditeur de collection de colonnes.
4. Cliquez sur Ajouter pour ajouter une nouvelle colonne.
5. Changez la propriété ColumnName en songid.
2
6. Cliquez sur Ajouter pour ajouter une autre nouvelle colonne.
7. Changez la propriété ColumnName en title.
8. Cliquez sur Fermer pour fermer l'éditeur de collection de colonnes.
9. Cliquez sur Fermer pour fermer l'éditeur de collection de tables. Vous venez de créer les métadonnées correspondant aux
données du fichier XML.
Voir aussi
Utilisation de fichiers XML avec des contrôles DBWeb (
see page 98)
193
Ajout de valeurs agrégées avec
RAD Studio pour .NET
2.5 Procédures ASP.NET
2.5.13 Création d'un répertoire virtuel
Lorsque vous créez une application ASP.NET, l'EDI génère automatiquement un répertoire virtuel basé sur les paramètres de la
boîte de dialogue Nouvelle application Web ASP.NET.
Toutefois, l'EDI peut également créer un répertoire virtuel pour une application que vous n'avez pas créée dans l'EDI, telle que
les applications démo du dossier DBWeb.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour créer un répertoire virtuel pour une application existante
1. Ouvrez le fichier projet de l'application ASP.NET dans l'EDI.
2. Choisissez Projet Options Débogueur ASP.NET. Les paramètres par défaut de l'application sont affichés. Acceptez les
paramètres par défaut ou modifiez-les à votre guise.
3. Si vous créez un répertoire virtuel à utiliser avec IIS (Internet Information Server), cliquez sur le bouton Options du serveur
pour afficher la boîte de dialogue Configurer le répertoire virtuel. Si vous modifiez le nom du répertoire virtuel ou son alias,
vous pouvez également modifier les permissions associées au répertoire virtuel.
4. Cliquez sur OK pour revenir aux options du projet.
5. Cliquez sur OK pour quitter les options du projet.
Le répertoire virtuel est créé, vous permettant d'exécuter l'application.
2.5.14 Ajout de valeurs agrégées avec
DBWebAggregateControl
Vous pouvez utiliser DBWebAggregateControl pour appliquer l'une des fonctions d'agrégation standard à une colonne de
données. Le contrôle affiche la valeur agrégée dans une zone de texte qui prend également en charge un libellé lié.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour créer et configurer un DBWebAggregateControl
2
1. Créez une application Web ASP.NET et ajoutez votre connexion de base de données, adaptateur de données, ensemble de
données et composant DBWebDataSource à l'application.
2. Définissez la propriété Active du BdpDataAdapter sur True.
3. Placez un composant DBWebAggregateControl sur le concepteur de fiche Web.
4. Définissez la propriété DBDataSource du DBWebAggregateControl sur DBWebDataSource1, qui est le nom par défaut du
composant DBWebDataSource.
5. Définissez la propriété TableName.
6. Choisissez la valeur de la propriété AggregateType dans la liste déroulante.
7. Choisissez la propriété ColumnName dans la liste déroulante. La zone de texte est remplie avec la valeur basée sur le type
d'agrégat et les valeurs de la colonne que vous avez sélectionnée.
Remarque: Si vous pensez que la colonne sélectionnée peut contenir des valeurs NULL, définissez la propriété
194
2.5 Procédures ASP.NET
RAD Studio pour .NET
Débogage et mise à jour d'applications
IgnoreNullValues sur True ; autrement, il se peut qu'un message d'erreur soit émis.
Pour définir le libellé de DBWebAggregateControl
1. Dans l'inspecteur d'objets, entrez le libellé dans le champ de propriété Caption.
2. Choisissez une position dans la liste déroulante de la propriété CaptionPosition.
Voir aussi
Contrôles CodeGear DB Web (
see page 87)
Conception d'une application avec des contrôles DB Web (
see page 195)
2.5.15 Débogage et mise à jour d'applications ASP.NET
Lors de l'installation de RAD Studio, le programme d'installation a demandé l'autorisation de mise à jour du fichier
machine.config sur votre ordinateur. Ces informations sont nécessaires pour le débogage d'applications RAD Studio sous
IIS. Si vous avez répondu Oui à cette invite, des informations du débogueur Borland ont été écrites dans le fichier
machine.config et seront disponibles pour les applications que vous avez créées avec Delphi 8. Vous n'avez pas à
effectuer cette procédure.
Si vous avez répondu Non à cette invite, les informations du débogueur sont écrites dans le ficher web.config de l'application
quand vous créez une application ASP.NET avec RAD Studio. Cependant, vous devrez ajouter ces informations manuellement
à web.config pour les applications qui ont créées avec Delphi 8. Autrement, si vous tentez de déboguer votre application
Delphi 8 avec RAD Studio, il se peut que vous receviez l'erreur suivante :
Impossible de démarrer le débogage sur le serveur web. Impossible de s'attacher au processus
de travail ASP.NET (généralement aspnet_wp.exe ou w3wp.exe).
Pour mettre à jour le fichier web.config pour une application ASP.NET Delphi 8
1. Ouvrez le fichier web.config dans l'EDI ou un éditeur de texte.
2. Remplacez les lignes suivantes :
<compilation
debug="true"
defaultLanguage="c#">
</compilation>
par ceci :
<compilation defaultLanguage="c#" debug="true">
<assemblies>
<add assembly="Borland.dbkasp, Version=9.0.0.1,
Culture=neutral, PublicKeyToken=b0524c541232aae7"/>
</assemblies>
</compilation>
2
<httpModules>
<add name="DbgConnect" type = "Borland.DbkAsp.DbkConnModule,
Borland.dbkasp,Version=9.0.0.1, Culture=neutral,
PublicKeyToken=b0524c541232aae7"/>
</httpModules>
3. Enregistrez le fichier web.config.
4. Ouvrez le projet d'application dans l'EDI et exécutez-le.
Remarque: Avant de déployer une application ASP.NET, vous devez désactiver le débogage et retirer les références du
195
Génération de messages HTTP dans
RAD Studio pour .NET
2.5 Procédures ASP.NET
débogueur dans le fichier web.config
, comme décrit dans la rubrique ci-dessous.
Voir aussi
Utilisation du gestionnaire de déploiement ASP.NET (
see page 208)
2.5.16 Déploiement d'une application ASP.NET avec
Blackfish SQL vers un système sans RAD Studio
Vous pouvez déployer une application ASP.NET avec Blackfish SQL vers un système sans RAD Studio.
Pour déployer une application ASP.NET avec Blackfish SQL vers un système ne comportant pas CodeGear RAD Studio
1. Créez une application ASP.NET. Dans le fichier web.config du projet, définissez l'entrée connectionString pour utiliser le
client local Blackfish SQL. Voici une entrée exemple d'un fichier web.config :
<connectionStrings>
<!-- ConnectionString local : Utiliser la chaîne ci-dessous pour la connexion au
fournisseur en utilisant le client local -->
<add name="BlackfishSqlAspNet"
connectionString="database=|DataDirectory|bsql_aspnetdb.jds;
user=user;password=password;create=true"
providerName="Borland.Data.BlackfishSQL.LocalClient"/>
</connectionStrings>
2. Construisez l'application.
3. Déployez l'application comme décrit dans Utilisation du gestionnaire de déploiement ASP.NET (
see page 101).
4. Déployez les fichiers suivants dans le répertoire bin :
• Borland.Delphi.dll
• Borland.VclRtl.dll
• Borland.Web.Provider.dll
• Borland.Data.BlackfishSQL.LocalClient.dll
• BlackfishSQL.slip
5. Copiez une base de données Blackfish SQL dans le répertoire App_Data qui est créé dans le répertoire projet lors de
l'exécution de l'application.
6. Exécutez l'application.
2
Voir aussi
Déploiement d'applications ASP.NET (
see page 101)
Utilisation du gestionnaire de déploiement ASP.NET (
see page 101)
2.5.17 Génération de messages HTTP dans ASP.NET
Lors de la tentative de débogage d'applications ASP.NET, vous pourrez constater que les messages d'erreur sont parfois
mystérieux, voire incompréhensibles. Ceci peut être dû à une option de configuration d'Internet Explorer. Pour faciliter le
débogage, vous devez modifier cette option.
196
2.5 Procédures ASP.NET
RAD Studio pour .NET
Liaison de colonnes dans un contrôle
Pour générer des messages d'erreur plus compréhensibles
1. Dans Internet Explorer (si vous utilisez ce navigateur), choisissez Outils Options Internet.
2. Cliquez sur l'onglet Avancé.
3. Désélectionnez l'option Afficher des messages d'erreur HTTP simplifiés.
4. Cliquez sur OK. Ceci désactive les messages simplifiés, ce qui permettra d'obtenir des messages ASP.NET significatifs.
Voir aussi
Présentation de ASP.NET (
see page 84)
Dépannage d'applications ASP.NET (
see page 205)
2.5.18 Liaison de colonnes dans un contrôle DBWebGrid
Vous souhaiterez parfois modifier l'ordre dans lequel les colonnes apparaissent dans un contrôle DBWebGrid. Vous pouvez
réaliser cette tâche en effectuant une liaison manuelle des colonnes, à partir du constructeur de propriétés.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour ouvrir le constructeur de propriétés
1. Démarrez une nouvelle application ASP.NET.
2. Ajoutez un fournisseur de données.
3. Ajoutez un objet DBWebDataSource et connectez-le à un ensemble de données généré.
4. Ajoutez un contrôle DBWebGrid à votre fiche Web.
5. Cliquez sur le verbe de concepteur du Constructeur de propriétés en bas de l'inspecteur d'objets. Cette opération
affiche le constructeur de propriétés.
Pour changer l'ordre des colonnes
1. Sur le constructeur de propriétés, cliquez sur l'onglet Général.
2. Définissez le DataSource sur le DBWebDataSource ou sur l'ensemble de données sur lequel pointe le DBWebDataSource.
3. Cliquez sur l'onglet Colonnes.
4. Sélectionnez les colonnes à afficher dans la liste Colonnes disponibles.
5. Cliquez sur le bouton flèche droite pour ajouter les colonnes dans la liste Colonnes sélectionnées.
2
6. Si vous le souhaitez, réorganisez l'ordre des colonnes dans la liste Colonnes sélectionnées.
7. Vous pouvez changer le nom de l'en-tête de colonne tel qu'il apparaît dans la grille en modifiant le texte En-tête.
8. Cliquez sur Appliquer.
9. Cliquez sur OK.
Avertissement: Si vous choisissez de lier les colonnes de cette façon, vous devez définir la propriété AutoGenerateColumns
sur False. L'affectation de la valeur True à cette propriété déclenche une erreur d'exécution, et ne permet pas la restriction
visible des colonnes à la conception. Si la même colonne est liée à une grille plusieurs fois, vous pouvez obtenir une erreur
d'exécution.
197
Définition de permissions pour l'utilisation
RAD Studio pour .NET
2.5 Procédures ASP.NET
Voir aussi
Contrôles DBWeb CodeGear (
see page 87)
Conception d'une application avec des contrôles DBWeb (
see page 195)
2.5.19 Définition de permissions pour l'utilisation de fichiers
XML
Pour éviter les erreurs de permissions lors de l'utilisation d'un fichier XML en tant que source de données, vous devez accorder
des droits aux clients qui emploieront vos applications ASP.NET. Pour ce faire, vous pouvez procéder de deux façons comme
indiqué ci-dessous.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour attribuer des droits utilisateur quand la propriété UseUniqueFileName a pour valeur false
1. Cliquez à l'aide du bouton droit sur le menu Démarrer de Windows et choisissez Explorer.
2. Choisissez Outils Options des dossiers.
3. Choisissez l'onglet Affichage.
4. Désélectionnez l'option Utiliser le partage de fichiers simple.
5. Cliquez sur Appliquer à tous les dossiers.
6. Cliquez sur OK.
7. Localisez le fichier XML en cours d'utilisation dans le projet, puis cliquez à l'aide du bouton droit et sélectionnez Propriétés.
8. S'il est disponible, sélectionnez l'onglet Sécurité.
9. Ajoutez l'utilisateur Tout le monde et attribuez les droits complets au fichier.
Pour attribuer des droits aux utilisateurs quand UseUniqueFileName a pour valeur true et que l'authentification utilisateur
est en cours d'utilisation
1. Dans la boîte de dialogue Comptes d'utilisateurs du panneau de configuration Windows, créez un utilisateur.
2. Dans le répertoire virtuel IIS où votre application web est construite, créez le dossier CacheFiles. En général, les
répertoires virtuels IIS se trouvent dans C:\Inetpub\wwwroot.
3. A l'aide de l'explorateur Windows, recherchez le dossier CacheFiles.
2
4. Cliquez avec le bouton droit et choisissez Propriétés.
5. Choisissez l'onglet Sécurité et ajoutez l'utilisateur créé à l'étape 1.
6. Ajoutez les droits complets au dossier.
7. Déplacez le fichier XML dans ce dossier.
8. Réglez sur ce fichier la propriété XMLFileName du DBWebDataSource de votre application.
Remarque: Assurez-vous que l'option Utiliser le partage de fichiers simple
de la boîte de dialogue Options des dossiers Windows n'est pas sélectionnée.
Voir aussi
Utilisation de fichiers XML avec des contrôles DB Web (
198
see page 98)
2.5 Procédures ASP.NET
RAD Studio pour .NET
Création d'un fichier XML pour des contrôles DB Web (
Dépannage d'applications ASP.NET
see page 197)
2.5.20 Dépannage d'applications ASP.NET
A la différence des applications Windows traditionnelles, les applications web sont dépendantes de serveurs et de ressources
qui ne se trouvent pas directement sous leur contrôle ou sous celui de l'utilisateur. Les applications web sont souvent des
combinaisons hybrides de ressources client, serveur et réseau.
Les éléments à vérifier sont l'installation ASP.NET, l'installation et la configuration IIS et la sécurité. Ces trois zones de
recherche sont étendues et complexes. Les procédures suivantes fournissent des solutions à quelques-uns des problèmes les
plus courants.
Remarque: Les suggestions suivantes ne s'appliquent qu'à IIS 5.1.
Pour dépanner votre application ASP.NET
1. Installez ou réinstallez ASP.NET.
2. Créez ou vérifiez votre compte utilisateur ASP.NET.
3. Installez ou réinstallez IIS.
4. Démarrez ou redémarrez IIS.
5. Configurez IIS pour que l'application soit reconnue.
6. Ajoutez des types de documents à IIS.
7. Définissez l'authentification anonyme.
8. Contrôlez la connexion de base de données, si nécessaire.
Pour installer ou réinstaller ASP.NET
1. Choisissez Démarrer Exécuter pour afficher la boîte de dialogue d'exécution.
2. Entrez cmd /e dans la zone de liste déroulante Ouvrir.
3. Cliquez sur OK.
4. Accédez aux répertoires c:\Windows\Microsoft.NET\Framework\v1.1.4322.
5. Entrez la commande aspnet_regiis.exe -i.
6. Appuyez sur Entrée.
Remarque: Pour connaître les différents commutateurs de l'utilitaire aspnet_regiis.exe
, indiquez ? au lieu de -i immédiatement après la commande.
2
Pour créer ou vérifier votre compte utilisateur ASP.NET.
1. Choisissez Démarrer Panneau de configuration Comptes d'utilisateur pour afficher la liste des comptes d'utilisateur de
votre système.
2. Si vous ne possédez pas de compte d'utilisateur ASPNET, créez-en un.
3. Redémarrez votre ordinateur.
Avertissement: N'attribuez pas de privilèges d'administration à l'utilisateur ASPNET. Ceci crée une faille de sécurité sur
votre système et rend les applications ASP.NET déployées vulnérables au piratage. Créez un utilisateur anonyme.
199
Dépannage d'applications ASP.NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
Pour installer ou réinstaller IIS
1. Choisissez Démarrer Panneau de configuration Ajout/Suppression de programmes. Cette opération affiche la boîte
de dialogue de Ajouter ou supprimer des programmes.
2. Cliquez sur Ajouter ou supprimer des composants Windows. Cette option affiche l'assistant Composants Windows.
3. Cochez la case Internet Information Services (IIS).
4. Cliquez sur Suivant.
5. Cliquez sur Terminer.
6. Démarrez IIS.
Pour redémarrer IIS
1. Choisissez Démarrer Panneau de configuration Outils d'administration Services Internet (IIS).
2. Sélectionnez le noeud ordinateur local.
3. Cliquez avec le bouton droit et sélectionnez Redémarrer IIS.... . Cette opération affiche la boîte de dialogue
Arrêter/Démarrer/Redémarrer.
4. Sélectionnez dans la liste déroulante la tâche à accomplir.
5. Cliquez sur OK.
Pour configurer IIS afin que l'application soit reconnue
1. Dans la console IIS, recherchez le dossier ou le répertoire virtuel contenant votre application web. S'il n'existe pas de dossier
ou de répertoire virtuel, créez un répertoire virtuel.
2. Sélectionnez le dossier.
3. Cliquez avec le bouton droit et sélectionnez Propriétés.
4. Cliquez sur l'onglet Répertoire virtuel.
5. Sous la zone Paramètres d'application, cliquez sur le bouton Créer. Si le bouton Supprimer est affiché, vous pouvez
supprimer, puis créer à nouveau le répertoire virtuel, si nécessaire.
Pour ajouter des types de documents à IIS
1. Choisissez Démarrer Panneau de configuration Outils d'administration Services Internet (IIS).
2. Sélectionnez Site Web par défaut.
3. Cliquez avec le bouton droit et sélectionnez Propriétés.
4. Cliquez sur l'onglet Documents.
5. Cliquez sur Ajouter. Cette opération affiche la boîte de dialogue Ajout d'un document par défaut.
2
6. Ajoutez WebForm1.aspx dans la zone de texte Nom du document par défaut.
7. Cliquez deux fois sur OK.
Pour définir l'authentification anonyme
1. Dans la console IIS, recherchez le dossier ou le répertoire virtuel contenant votre application web. S'il n'existe pas de dossier
ou de répertoire virtuel, créez un répertoire virtuel.
2. Sélectionnez le dossier.
3. Cliquez avec le bouton droit et sélectionnez Propriétés.
4. Cliquez sur l'onglet Sécurité de répertoire.
5. Cliquez sur Modifier.
200
2.5 Procédures ASP.NET
RAD Studio pour .NET
Utilisation de l'expert Contrôle DB Web
6. Sélectionnez la case à cocher Accès anonyme.
7. Dans le champ Nom d'utilisateur : entrez le nom de l'utilisateur ASPNET que vous avez créé.
8. Sélectionnez l'option Authentification Windows intégrée ou ajoutez votre propre mot de passe.
9. Cliquez deux fois sur OK.
Pour contrôler la connexion de base de données
1. Cliquez sur l'onglet Explorateur de données pour afficher vos connexions de bases de données.
2. Développez la liste de fournisseurs pour afficher une connexion de base de données valide.
3. Cliquez avec le bouton droit et choisissez Modifier la connexion. Cette opération affiche l'éditeur de connexions.
4. Si la chaîne de connexion de base de données ne contient pas le spécificateur localhost, ajoutez-le au début de la chaîne,
comme dans l'exemple suivant :
localhost:C:\Program Files\Common Files\Borland Shared\Data\EMPLOYEE.GDB
5. Vérifiez que toutes les autres options de connexion sont définies dans les propriétés.
6. Cliquez sur Tester pour vérifier si la connexion fonctionne.
Voir aussi
Présentation de ASP.NET (
see page 84)
Groupes de discussion Microsoft
Création d'un répertoire virtuel (
see page 200)
Génération de messages HTTP dans ASP.NET (
see page 203)
2.5.21 Utilisation de l'expert Contrôle DB Web
L'expert Contrôle DB Web vous aide à créer un contrôle web orienté données basé sur un contrôle web standard.
Remarque: Les contrôles DB Web (espace de nommage Borland.Data.Web) sont dépréciés dans la version 2007. Vous devez
utiliser à la place les contrôles Web standard.
Pour démarrer l'expert Contrôle DB Web
1. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Bibliothèque de contrôles DBWeb. Ceci affiche
l'expert Nouveau contrôle DBWeb.
2. Entrez le nom du contrôle dans la zone de texte Nom du contrôle.
3. Sélectionnez Lier à DataTable. Ceci informe l'expert d'ajouter le code du fichier de contrôle implémentant IDBWebDataLink.
Cette interface définit les moyens d'accéder au contenu de sources et de tables de données.
4. Sélectionnez Lier à DataColumn si vous souhaitez établir une liaison avec une colonne, dans le cas où votre contrôle
supporte un seul type de données, par exemple. Ceci informe l'expert d'ajouter le code du fichier de contrôle implémentant
IDBWebColumnLink. Cette interface définit les moyens d'accéder à une colonne de la table accessible via IDBWebDataLink.
5. Si vous sélectionnez Lier à DataColumn alors que votre contrôle est l'un des contrôles de référence, comme une zone de
liste, un groupe de boutons radio ou une case à cocher, et que vous souhaitez que le nouveau contrôle soit un contrôle de
référence, cochez la case Support des références. Ceci informe l'expert d'ajouter le code du fichier de contrôle
implémentant IDBWebLookupColumnLink. Cette interface définit les moyens d'accéder à une table de référence, au champ
texte et au champ valeur de la colonne accessibles via IDBWebColumnLink.
L'expert Contrôle DBWeb crée un fichier template qu'il affiche dans l'éditeur de code. Vous modifiez ensuite ce fichier pour
créer un héritage à partir d'un contrôle DB Web précis.
201
2
Utilisation du gestionnaire de déploiement
RAD Studio pour .NET
2.5 Procédures ASP.NET
Voir aussi
Présentation de l'expert des contrôles DB Web (
Présentation des contrôles Borland DB Web (
see page 92)
see page 87)
2.5.22 Utilisation du gestionnaire de déploiement ASP.NET
Vous pouvez ajouter un gestionnaire de déploiement ASP.NET à un projet d'application ASP.NET pour vous aider à déployer
l'application. Le gestionnaire de déploiement détermine quels fichiers sont requis pour le déploiement, demande le nom du
répertoire de destination et des informations de connexion, puis copie les fichiers dans ce répertoire. Le gestionnaire de
déploiement génère une liste de fichiers à copier basée sur les noms des fichiers de votre répertoire de projet ; vous pouvez
inclure ou exclure des fichiers de cette liste selon vos besoins.
Vous pouvez utiliser le bouton droit de la souris, lorsque la fenêtre Gestionnaire de déploiement est affichée, pour voir les
options permettant d'afficher, de copier, de supprimer, de modifier et de filtrer les fichiers de destination.
Lorsque l'option Afficher les références d'assemblage est activée, la fenêtre Gestionnaire de déploiement affiche tous les
assemblages référencés par le projet. Les assemblages système sont affichés mais désactivés (estompés). Ces assemblages
désactivés ne peuvent pas être déployés.
L'option Fichiers externes.... permet de choisir les fichiers externes que vous voulez déployer. Une boîte de dialogue comportant
une boîte liste est pré-remplie avec les bibliothèques de la base de données BDP, puisque l'une d'entre elles est souvent
déployée. Vous pouvez ajouter des fichiers à la liste en utilisant le dialogue Fichier Ouvrir. Une colonne de la boîte liste
indique le sous-répertoire de destination pour le fichier externe. Vous pouvez modifier le chemin de destination. Lorsque vous
cliquez sur OK, les fichiers que vous avez cochés sont affichés dans le gestionnaire de déploiement.
Reportez-vous aux liens présents à la fin de cette rubrique pour de plus amples informations sur les options du clic droit.
Considérations
• Pour activer le débogage IIS de RAD Studio, lors de l'installation de RAD Studio, le programme d'installation a demandé
l'autorisation de mise à jour du fichier machine.config sur votre ordinateur. Si vous avez répondu Oui à cette invite, des
informations du débogueur CodeGear ont été écrites dans machine.config. Si vous avez répondu Non à cette invite, ces
informations du débogueur sont écrites dans le ficher web.config de l'application quand vous créez une application
ASP.NET avec RAD Studio. Avant de déployer l'application, vous devez désactiver le débogage pour optimiser l'application,
comme le décrit la procédure suivante. De plus, si vous avez choisi de ne pas mettre à jour machine.config, vous devez
retirer les références aux modules du débogueur CodeGear dans web.config, car il se peut que ces modules ne soient pas
disponibles sur l'ordinateur cible de déploiement.
2
• Considérons que vous gérez un fichier web.config distinct à des fins de déploiement. Par exemple, vous pourriez utiliser un
fichier nommé web.config.deploy et le renommer web.config lors du déploiement. Utilisez la commande Modifier le
nom du fichier de destination du gestionnaire de déploiement pour renommer le fichier.
• Vous pouvez créer le répertoire de destination lors de l'utilisation du gestionnaire de déploiement, puis recourir à IIS pour
créer le répertoire virtuel avant d'utiliser l'application. Comme alternative, vous pouvez effectuer le déploiement vers un
répertoire virtuel existant.
• Lors du déploiement vers un site FTP, le gestionnaire de déploiement emploiera vos informations de connexion FTP. Vous
pouvez enregistrer votre mot de passe de connexion FTP mais il sera visible en texte clair non crypté.
• Vous avez la possibilité d'ajouter plusieurs gestionnaires de déploiement à un projet ASP.NET et les configurer pour effectuer
le déploiement dans des répertoires de destination différents.
• Certaines commandes disponibles dans le gestionnaire de déploiement le sont également dans le menu contextuel
Gestionnaire de projets.
202
2.5 Procédures ASP.NET
RAD Studio pour .NET
Utilisation du gestionnaire de déploiement
Pour retirer des références de débogueur dans le fichier web.config
1. Dans l'EDI ou un éditeur de texte, ouvrez le fichier web.config que vous utiliserez pour l'application ASP.NET déployée.
2. Dans la section <compilation>, remplacez debug="true" par debug="false".
3. Passez cette étape si vous avez choisi de mettre à jour machine.config lors de l'installation de RAD Studio (voir la section
Considérations pour plus de détails). Retirez ou mettez en commentaires les références suivantes à l'assemblage et aux
modules du débogueur CodeGear :
<assemblies>
<add assembly="Borland.dbkasp, Version=9.0.0.1,
Culture=neutral, PublicKeyToken=b0524c541232aae7"/>
</assemblies>
<httpModules>
<add name="DbgConnect" type =
"Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=9.0.0.1,
Culture=neutral,
PublicKeyToken=b0524c541232aae7"/>
</httpModules>
4. Enregistrez le fichier et recompilez l'application.
Pour déployer une application ASP.NET
1. Dans l'EDI, ouvrez le projet d'application ASP.NET à déployer.
2. Choisissez Fichier Nouveau Autre Déploiement Déploiement ASP.NET et cliquez sur OK. Le noeud Déploiement ne
figure pas dans la boîte de dialogue Nouveaux éléments quand aucun projet ASP.NET n'est ouvert. L'onglet Déploiement
s'affiche et un fichier .bdsdeploy ajouté au répertoire du projet figure dans le gestionnaire de projets. Les fichiers requis
pour le déploiement figurent dans la partie gauche de la page Déploiement sous Fichiers source.
Conseil: Seuls les fichiers ayant été enregistrés figurent dans la liste ; enregistrez les nouveaux fichiers et actualisez
l'affichage du gestionnaire de déploiement pour y voir les fichiers.
3. Dans la liste déroulante Destination, sélectionnez Emplacement du dossier ou Emplacement FTP. Si vous sélectionnez
Emplacement du dossier, la boîte de dialogue de recherche d'un dossier apparaît. Vous pouvez sélectionner un répertoire
existant ou cliquer sur Créer un nouveau dossier pour en créer un. Si vous sélectionnez Emplacement FTP, la boîte de
dialogue Site FTP apparaît. Entrez les informations de connexion. Cliquez sur le bouton Aide pour obtenir une explication sur
chaque champ. Cliquez sur OK pour revenir dans le gestionnaire de déploiement.
4. Si vous avez sélectionné un emplacement FTP, cochez la case Connecté pour connecter et afficher les fichiers éventuels
dans le répertoire de destination.
5. Examinez les fichiers dans la liste Fichiers source. Cliquez sur un fichier afin d'afficher des informations de fichier détaillées
dans la zone de texte sous la liste de fichiers.
6. Pour copier tous les fichiers dans le répertoire de destination, cliquez sur le bouton Copier tous les fichiers nouveaux et
modifiés dans la destination de la barre d'outils, dans la partie supérieure du gestionnaire de déploiement. Les fichiers
sont copiés immédiatement dans le répertoire de destination et affichés dans la liste Fichiers de destination. Pour modifier
la liste de fichiers, cliquez à l'aide du bouton droit n'importe où dans la liste et utilisez les commandes du menu contextuel, ou
utilisez les boutons d'état de la liste de fichiers, comme expliqué ci-dessous.
Conseil: Pour sélectionner un fichier dans la liste, cliquez sur son nom. Pour sélectionner plusieurs fichiers, appuyez sur
CTRL
et cliquez sur les fichiers. Pour effectuer une sélection continue de fichiers, appuyez sur CTRL+MAJ, cliquez sur le premier
fichier à sélectionner, puis sur le dernier.
Commande du menu
contextuel
Description
Actualiser
Réaffiche le gestionnaire de déploiement pour refléter les modifications dans la liste de fichiers.
203
2
Utilisation du gestionnaire de déploiement
RAD Studio pour .NET
2.5 Procédures ASP.NET
Copier
les
fichiers Copie les fichiers sélectionnés dans le répertoire de destination.
sélectionnés
dans
la
destination
Supprimer les fichiers de Supprime les fichiers sélectionnés du répertoire de destination après l'affichage d'une invite de
destination sélectionnés
confirmation pour chaque fichier.
Modifier le nom du fichier Affiche une boîte de dialogue pour renommer le fichier sélectionné dans le répertoire de
de destination
destination.
Copier tous les fichiers Copie tous les fichiers marqués avec
dans le répertoire de destination. Cette commande est
nouveaux
et
modifiés également disponible dans la barre d'outils du gestionnaire de déploiement et par un clic droit sur
dans la destination
le noeud .bdsdeploy dans le gestionnaire de projets.
Supprimer
tous
les Supprime les fichiers marqués avec
fichiers de destination confirmation pour chaque fichier.
absents du projet
du répertoire de destination après l'affichage d'une invite de
Afficher les groupes et les Affiche tous les fichiers du répertoire du projet, y compris ceux qui ne sont pas nécessaires pour le
fichiers ignorés
déploiement de l'application.
Ignorer les groupes
Le fichier sélectionné est ignoré par le gestionnaire de déploiement.
Ignorer les fichiers
Tous les fichiers d'un noeud de la liste des fichiers source sont ignorés par le gestionnaire de
déploiement.
Activer le journal
Consigne les opérations réalisées par le gestionnaire de déploiement dans un fichier nommé
DeployLog.txt dans le répertoire de projet.
Afficher le journal
Affiche le journal dans l'éditeur de texte par défaut.
7. Lorsque les critères de déploiement vous conviennent, enregistrez les modifications dans le fichier .bdsdeploy. Lorsque
vous rouvrez le projet, vous pouvez accéder au gestionnaire de déploiement à partir du gestionnaire de projets et déployer
l'application en l'état, ou modifier les critères de déploiement comme indiqué précédemment.
Les boutons suivants indiquent l'état des fichiers dans la liste et permettent de copier et de supprimer des fichiers, comme
expliqué ci-dessous.
Bouton d'état de la liste
de fichiers
Description
Le fichier peut être copié car il n'existe pas dans le répertoire de destination ou le fichier source a
été modifié depuis sa dernière copie dans le répertoire de destination.
Cliquez sur le bouton pour copier le fichier vers le répertoire de destination.
Le fichier existe dans le répertoire de destination et non pas dans le répertoire du projet. Vous
pouvez probablement le supprimer du répertoire de destination en toute sécurité.
Cliquez sur le bouton pour supprimer le fichier du répertoire de destination.
Le fichier a pour état "Inconnu". Il est possible que son horodatage soit moins récent que celui du
fichier du répertoire de projet.
Cliquez sur le bouton pour remplacer le fichier dans le répertoire de destination.
2
Pour créer un répertoire virtuel IIS pour un nouveau répertoire de destination
1. Ouvrez IIS sur l'ordinateur où vous avez déployé l'application. Sous Windows XP, par exemple, choisissez
Démarrer Panneau de configuration Outils d'administration Services Internet (IIS).
2. Dans la boîte de dialogue Services Internet (IIS), développez l'arborescence pour afficher le noeud ordinateur local.
3. Cliquez à l'aide du bouton droit sur Site Web par défaut et choisissez Nouveau Répertoire virtuel. L'assistant de
création du répertoire virtuel apparaît.
4. Suivez les invites des pages successives de l'assistant IIS pour créer le répertoire virtuel.
Pour plus d'informations sur les répertoires virtuels, reportez-vous au système d'aide en ligne d'IIS.
204
2.5 Procédures ASP.NET
RAD Studio pour .NET
Utilisation de l'éditeur de balise HTML
Voir aussi
Déploiement d'applications ASP.NET (
see page 101)
2.5.23 Utilisation de l'éditeur de balise HTML
Lorsque vous créez ou modifiez un fichier HTML, vous pouvez utiliser la fenêtre Editeur de balise, située sous le concepteur de
fiches, pour éditer les balises HTML. Par exemple, si vous utilisez une fiche Web ASP.NET, l'éditeur de balise n'est pas
supporté. Si vous utilisez une fiche HTML, vous pouvez afficher l'éditeur de balise dans le concepteur en sélectionnant
Voir Editeur de balise.
L'éditeur de balise permet d'examiner et de modifier des balises HTML tout en affichant les contrôles correspondants dans le
concepteur situé au dessus. L'éditeur de balise vous permet d'utiliser les fonctionnalités d'achèvement de code, d'audit
d'erreur et d'achèvement de template dynamique également disponibles dans l'éditeur de code. Reportez-vous aux liens
présents à la fin de cette rubrique pour de plus amples informations sur chacune de ces fonctionnalités.
L'éditeur de balise fonctionne balise par balise sauf si vous avez sélectionné l'objet Document ou effectué un zoom arrière à
partir d'une balise. Quand l'objet document est sélectionné, vous verrez l'élément "DOCUMENT" sur l'inspecteur d'objets.
Utilisez les boutons de zoom pour effectuer un zoom arrière jusqu'au parent d'une balise et revenir en zoom avant à la balise
enfant sélectionnée. Le zoom n'est pas spécifique à une balise mais générique pour le balisage du document lui-même. Par
exemple, si le curseur est positionné sur une balise dans votre balisage HTML et si vous utilisez la commande Zoom, celle-ci
vous amènera vers la balise externe ou à un niveau au-dessus de l'attribut où se trouve le curseur.
La validation des règles du standard HTML se fait automatiquement. Si la validation échoue, l'élément incorrect est mis en rouge
dans le concepteur et l'audit d'erreur apparaît dans l'éditeur de balise pour vous aider à corriger le problème.
Remarque: L'éditeur de balise
n'est pas disponible dans une application ASP.NET.
Pour visualiser le code HTML pour un contrôle individuel
1. Dans le concepteur, faites glisser un élément HTML depuis la palette d'outils vers la surface du concepteur. L'éditeur de
balise affiche le code HTML.
2. Pour visualiser le code du contrôle individuel, cliquez n'importe où sur la surface du concepteur afin de désélectionner le
contrôle. Le code HTML apparaît dans la fenêtre de l'éditeur de balise, avec une mise en évidence de la syntaxe. L'en-tête
gris de l'éditeur de balise affiche maintenant la balise de plus haut niveau, généralement la balise FORM qui définit cette fiche
Web particulière.
Remarque: Si un contrôle est défini en utilisant plusieurs lignes de code HTML, lorsque vous sélectionnez le contrôle, la
première ligne du code est affichée dans l'en-tête gris de l'éditeur de balise. Le code supplémentaire apparaît ci-dessous
dans la fenêtre de l'éditeur de balise.
2
Pour visualiser le code HTML pour tous les contrôles
1. Dans le concepteur, faites glisser plusieurs éléments HTML depuis la palette d'outils vers la surface du concepteur. L'éditeur
affiche le code HTML de chaque élément à mesure que vous les déposez à la surface du concepteur.
2. Cliquez n'importe où sur la surface du concepteur pour désélectionner tous les contrôles. Cela affiche le code pour tous les
contrôles dans l'éditeur de balise, avec une mise en évidence de la syntaxe.
Pour modifier un contrôle
1. Cliquez n'importe où sur la surface du concepteur pour désélectionner tous les contrôles.
205
Gestion de contrôles utilisateur ASP.NET
RAD Studio pour .NET
2.5 Procédures ASP.NET
2. Localisez la balise correspondant au contrôle que vous souhaitez modifier.
3. Modifiez le code. Le changement est immédiatement répercuté dans le contrôle sur la surface du concepteur.
4. Enregistrez votre projet pour rendre les modifications permanentes.
Pour modifier les propriétés de l'éditeur
1. Choisissez Outils Options Options HTML/ASP.NET.
2. Modifiez des propriétés de l'éditeur de code.
3. Cliquez sur OK. Les modifications prennent effet immédiatement.
Pour effectuer un zoom entre le contenu de la fiche et le conteneur des fiches
1. Pour faire un zoom arrière afin de pouvoir visualiser la définition d'une fiche HTML, cliquez sur la flèche bleue à gauche dans
l'en-tête gris de l'éditeur de balise.
Remarque: Vous ne pouvez utiliser cette fonctionnalité que lorsque le curseur se trouve quelque part dans l'éditeur de
balise, plutôt que sur la surface du concepteur.
2. Pour faire un zoom avant afin de pouvoir visualiser uniquement le contenu des balises FORM, cliquez sur la flèche bleue à
droite dans l'en-tête gris de l'éditeur de balise.
Remarque: Vous ne pouvez utiliser cette fonctionnalité que lorsque le curseur se trouve quelque part dans l'éditeur de
balise, plutôt que sur la surface du concepteur.
Pour fermer l'éditeur de balise
1. Choisissez Outils Options Options HTML/ASP.NET.
2. Désélectionnez l'option Afficher l'éditeur de balise.
3. Cliquez sur OK.
Voir aussi
Utilisation de l'éditeur de code
Personnalisation de l'éditeur de code
Utilisation des templates dynamiques
Utilisation de l'audit de code
2
2.5.24 Gestion de contrôles utilisateur ASP.NET
Les contrôles utilisateur permettent de réutiliser la fonctionnalité d'interface utilisateur commune entre applications web
ASP.NET. Par exemple, vous pourriez créer un contrôle utilisateur encapsulant un écran de connexion. Vous pourriez ensuite
ajouter le contrôle utilisateur à n'importe quelle fiche Web nécessitant la fonctionnalité écran de connexion. Pour plus
d'informations sur les contrôles utilisateur, cliquez sur le lien à la fin de cette rubrique.
Pour créer un contrôle utilisateur ASP.NET
1. Ouvrez une application ASP.NET.
2. Choisissez Fichier Nouveau Autre Projets Delphi pour .NET Nouveaux fichiers ASP.NET et double-cliquez sur
Contrôle utilisateur ASP.NET. Un nouveau fichier .ascx est ajouté au gestionnaire de projets et la page vide s'affiche
dans le concepteur. Le cas échéant, renommez le fichier .ascx en cliquant avec le bouton droit dans le gestionnaire de
206
2.5 Procédures ASP.NET
RAD Studio pour .NET
Gestion de contrôles utilisateur ASP.NET
projets et en choisissant Renommer. Tous les fichiers associés, comme les fichiers d'extension .pas ou .resx, sont
également renommés.
3. Effectuez le travail de conception de la page en ajoutant des contrôles, en définissant des propriétés et en ajoutant du code
au fichier .pas sous-jacent si nécessaire.
4. Enregistrez et compilez le projet.
Pour ajouter un contrôle utilisateur ASP.NET à une fiche Web
1. Ouvrez la fiche Web dans laquelle vous voulez ajouter le contrôle utilisateur. Assurez-vous que le concepteur est visible.
2. Choisissez Insérer Insérer un contrôle utilisateur pour afficher la boîte de dialogue Insertion d'un contrôle utilisateur.
3. Sélectionnez un contrôle utilisateur dans la liste déroulante ou utilisez le bouton Parcourir pour accéder à un fichier de
contrôle utilisateur (.ascx).
4. Cliquez sur OK pour ajouter le contrôle utilisateur à la fiche Web.
5. Le cas échéant, dans l'inspecteur d'objets, indiquez un nom descriptif pour le bouton du contrôle utilisateur avec la propriété
Id.
6. Enregistrez et compilez le projet.
La fiche Web s'affiche dans le navigateur et le bouton de contrôle utilisateur est remplacé par ses contrôles encapsulés.
Conseil: L'apparence d'exécution du contrôle utilisateur dépend non pas de la position du bouton mais de l'apparence de la
page et des contrôles encapsulés. Si vous ajoutez plusieurs contrôles utilisateur dans une page, exécutez l'application pour
vous assurer qu'ils ne se chevauchent pas.
Voir aussi
Contrôles utilisateur des fiches Web
2
207
Accès à une application de services Web
RAD Studio pour .NET
2.6 Procédures de services Web
2.6 Procédures de services Web
Cette section propose des informations relatives au développement et à l'utilisation de services web.
Rubriques
Nom
Description
Accès à une application de services Web "Hello World" ASP.NET (
215)
Ajout de références Web dans des projets ASP.NET (
see page
see page 217)
Construction d'une application de services Web "Hello World" ASP.NET (
page 219)
Pour exploiter l'application de services Web que vous avez créée, vous devez
créer une application client qui accédera à l'application de services Web
ASP.NET. Ce processus requiert différentes étapes de développement pour
atteindre le résultat recherché.
Pour pouvoir utiliser un service web, vous devez créer une application client et
ajouter une référence Web. Ces procédures expliquent comment créer une
application client ASP.NET qui utilise un service web d'un fournisseur tiers.
L'application client utilise le service web DeadOrAliveWS disponible sur le site
Web XMethods. Ce service vous permet de rechercher des dates de naissance
et de décès dans la base de données simple de célébrités.
see
Portage d'une application client de services Web Delphi pour Win32 vers Delphi
pour .NET ( see page 220)
La construction d'une application avec des services Web ASP.NET vous permet
d'exposer des fonctionnalités à votre application client sur une connexion Web.
Ces étapes vous guident dans la construction d'une application "Hello World"
simple avec des services Web ASP.NET. Une fois construite, l'application
expose tous ses objets et méthodes par le biais d'un WebMethod que vous créez
et atteignez via un navigateur Web.
Les étapes suivantes sont nécessaires au portage de votre application client de
services Web Win32 vers Delphi pour .NET.
2.6.1 Accès à une application de services Web "Hello World"
ASP.NET
Pour exploiter l'application de services Web que vous avez créée, vous devez créer une application client qui accédera à
l'application de services Web ASP.NET. Ce processus requiert différentes étapes de développement pour atteindre le résultat
recherché.
Pour accéder à une application de services Web "Hello World" ASP.NET
1. Créez une application client.
2. Ajoutez une référence Web pour un service Web XML.
3. Créez la logique de code sous-jacent.
2
4. Exécutez l'application client.
Pour créer une application client
1. Choisissez Fichier Nouveau Autre. La boîte de dialogue Nouveaux éléments apparaît.
2. Sélectionnez n'importe quel type d'application pour créer votre client, comme une application Windows Forms ou une
application Web ASP.NET. Pour cet exemple, nous allons créer une application Windows Forms (Delphi pour .NET ou C#).
3. Cliquez sur OK. Une boîte de dialogue Nouveau projet apparaît.
Pour ajouter une référence Web pour une application de services Web ASP.NET
1. Choisissez Projet Ajouter une référence Web.
2. Dans la zone de texte adresse dans la partie supérieure de la boîte de dialogue web Navigateur UDDI CodeGear, entrez
l'URL suivante :
208
2.6 Procédures de services Web
RAD Studio pour .NET
Ajout de références Web dans des projets
http://localhost/WebService1/WebService1.asmx
Remarque: Le nom de votre application peut être différent de WebService1. Dans ce cas, utilisez le nom de votre application à
la place de WebService1 dans l'exemple précédent.
3. Appuyez sur Entrée.
Remarque: Si vous devez déterminer le chemin correct et que vous utilisez IIS, vous pouvez ouvrir l'administrateur IIS à
partir des outils d'administration dans le panneau de configuration de Windows XP. Trouvez le service web que vous avez
enregistré et compilé dans la liste des sites web IIS, puis consultez le nom du site et le nom du fichier .asmx
. Si vous avez entré le chemin correct, les informations concernant les WebMethods doivent s'afficher.
4. Cliquez sur le lien Description du service pour visualiser le document WSDL.
5. Cliquez sur Ajouter une référence pour ajouter le document WSDL à l'application client. Un dossier Références Web est
ajouté au répertoire Projet dans le gestionnaire de projet qui contient le fichier WebService1.wsdl et la boîte de dialogue
disparaît.
Pour créer la logique de code sous-jacent
1. Ajoutez un objet Button dans Windows Form.
2. Double-cliquez sur le contrôle Button pour visualiser le fichier de code sous-jacent.
3. Pour un client Delphi pour .NET, implémentez l'événement Click dans l'éditeur de code avec le code suivant :
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
var
ws: TWebService1;
begin
ws := TWebService1.Create;
button1.Text := ws.HelloWorld();
end;
Quand vous avez ajouté la référence Web à votre application, RAD Studio a utilisé le document WSDL pour générer une classe
proxy qui représente le service Web "Hello World". L'événement Click utilise des méthodes de la classe proxy pour accéder au
service web. Pour un client Delphi pour .NET, vous devrez peut-être ajouter le nom d'unité de la classe proxy (par exemple,
localhost.WebService1) à la clause uses de votre unité Windows Form pour éviter les erreurs dans l'événement Click.
4. Pour un client C#, implémentez l'événement Click dans l'éditeur de code avec le code suivant :
private void button1_Click(object sender, System.EventArgs e)
{
TWebService1 ws = new TWebService1();
button1.Text = ws.HelloWorld();
}
Pour exécuter l'application client
1. Enregistrez l'application.
2
2. Compilez le projet et exécutez-le.
3. Cliquez sur le bouton dans votre application client. La mention "Hello World" apparaît sur le bouton.
Voir aussi
Présentation des services Web ASP.NET (
Gestion des services Web ASP.NET (
see page 104)
see page 109)
Construction d'une application de services Web "Hello World" ASP.NET (
see page 219)
209
Ajout de références Web dans des projets
RAD Studio pour .NET
2.6 Procédures de services Web
2.6.2 Ajout de références Web dans des projets ASP.NET
Pour pouvoir utiliser un service web, vous devez créer une application client et ajouter une référence Web. Ces procédures
expliquent comment créer une application client ASP.NET qui utilise un service web d'un fournisseur tiers. L'application client
utilise le service web DeadOrAliveWS disponible sur le site Web XMethods. Ce service vous permet de rechercher des dates de
naissance et de décès dans la base de données simple de célébrités.
Pour créer un projet ASP.NET
1. Choisissez Fichier Nouveau Autre. La boîte de dialogue Nouveaux éléments apparaît.
2. Double-cliquez sur l'icône Application Web ASP.NET dans la catégorie d'élément Projets Delphi pour .NET. La boîte de
dialogue Nouvelle application ASP.NET apparaît.
3. Dans le champ Nom, entrez le nom du projet.
4. Dans le champ Emplacement, entrez le chemin d'accès au projet.
Conseil: La plupart des projets ASP.NET résident dans le répertoire IIS Inetpub\wwwroot
.
5. Si nécessaire, cliquez sur le bouton Afficher les options pour modifier les paramètres de votre serveur Web.
Conseil: Comme les options par défaut du serveur suffisent généralement, cette étape est facultative.
6. Cliquez sur OK. Le concepteur de fiches Web apparaît.
Pour concevoir la page web ASP.NET
1. Si nécessaire, cliquez sur la vue Conception.
2. Dans la catégorie Contrôles Web de la palette d'outils, placez un Button sur la surface du concepteur. Le contrôle Button
apparaît sur le concepteur. Assurez-vous que le contrôle est sélectionné.
3. Dans l'inspecteur d'objets, définissez la propriété Text sur Dead or Alive?.
4. Dans la catégorie Contrôles Web de la palette d'outils, placez un composant TextBox sur la surface du concepteur
au-dessus de Button. Tapez votre requête au service Web.
5. Placez un composant Label sous le Button. Les résultats de la requête au service web s'affichent.
Utilisez le navigateur UDDI pour chercher le service Web DeadOrAlive sur Internet. Vous pourrez ainsi utiliser les méthodes et
objets publiés par le document WSDL (Web Service Definition Language).
2
Pour ajouter la référence Web de DeadOrAliveWS
1. Choisissez Projet Ajouter une référence Web.
2. Dans la boîte de dialogue web Navigateur UDDI CodeGear, cliquez sur le lien XMethods (intégralité) dans la liste des
répertoires UDDI disponibles. La liste des divers services web publiés sur le site Web XMethods s'affiche.
3. Cliquez sur le lien DeadOrAliveWS.
Conseil: La combinaison de touches Ctrl+F
vous permet d'effectuer des recherches dans le Navigateur UDDI CodeGear.
4. Cliquez sur le lien du fichier WSDL :
http://www.abundanttech.com/webservices/deadoralive/deadoralive.wsdl
Un document WSDL apparaît. Ce document XML décrit l'interface du service web DeadOrAliveWS.
210
2.6 Procédures de services Web
RAD Studio pour .NET
Ajout de références Web dans des projets
5. Cliquez sur Ajouter une référence pour ajouter le document WSDL à l'application client. Un dossier Références Web
contenant un noeud com.abundanttech.www est ajouté au répertoire Projet dans le gestionnaire de projet.
Pour écrire la logique de l'application
1. Si nécessaire, cliquez sur la vue Conception.
2. Double-cliquez sur le bouton Dead or Alive? pour visualiser le fichier de code sous-jacent.
3. Pour une application de services Web Delphi pour .NET, implémentez l'événement Click dans l'éditeur de code avec le code
suivant :
procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs);
var
result: DataSet;
ws: DeadOrAlive;
currentTable: DataTable;
currentRow: DataRow;
currentCol: DataColumn;
begin
//Initialise le service web
ws := DeadOrAlive.Create;
//Envoie l'entrée au service web
result := ws.getDeadOrAlive(TextBox1.Text);
//analyse les résultats et les affiche
Label1.Text := '';
for currentTable in result.Tables do
begin
Label1.Text := Label1.Text + '<p>' + #13#10;
for currentRow in currentTable.Rows do
begin
for currentCol in currentTable.Columns do
begin
Label1.Text := Label1.Text + currentCol.ColumnName + ': ';
Label1.Text := Label1.Text + (currentRow[currentCol]).ToString;
Label1.Text := Label1.Text + '<br>' + #13#10;
end;
end;
Label1.Text := Label1.Text + '</p>';
end;
end;
Quand vous avez ajouté la référence Web à votre application, RAD Studio a utilisé le document WSDL pour générer une classe
proxy qui représente le service Web "Hello World". L'événement Click utilise des méthodes de la classe proxy pour accéder au
service web. Pour des services Web Delphi pour .NET, vous devrez peut-être ajouter le nom d'unité de la classe proxy
(abundanttech.deadoralive) à la clause uses de votre unité Web Form pour éviter les erreurs dans l'événement Click.
2
Pour exécuter l'application
1. Choisissez Projet Construire tous les projets. Votre projet est maintenant créé et réside sur votre serveur ASP.NET.
2. Ouvrez un navigateur Web.
3. Tapez l'URL du fichier .aspx de votre application Web et appuyez sur Entrée.
Conseil: Si vous utilisez Microsoft IIS, l'URL est le chemin d'accès au fichier .aspx
indiqué après Inetpub\wwwroot. Par exemple, si le chemin de votre application Web est
c:\Inetpub\wwwroot\WebApplication1 et si votre fichier .aspx est nommé "WebForm1.aspx", l'URL sera
http://localhost/WebApplication1/WebForm1.aspx.
4. Si nécessaire, entrez votre nom d'utilisateur et votre mot de passe pour le serveur ASP.NET. La page web de votre
application web s'affiche.
211
Construction d'une application de services
RAD Studio pour .NET
2.6 Procédures de services Web
5. Entrez le nom d'une célébrité (par exemple, Isaac Asimov) dans la zone de saisie et cliquez sur le bouton Dead or Alive?.
Votre application demande ces informations au service web DeadOrAliveWS et affiche le résultat dans le libellé.
Remarque: Si aucune information ne s'affiche, ce nom ne se trouve peut-être pas dans la base de données. Vérifiez
l'orthographe ou essayez avec un autre nom.
Voir aussi
Création d'applications Web ASP.NET
Présentation des services Web ASP.NET (
see page 104)
Construction d'une application de services Web "Hello World" ASP.NET (
Accès à une application de services Web "Hello World" ASP.NET (
see page 219)
see page 215)
TDataset
2.6.3 Construction d'une application de services Web "Hello
World" ASP.NET
La construction d'une application avec des services Web ASP.NET vous permet d'exposer des fonctionnalités à votre application
client sur une connexion Web. Ces étapes vous guident dans la construction d'une application "Hello World" simple avec des
services Web ASP.NET. Une fois construite, l'application expose tous ses objets et méthodes par le biais d'un WebMethod que
vous créez et atteignez via un navigateur Web.
Pour créer une application "Hello World" simple avec les services Web ASP.NET
1. Créer une application de services Web ASP.NET.
2. Créer un WebMethod.
3. Tester et exécuter l'application de services Web ASP.NET.
Remarque: Actuellement, avec RAD Studio vous pouvez seulement créer des services web en utilisant la méthode de code
sous-jacent. Vous ne pouvez pas utiliser la méthode de code en ligne, dans laquelle vous codez votre service web dans le
fichier <NomService>.asmx
. Actuellement, RAD Studio ne prend pas en charge la méthode de code en ligne de création de services web.
Pour créer une application de services Web ASP.NET
1. Choisissez Fichier Nouveau Autre. La boîte de dialogue Nouveaux éléments apparaît.
2
2. Sélectionnez le dossier Projets ASP pour la langue que vous utilisez.
3. Sélectionnez Application Service Web ASP.NET. Une boîte de dialogue Nom de l'application apparaît.
4. Entrez un nom et un emplacement pour l'application dans les champs et conservez toutes les autres valeurs par défaut.
Remarque: Si vous utilisez le serveur Web Cassini, vous devez modifier les entrées Emplacement et Serveur. Vous devez
également vous assurer de configurer le serveur Web Cassini avant de tenter d'exécuter cette application. Choisissez
Outils->Options
et sélectionnez Options ASP.NET pour définir le Chemin et le Port pour Cassini.
5. Cliquez sur OK. Un fichier WebService1.asmx et un WebService1.asmx.<typefichier> sont automatiquement créés.
Pour créer un WebMethod
1. Sélectionnez l'onglet WebService.pas ou WebService.asmx.cs en bas de l'éditeur de code. Si vous donnez un nom
212
2.6 Procédures de services Web
RAD Studio pour .NET
Portage d'une application client de services
différent du nom par défaut à votre application de service Web, c'est ce nom qui apparaîtra sur l'onglet. Le code de
l'application "Hello World" est déjà inclus dans le WebMethod qui est créé lorsque vous créez l'application de services Web.
2. Décommentez l'exemple WebMethods dans le fichier de code sous-jacent. Dans les applications Delphi pour .NET, vous
devez décommenter deux WebMethods "Hello World" : dans le module Interface et dans le module Implémentation.
3. Choisissez Projet Construire <nom_projet> pour construire votre projet.
4. Exécutez votre projet. Cette opération appelle le navigateur qui héberge le service Web. Les pages que vous verrez incluront
le code exemple SOAP et HTTP que vous pouvez utiliser pour accéder aux WebMethods. Vous pouvez exécuter les
exemples et voir comment les résultats sont transmis à un fichier XML de sortie.
Pour tester et exécuter manuellement le service web XML
1. A partir d'un navigateur Web, entrez l'emplacement du fichier WebService1.asmx sur votre hôte local :
http://localhost/WebService1/WebService1.asmx
Les pages que vous verrez incluront le code exemple SOAP et HTTP que vous pouvez utiliser pour accéder aux WebMethods.
Vous pouvez exécuter les exemples et voir comment les résultats sont transmis à un fichier XML de sortie.
Remarque: Vous pourrez utiliser une syntaxe légèrement différente de celle présentée dans cette étape. Par exemple, sur
certaines machines Windows XP, l'identificateur localhost doit être le nom de votre machine. Ainsi, si le nom de votre machine
est MaMachine, la syntaxe serait : http://MaMachine/WebService1/Webservice1.asmx.
2. Testez les deux méthodes à partir d'un navigateur Web.
Voir aussi
Présentation des services Web ASP.NET (
Gestion des services Web ASP.NET (
see page 104)
see page 109)
Accès à une application de services Web "Hello World" ASP.NET (
see page 215)
2.6.4 Portage d'une application client de services Web
Delphi pour Win32 vers Delphi pour .NET
Les étapes suivantes sont nécessaires au portage de votre application client de services Web Win32 vers Delphi pour .NET.
Pour porter votre service Web
1. Modifiez les composants fiche RIO existants.
2. Modifiez la clause uses.
2
3. Ajoutez une référence Web.
4. Modifiez le code d'invocation des services web.
Pour changer vos composants fiche existants
1. Copiez et enregistrez l'URL de référence Web de votre composant RIO existant.
2. Supprimez le composant HTTPRio de la fiche s'il n'a pas été dynamiquement créé.
Pour changer la clause uses
1. Retirez toutes les unités SOAP Delphi pour Win32 de la clause. Ces unités comprennent entre autres InvokeRegistry, RIO et
SOAPHTTPClient.
Avertissement: La liste d'unités précédente n'est pas exhaustive. Vérifiez que vous avez identifié toutes les unités SOAP,
quelle que soit la convention de nommage. Toutes les unités ne comportent pas le mot SOAP dans leur nom.
213
Portage d'une application client de services
RAD Studio pour .NET
2.6 Procédures de services Web
2. Retirez la référence à l'unité proxy Interface Importer WSDL Delphi pour Win32.
3. Retirez l'unité proxy du projet.
Pour ajouter une référence Web
1. Ouvrez un projet Delphi pour Win32 dans RAD Studio et choisissez Projet Ajouter une référence Web. Une fois le projet
enregistré, le navigateur UDDI apparaît.
2. Entrez l'URL à utiliser, soit un service que vous connaissez déjà, soit le service que vous avez enregistré à partir de votre
composant RIO dans la zone de liste en haut du navigateur.
Remarque: Pour chercher un fichier WSDL sur votre disque local, cliquez sur le bouton points de suspension à côté de la
zone de liste et cherchez le document. Si vous voulez utiliser un service publié, vous pouvez aussi naviguer jusqu'à l'un des
sites de service Web listés dans le navigateur UDDI.
3. Cliquez sur le bouton Ajouter référence pour ajouter le document WSDL à votre projet. RAD Studio crée la référence Web
nécessaire et l'unité proxy correspondante en fonction du document WSDL. Un nouveau noeud Références Web apparaît
dans le gestionnaire de projet. Développez-le pour voir les fichiers WSDL et de code proxy associés.
4. Choisissez Fichier Utiliser l'unité.
Pour changer le code d'invocation du service web
1. Dans le fichier de code de votre application, trouvez le code qui invoque le service Web. Supposons qu'il ressemble à ceci :
procedure TForm1.Button1Click(Sender: TObject);
var
HelloService: Service3Soap;
begin
// La ligne suivante sera légèrement différente si vous avez
// utilisé un composant ou généré la méthode de façon dynamique.
// Le code a cet aspect si vous avez utilisé un composant.
HelloService := (HTTPRIO1 as Service3Soap);
// Le code a cet aspect si vous l'avez créé de façon dynamique.
// GetService3Soap est la méthode globale de l'unité proxy.
HelloService := GetService3Soap;
Caption := HelloService.HelloWorld;
end;
2. Remplacez la section var suivante :
2
var
// Type de l'ancienne interface proxy.
HelloService: Service3Soap;
to
var
// Type de la nouvelle classe proxy.
HelloService: Service3;
Cet exemple suppose que le nom de votre service est Service3. Remplacez ce nom par celui du service à utiliser.
Remarque: Vous pouvez constater que ce qui était créé comme une interface est maintenant créé comme une classe. Comme
.NET Framework fournit un récupérateur de mémoire automatique, certaines restrictions d'utilisation des classes dans les
versions précédentes de Delphi ne s'appliquent peut-être plus dans RAD Studio.
3. Changez la première ligne du bloc de procédure :
HelloService := (HTTPRIO1 as Service3Soap);
214
2.6 Procédures de services Web
RAD Studio pour .NET
Portage d'une application client de services
to:
HelloService := Service3.Create;
Le code mis à jour doit ressembler à ceci :
procedure TForm1.Button1Click(Sender: TObject);
var
HelloService: Service3;
begin
HelloService := Service3.Create;
Caption := HelloService.HelloWorld;
end;
Votre code est probablement plus complexe que cet exemple. Néanmoins, ces instructions couvrent la procédure de base du
portage vers RAD Studio des applications Delphi pour Win32 qui utilisent des services web.
Voir aussi
Portage de services Web vers Delphi pour .NET (
Présentation des services Web (
see page 79)
see page 104)
2
215
3
RAD Studio pour .NET
Index
application de porte-documents
AutoUpdateCache (propriété) 194
applications VCL
A
déploiement d'applications de bases de données
dbExpress 164
Accès à une application de services Web "Hello World"
ASP.NET 215
ensembles de données client 158
événements 160
ADO.NET
applications de bases de données 158
fiches 160
architecture 14
fournisseurs d'ensembles de données 158
ASP.NET 84
graphiques 158
composants connexion 158
projet Windows Forms 160
Editeur de CommandText 136
sources de données 158
Editeur de texte de commande 135
ASP.NET
Editeur prévisualisation d'adaptateur 134
architecture 84
namespace 14
contrôles DB Web 195
présentation 14, 62, 76
présentation 84
AdoDbx
authentification de l'utilisateur
UseUniqueFileName 204
migration BDP 17
AdoDbx.NET
AutoUpdateCache
UseUniqueFileName 194
fournisseurs de données 27
types de données 11
AdoDbxClient
présentation 6
B
base de données
affichage des images bitmap 171
ajouter une nouvelle connexion 136
affichage des noeuds enfants 165
Concepteur d'adaptateur de données 136
Affichage d'une image bitmap dans une application Fiches VCL
171
Concepteur d'ensemble de données 137
Ajout de références Web dans des projets ASP.NET 217
Ajout de valeurs agrégées avec DBWebAggregateControl 200
connexions 124
création d'un projet 118, 130, 144
dbExpress 31, 33
Ajout d'un dialogue Erreur de conciliation BDP à votre
application BDP 114
dbExpress pour .NET 9
Ajout d'une nouvelle connexion à l'explorateur de données 114
dbGo pour .NET 10
Ajout d'une référence à un serveur COM 148
Base de données
Ajout d'une référence J2EE 148
ajout de la conciliation des erreurs 114
ancêtre
ajouter une nouvelle connexion 114
base 170
API Win32
code non managé 63
Application ADO.NET 182
application ASP.NET 181, 185, 187, 188, 189, 190
exécution de SQL 120
explorer les objets 116
modification des connexions 123
utilisation de l'onglet prévisualisation d'adaptateur de
données 134
utilisation du concepteur de génération d'ensemble de
a
RAD Studio pour .NET
données 141
BDE.NET
base de données 7
bitmaps
boîte à options 174
composants connexion 182
composants de données 182
IIS 158, 181
serveur Web 182, 189
connexion
DataBind 182
C
grille de données 182
ClearSessionChanges (méthode) 100
source de données 182
Client DataSnap .NET
base de données 7
clients de services Web
portage 74
Compatibilité du framework dbExpress 33
composants
connexion 87
importation 76
orientés données 87
Composants AdoDbx.NET
ADO 27
composants bases de données
configuration 119
composants VCL.NET
VCL.NET 76
compte d'utilisateur ASP.NET
trous de sécurité 205
concepteurs de composant
configuration d'adaptateur de données 22
Editeur de connexions 22
Editeur de texte de commande 22
Ensemble de données 22
Procédure stockée (boîte de dialogue) 22
relation 22
Concepteurs de composants ADO.NET 22
Conception d'une application ASP .NET 181
Conception d'une application de bases de données ASP.NET
182
Conception d'une application Fiches VCL de bases de données
dbExpress.NET 164
Concepts 1
configuration
b
Connexion à AdoDbx Client 117
Connexion à une base de données à l'aide du framework de
pilote dbExpress 143
connexion des grilles de données 158
Connexion du client AdoDbx
construction 117
connexions
connexion MS Access 124
connexion MS SQL Server 124
Connexion Sybase 124
connexions à la base de données 124
constructeur de propriétés
contrôles DB Web 203
constructeurs
destructeurs 63
construction
applications Fiches VCL avec composants XML 165
fiches VCL hello world 162
menus de fiches VCL 163
Construction d'applications Fiches VCL avec graphiques 158
Construction d'un plan de site ASP .NET 190
Construction d'une application "Hello World" ASP.NET 189
Construction d'une application ASP.NET avec des contrôles de
base de données, Partie 2 187
Construction d'une application ASP.NET avec des contrôles de
base de données, Partie 3 188
Construction d'une application avec des composants XML 165
Construction d'une application avec les contrôles DB Web 195
Construction d'une application de base de données distribuée
144
Construction d'une application de base de données résolvant
plusieurs tables 130
Construction d'une application de services Web "Hello World"
3
3
RAD Studio pour .NET
ASP.NET 219
Construction d'une application Fiches VCL 160
Construction d'une application Fiches VCL Hello World 162
Construction d'une application Fiches VCL.NET de base de
données ADO.NET 158
contrôle utilisateur
ASP.NET 213
contrôle utilisateur ASP.NET 213
contrôles .NET
contrôles VCL et .NET 176
contrôles DB Web
architecture 87
ASP.NET 87
bibliothèque 208
configuration 195
espace de nommage 87
préparation des projets 195
Contrôles DBWeb
interfaces WebDataLink 102
contrôles VCL et .NET
package de contrôle .NET 176
Conversion d'éléments HTML en contrôles serveur 196
Création d'actions dans une application Fiches VCL 160
Création de mappages de tables 119
Création de métadonnées pour un ensemble de données 199
Création de projets de base de données dans l'explorateur de
données 118
Création d'un fichier XML pour des contrôles DB Web 197
Création d'un nouveau composant VCL .NET 170
DataSync (composant)
configuration 130
DB2
AdoDbx.NET 11
dbExpress.NET
base de données 7
dbGo
base de données 7
DBWebAggregateControl
valeurs agrégées 200
DBWebDataSource
configuration 195
Débogage et mise à jour d'applications ASP.NET 201
Définition de permissions pour l'utilisation de fichiers XML 204
Delphi pour .NET
Web Forms 84
Dépannage d'applications ASP.NET 205
déploiement
Applications BDE pour .NET 26
Applications BDP.NET 26
applications dbExpress pour .NET 26
Applications dbGo pour .NET 26
applications de bases de données 26
Applications Interop COM 46
contrôles DB Web 87
gestionnaire de déploiement ASP.NET 208
Gestionnaire de déploiement ASP.NET 202
Déploiement d'applications ASP.NET 101
Création d'un répertoire virtuel 200
Déploiement d'applications de bases de données pour le .NET
Framework 26
Création d'une application de porte-documents avec des
contrôles DB Web 194
Déploiement des applications Interop COM 46
Déploiement d'une application ASP.NET avec Blackfish SQL
vers un système sans RAD Studio 202
D
dessin
data
gestion distante 144
database
Editeur de texte de commande 135
DataHub (composant)
configuration 130
lignes droites 173
polygones 173
rectangles et ellipses 172
Dessin de lignes droites dans une application Fiches VCL 173
Dessin de rectangles et d'ellipses dans une application Fiches
VCL 172
c
RAD Studio pour .NET
Dessin d'un rectangle arrondi dans une application Fiches VCL
173
Développement d'applications avec des composants VCL.NET
61
exemple
hello world ASP.NET 189
Expert des contrôles DB Web
contrôles personnalisés 92
Développement d'applications avec du code non managé 40
Développement d'applications de bases de données avec
ADO.NET 3
Développement d'applications Web avec ASP.NET 82
expert d'importation de contrôles WinForm
contrôles .NET dans VCL 176
explorateur de données
Développement de services Web avec ASP.NET 104
Développement d'états pour les applications .NET 59
définition 22
Explorateur de données
Développement d'une application ASP.NET avec des contrôles
de base de données, Partie 1 185
exécution de SQL 120
ISQLDataSource 22
données
migration 122
modification des connexions 123
exploration d'une base de données 116
Exploration d'une base de données dans l'explorateur de
données 116
E
ECO Framework 151
Exportation d'un diagramme de visualisation de code en image
150
Editeur de balise 211
Editeur de balise HTML
modification des balises HTML 211
effacement du texte 163
ensemble de données
fichiers XML 199
Ensemble de données
mappages de tables 119
ensemble de données client
TClientDataSet 164
ensembles de données unidirectionnels
composants dbExpress 164
envoi
commandes 182
erreurs ASP.NET
messages HTTP 203
F
fiche VCL
ajout d'un code de bouton et d'événement 162
création 162
exécution d'une application exemple 162
image bitmap 174
fiches VCL
menus 160
fichiers XML
Avantages de XML 98
fichiers XML DBWeb 197
sources de données DBWeb 98
fonctions de callback
fonctions 46
fonctions non managées
API Win32 46
É
fournisseurs de données
événements boîtes à options
OnDrawItem 174
d
architecture 27
Fournisseurs de données pour .NET (AdoDbx)
ADO.NET 27
E
Fournisseurs de données pour Microsoft .NET 27
Exécution SQL dans l'explorateur de données 120
Framework dbExpress 31
3
3
RAD Studio pour .NET
Interfaces DB Web 92
Interfaces de bibliothèques virtuelles 54
G
interfaces utilisateur
Génération de messages HTTP dans ASP.NET 203
Gestion de contrôles utilisateur ASP.NET 213
ADO.NET 14
Interopérabilité COM 40, 148
Gestion des erreurs dans le mappage de table 121
Assemblages d'interopérabilité dans l'EDI 40
Gestion des services Web ASP.NET 109
Outils du SDK 40
gestionnaires d'événements
OnPaint 172, 173
H
Terminologie 40
Introduction à InterBase Express 34
L
HTTP
Le cycle de vie ASP.NET
messages 205
Le traitement ASP.NET 92
liaison
I
composants 208
IBX.NET
InterBase 7
Liaison de colonnes dans un contrôle DBWebGrid 203
liaison de données
IDBWebColumnLink
IDBWebDataLink 102
liaison des contrôles DB Web 92
limitations des vues de données
IDBWebLookupColumnLink 102
IDBWebDataLink 102
insertion d'enregistrements 100
logique de code sous-jacent 181, 189
IIS
dépannage 205
images bitmap 174
Importation de contrôles .NET dans VCL.NET 176
Importation et exportation d'un modèle avec XMI (XML
Metadata Interchange) 151
M
maître-détail
vues de données 100
mappages de tables
Insertion d'une image bitmap dans un contrôle d'une application
Fiches VCL 174
configuration 119
installation d'ASP.NET
suppression 119
réinstallation 205
Interbase
connexions 124
InterBase
ADO.NET 11
composants 34
Interfaces
AdoDbx.NET 27
interfaces COM
interfaces 46
erreurs 121
menus
actions 160
actions standard 160
application exemple 160
fiches VCL 160
messages HTTP
erreurs 203
métadonnées
fichiers de schéma XML 199
mappages d'ensembles de données 199
e
RAD Studio pour .NET
migration
tables 122
platform invoke 46
portage
migration BDP 17
portage VCL.NET 76
Migration de données entre des bases de données 122
Portage d'applications VCL 74
mises à jour en cascade
Portage de clients de services Web 79
base de données 89
MissingMappingAction (propriété)
erreurs 121
MissingSchemaAction, propriété
erreurs 121
Modélisation 57
Modification des connexions dans l'explorateur de données 123
Modification des connexions de bases de données 124
modification des contrôles DB Web
extension des contrôles 92
Modifications requises en raison du support 64 bits .NET 2.0
62, 167
MS SQL
ADO.NET 11
Portage d'une application client de services Web Delphi pour
Win32 vers Delphi pour .NET 220
Présentation de ADO.NET 14
Présentation de AdoDbx Client 6
Présentation de ASP.NET 84
Présentation de Blackfish SQL 20
Présentation de la migration BDP 17
Présentation de la mise en pool des connexions BDP 8
Présentation de la visualisation de code 57
Présentation de l'API de navigation des contrôles DB Web 91
Présentation de l'expert des contrôles DB Web 92
Présentation de VCL pour .NET 76
Présentation des composants dbExpress 9
Présentation des composants dbGo 10
Présentation des contrôles DB Web CodeGear 87
N
Présentation des procédures stockées 30
Nouvelles fonctionnalités du langage 74
Présentation des services Web ASP.NET 104
Problèmes de langage au sujet du portage d'applications VCL
vers RAD Studio 63
O
Procédures 111
Oracle
ADO.NET 11
Procédures ASP.NET 178
Procédures d'applications interopérables 148
Procédures de bases de données 112
P
Procédures de modélisation 150
page ASP.NET 181, 189
Procédures de services Web 215
paramètres
procédures stockées
présentation 30
base de données 132
Pascal
modifications du langage 74
Passage de paramètres dans une application de base de
données 132
permissions de fichiers XML
permissions 204
Pile de protocole de services Web 107
PInvoke
f
Procédures VCL pour .NET 155
projet ASP.NET 181, 189
R
Rave Reports 59
création de nouveaux états 59
redéfinir Render
Render 92
3
3
RAD Studio pour .NET
références d'objets
transmission de références 46
ASP.NET 84
string
références web 217
répertoire virtuel, création dans l'EDI 200
char 63
structures
résolution
tables multiples 130
pointeurs 46
suppressions en cascade
ressources
migration 63
base de données 89
Sybase
ADO.NET 11
S
ServerSupport
ASP.NET 84
T
tables
services web
client 215
mappages 119
TDataSetProvider
services Web
accès 217
fournisseur dbExpress 164
TDataSource
accès à une application services Web 215
architecture 104
source de données dbExpress 164
TDBGrid
ASP.NET 104
connexion dbExpress 164
construction d'une application 219
Technologies de bases de données VCL pour .NET 7
création d'une application client 215
transtypages
description de service 107
espaces de nommage 109
décomposeurs 63
types de données
fichiers 104
gestion client 109
ADO.NET 27
types de données .NET
gestion serveur 109
ADO.NET 11
messages xml 107
Types de données AdoDbx.NET 11
navigateur UDDI 217
types de données logiques
portage 79, 220
portage d'applications 79
AdoDbx.NET 11
types pointeurs
portage de fiches de services Web 79
portage 63
portage des applications Win32 vers .NET 220
prérequis 104
U
protocole 107
unidirectionnel, ensemble de données
recherche 107
références web 217
scénarios 104
transport de service 107
Services web
TSQLDataSet 164
Utilisation de ActionManager pour créer des actions dans une
application Fiches VCL 163
Utilisation de contrôles DB Web dans les applications
maître-détail 89
Utilisation de DrInterop 45
g
RAD Studio pour .NET
Utilisation de fichiers XML avec des contrôles DB Web 98
Utilisation de la fenêtre Vue globale 153
Utilisation de la fenêtre Vue modèle et du diagramme
Visualisation du code 152
Utilisation de la prévisualisation d'adaptateur de données 134
Utilisation de l'éditeur de balise HTML 211
Utilisation de l'éditeur de texte de commande 135
Utilisation de l'expert Contrôle DB Web 208
Utilisation de l'interopérabilité COM dans les applications
managées 40
Utilisation de Platform Invoke avec Delphi pour .NET 46
Utilisation de Rave Reports dans RAD Studio 59
Utilisation d'ensembles de données typés 141
Utilisation des ensembles de données standard 137
Utilisation des interfaces WebDataLink 102
Utilisation des vues de données 100
Utilisation du concepteur adaptateur de données 136
Utilisation du concepteur éditeur de connexion 136
Utilisation du gestionnaire de déploiement ASP.NET 208
V
valeurs null dans des agrégats
caption (propriété) 200
variants
TVarRec 63
VCL
portage 74
VCL pour .NET
graphiques 171
VCL.NET
architecture 76
espace de nommage 76
portage 63
Visualisation de code 57, 150, 152, 153
exportation des diagrammes 150
vues de données
propriétés d'exécution 100
X
XML
h
contrôles DB Web 197
XML et authentification
Mise en mémoire cache XML 98
3

Documents pareils