Guide du développeur: Borland Delphi 6 pour Windows
303
103
9MB
French
Pages pagination multiples; 23 cm
[1280]
Year 2001
Report DMCA / Copyright
DOWNLOAD PDF FILE
Table of contents :
Guide du développeur......Page 1
Table des matières......Page 3
Contenu de ce manuel......Page 31
Support technique......Page 33
Partie I: Programmation Delphi......Page 35
Environnement de développement intégré......Page 37
Conception d’applications......Page 38
Création des projets......Page 39
Edition du code......Page 40
Débogage des applications......Page 41
Déploiement des applications......Page 42
Présentation des bibliothèques de composants......Page 43
Propriétés, méthodes et événements......Page 44
Evénements......Page 45
Pascal Objet et les bibliothèques de classes......Page 46
Qu’est-ce qu’un objet?......Page 47
Examen d’un objet Delphi......Page 48
Modification du nom d’un composant......Page 50
Portée et qualificateurs......Page 51
Déclarations privées, protégées, publiques et publiées......Page 52
Utilisation de variables objet......Page 53
Création, instanciation et destruction d’objets......Page 54
Objets, composants et contrôles......Page 55
Branche TObject......Page 57
Branche TComponent......Page 58
Branche TControl......Page 60
Branche TWinControl/TWidgetControl......Page 61
Propriétés de position, de taille et d’alignement......Page 62
Propriétés de glisser-déplacer......Page 63
Evénements standard communs à TControl......Page 64
Propriétés d’informations générales......Page 65
Propriétés de glisser-ancrer (VCL seulement)......Page 66
Création de l’interface utilisateur de l’application......Page 67
Utilisation de composants Delphi......Page 68
Utilisation des éditeurs de propriété......Page 69
Génération d’un nouveau gestionnaire d’événement......Page 70
Association d’un événement à un gestionnaire d’événement existant......Page 71
Suppression de gestionnaires d’événements......Page 73
Composants VCL et CLX......Page 74
Contrôles texte......Page 76
Propriétés communes aux contrôles mémo et de texte formaté......Page 77
Barres graduées......Page 78
Contrôles touche d’accès rapide (VCL seulement)......Page 79
Contrôles bouton......Page 80
Turboboutons......Page 81
Barres d’outils......Page 82
Boîtes liste et boîtes liste de cases à cocher......Page 83
Boîtes à options......Page 84
Vues liste......Page 85
Boîtes groupe et groupes de boutons radio......Page 86
Boîtes de défilement......Page 87
Rétroaction visuelle......Page 88
Barres d’état......Page 89
Grilles de dessin......Page 90
Editeur de liste de valeurs (VCL seulement)......Page 91
Images......Page 92
Contrôles animation (VCL seulement)......Page 93
Utilisation des boîtes de dialogue d’ouverture......Page 94
Utilisation des listes......Page 95
Lecture et enregistrement des listes de chaînes......Page 96
Création d’une nouvelle liste de chaînes......Page 97
Manipulation des chaînes d’une liste......Page 99
Registre Windows et fichiers .INI (VCL seulement)......Page 101
Utilisation de TRegIniFile......Page 102
Impression......Page 103
Utilisation des flux......Page 104
Compréhension des classes......Page 107
Définition des classes......Page 109
Réponse aux exceptions......Page 111
Exceptions et contrôle d’exécution......Page 112
Protection de l’allocation de ressources......Page 113
Création d’un bloc de protection de ressource......Page 114
Gestion des exceptions RTL......Page 115
Qu’est-ce qu’une exception RTL?......Page 116
Instructions de gestion des exceptions......Page 117
Utilisation de l’instance d’exception......Page 118
Spécification du gestionnaire d’exception par défaut......Page 119
Redéclenchement de l’exception......Page 120
Gestion des exceptions des composants......Page 121
Gestion des exceptions et sources externes......Page 122
Définition d’exceptions personnalisées......Page 123
Déclenchement d’une exception......Page 124
Interfaces en tant que caractéristiques du langage......Page 125
Implémentation des interfaces au travers de la hiérarchie......Page 126
Utilisation d’interfaces avec des procédures......Page 127
TInterfacedObject......Page 128
Utilisation de l’opérateur as......Page 129
Utilisation de implements pour la délégation......Page 130
Agrégation......Page 131
Utilisation du comptage de références......Page 132
Situations où il ne faut pas utiliser le comptage de références......Page 133
Utilisation des interfaces dans les applications distribuées (VCL seulement)......Page 134
Définition de variants personnalisés......Page 135
Stockage des données d’un type Variant personnalisé......Page 136
Transtypage......Page 137
Implémentation d’opérations binaires......Page 139
Implémentation d’opérations de comparaison......Page 141
Implémentation d’opérations unaires......Page 142
Copie et effacement des variants personnalisés......Page 143
Chargement et enregistrement des valeurs des variants personnalisés......Page 144
Ecriture d’utilitaires fonctionnant avec un type variant personnalisé......Page 145
Support des propriétés et des méthodes dans les variants personnalisés......Page 146
Utilisation de TInvokeableVariantType......Page 147
Utilisation des chaînes......Page 148
Types chaîne......Page 149
Chaînes courtes......Page 150
Chaînes étendues......Page 151
Routines de la bibliothèque d’exécution manipulant des chaînes......Page 152
Routines usuelles de manipulation des chaînes longues......Page 153
Déclaration et initialisation de chaînes......Page 156
Mélange et conversion de types chaîne......Page 157
Renvoi d’une variable locale PChar......Page 158
Transfert d’une variable locale comme PChar......Page 159
Directives de compilation portant sur les chaînes......Page 160
Manipulation de fichiers......Page 161
Recherche d’un fichier......Page 162
Copie d’un fichier......Page 164
Types fichier et E/S de fichier......Page 165
Création et ouverture de fichiers......Page 166
Lecture et écriture de fichiers......Page 167
Lecture et écriture de chaînes......Page 168
Position et taille de fichier......Page 169
Exécution des conversions simples......Page 170
Création d’une famille de conversion simple et ajout d’unités......Page 171
Utilisation d’une fonction de conversion......Page 173
Utilisation d’une classe pour gérer les conversions......Page 174
Définition des types de données......Page 177
Applications d’interface utilisateur graphique......Page 179
Applications MDI......Page 180
Modèles de programmation......Page 181
Applications service......Page 182
Threads de service......Page 184
Propriétés de nom d’un service......Page 186
Débogage des services......Page 187
Utilisation des paquets et des DLL......Page 188
Ecriture d’applications de bases de données......Page 189
Création d’applications serveur Web......Page 190
Utilisation de l’agent Web......Page 191
Utilisation d’InternetExpress......Page 192
Ecriture d’applications en utilisant COM......Page 193
Utilisation de modules de données......Page 194
Création et modification de modules de données standard......Page 195
Nom d’un module de données et de son fichier unité......Page 196
Placer et nommer les composants......Page 197
Création de règles de gestion dans un module de données......Page 198
Ajout d’un module de données distant à un projet serveur d’application......Page 199
Ajout d’éléments au référentiel d’objets......Page 200
Héritage d’un élément......Page 201
Modification d’éléments partagés......Page 202
Activation de l’aide dans les applications......Page 203
Implémentation de ICustomHelpViewer......Page 204
Demande d’informations au gestionnaire d’aide......Page 205
Affichage de l’aide sur un mot clé......Page 206
Implémentation de IExtendedHelpViewer......Page 207
Implémentation de IHelpSelector......Page 208
Utilisation de l’aide dans une application VCL......Page 209
Utilisation de l’aide dans une application CLX......Page 210
Appel direct à un système d’aide......Page 211
Personnalisation du système d’aide de l’EDI......Page 212
Utilisation de la fiche principale......Page 215
Liaison de fiches......Page 216
Manipulation de l’application......Page 217
Gestion de la disposition......Page 218
Réponse aux notifications d’événement......Page 219
Utilisation des fiches......Page 220
Création dynamique de fiche......Page 221
Utilisation d’une variable locale pour créer une instance de fiche......Page 222
Transfert de paramètres supplémentaires aux fiches......Page 223
Récupération de données dans les fiches non modales......Page 224
Récupération de données dans les fiches modales......Page 226
Création et utilisation des modèles de composants......Page 228
Création des cadres......Page 229
Utilisation et modification des cadres......Page 230
Partage des cadres......Page 231
Organisation des actions pour les barres d’outils et les menus......Page 232
Qu’est-ce qu’une action?......Page 234
Création des barres d’outils et des menus......Page 235
Ajout d’icônes aux menus et aux barres d’outils......Page 237
Création de barres d’outils et de menus personnalisables par l’utilisateur......Page 238
Cacher les éléments et les catégories inutilisés dans les bandes d’action......Page 239
Définition des listes d’actions......Page 240
Que se passe-t-il lors du déclenchement d’une action?......Page 241
Réponse par les événements......Page 242
Comment les actions trouvent leurs cibles......Page 243
Classes d’actions prédéfinies......Page 244
Conception de composants utilisant des actions......Page 245
Recensement d’actions......Page 246
Ouverture du concepteur de menus......Page 247
Nom des menus......Page 249
Ajout, insertion et suppression d’éléments de menu......Page 250
Ajout de lignes de séparation......Page 251
Création de sous-menus......Page 252
Déplacement d’éléments de menu......Page 253
Ajout d’images à des éléments de menu......Page 254
Edition des éléments de menu dans l’inspecteur d’objets......Page 255
Déplacement parmi les menus à la conception......Page 256
Utilisation des modèles de menu......Page 257
Enregistrement d’un menu comme modèle......Page 258
Conventions de nom pour les éléments et les gestionnaires d’événements des modèles de menu......Page 259
Ordre des éléments de menu fusionnés: propriété GroupIndex......Page 260
Importation de fichiers ressource......Page 261
Conception de barres d’outils et de barres multiples......Page 262
Ajout d’un turbobouton à un volet......Page 263
Création d’un groupe de turboboutons......Page 264
Ajout d’un bouton outil......Page 265
Définition de l’aspect et de l’état initial d’un bouton outil......Page 266
Ajout d’un composant barre multiple......Page 267
Réponse aux clics......Page 268
Masquage et affichage d’une barre d’outils......Page 269
Programmes exemple......Page 270
Début de l’opération glisser-déplacer......Page 271
Acceptation des éléments à déplacer......Page 272
Personnalisation du glisser-déplacer avec un objet déplacement......Page 273
Implémentation du glisser-ancrer dans les contrôles......Page 274
Transformation d’un contrôle en un enfant ancrable......Page 275
Contrôle de l’ancrage des contrôles enfant......Page 276
Manipulation du texte dans les contrôles......Page 277
Ajout de barres de défilement en mode exécution......Page 278
Sélection de texte......Page 279
Couper, copier et coller du texte......Page 280
Désactivation des éléments de menu......Page 281
Gestion de l’événement OnPopup......Page 282
Ajout de graphiques à des contrôles......Page 283
Ajout d’images à une application......Page 284
Dessiner des éléments dessinés par le propriétaire......Page 285
Dimensionnement des éléments dessinés par le propriétaire......Page 286
Dessin des éléments par le propriétaire......Page 287
Présentation de la programmation relative aux graphiques......Page 289
Rafraîchissement de l’écran......Page 290
Types des objets graphiques......Page 291
Propriétés et méthodes communes du canevas......Page 292
Utilisation des propriétés de l’objet canevas......Page 293
Utilisation des crayons......Page 294
Utilisation des pinceaux......Page 296
Dessin de lignes et de polylignes......Page 298
Dessin de formes......Page 299
Gestion de plusieurs objets de dessin dans votre application......Page 300
Faire le suivi de l’outil de dessin à utiliser......Page 301
Utilisation des outils de dessin......Page 302
Dessiner sur un graphique......Page 305
Ajout d’un contrôle image......Page 306
Chargement d’une image depuis un fichier......Page 308
Remplacement de l’image......Page 309
Utilisation du presse-papiers avec les graphiques......Page 310
Couper des graphiques dans le presse-papiers......Page 311
Coller des graphiques depuis le presse-papiers......Page 312
Répondre à la souris......Page 313
Ajout d’un champ à un objet fiche......Page 316
Amélioration du dessin des lignes......Page 317
Ajout de séquences vidéo silencieuses à une application......Page 319
Exemple d’ajout de séquences vidéo silencieuses......Page 320
Ajout de séquences audio et/ou vidéo à une application......Page 321
Exemple d’ajout de séquences audio et/ou vidéo (VCLseulement)......Page 323
9: Ecriture d’applications multithreads......Page 325
Définition d’objets thread......Page 326
Affectation d’une priorité par défaut......Page 327
Utilisation du thread principal VCL/CLX......Page 328
Gestion des exceptions dans la fonction thread......Page 330
Coordination de threads......Page 331
Utilisation de sections critiques......Page 332
Autres techniques de partage de la mémoire......Page 333
Attente de l’achèvement d’une tâche......Page 334
Démarrage et arrêt des threads......Page 336
Débogage d’applications multithreads......Page 337
Création d’applications multiplates-formes......Page 339
Portages multiplates-formes......Page 341
Portage de votre application......Page 342
CLX et VCL......Page 344
Styles......Page 345
Registre......Page 346
Autres différences......Page 347
Fonctionnalités non portées......Page 348
Comparaison entre les unités CLX et VCL......Page 349
Partage des fichiers source entre Windows et Linux......Page 353
Différences d’environnement entre Windows et Linux......Page 354
Structure de répertoires sous Linux......Page 356
Ecriture de code portable......Page 357
Utilisation des directives conditionnelles......Page 358
Terminaison des directives conditionnelles......Page 360
Inclusion de code assembleur inline......Page 361
Messages et événements système......Page 362
Différences de programmation sous Linux......Page 363
Applications de bases de données multiplates-formes......Page 364
Différences de dbExpress......Page 365
Différences au niveau composant......Page 366
Portage d’applications de bases de données vers Linux......Page 367
Mise à jour des données dans les applications dbExpress......Page 370
Portage d’applications Internet vers Linux......Page 372
11: Utilisation des paquets et des composants......Page 373
Les paquets et les DLL standard......Page 374
Utilisation des paquets dans une application......Page 375
Choix des paquets d’exécution à utiliser......Page 376
Paquets de conception......Page 377
Installation de paquets de composants......Page 378
Création d’un paquet......Page 379
Modification d’un paquet existant......Page 380
Nom de paquets......Page 381
Clause Contains......Page 382
Directives de compilation propres aux paquets......Page 383
Fichiers paquets créés lors d’une compilation réussie......Page 385
Fichiers de collection de paquets......Page 386
Internationalisation......Page 389
Jeux de caractères......Page 390
Jeux de caractères sur plusieurs octets......Page 391
Inclure des fonctionnalités bi-directionnelles dans les applications......Page 392
Propriété BiDiMode......Page 395
Texte......Page 397
Formats et ordre de tri......Page 398
Création de DLL de ressources......Page 399
Utilisation des DLL de ressource......Page 400
Basculement dynamique de DLL de ressource......Page 401
Localisation des ressources......Page 402
Déploiement d’applications généralistes......Page 403
Utilisation des programmes d’installation......Page 404
Fichiers paquet......Page 405
Modules de fusion......Page 406
Contrôles ActiveX......Page 407
Déploiement d’applications CLX......Page 408
Déploiement d’applications de bases de données......Page 409
Déploiement d’applications de bases de données dbExpress......Page 410
Le moteur de bases de données Borland......Page 411
SQL Links......Page 412
Déploiement d’applications Web......Page 413
Déploiement pour Apache......Page 414
Si vous n’utilisez pas de redimensionnement dynamique......Page 415
Si vous redimensionnez dynamiquement les fiches et les contrôles......Page 416
Fontes......Page 417
Termes du contrat de licence logicielle......Page 418
Documentation de produits vendus par un tiers......Page 419
Partie II: Développement d’applications de bases de données......Page 421
Utilisation des bases de données......Page 423
Types de bases de données......Page 425
Sécurité des bases de données......Page 426
Transactions......Page 427
Architecture des bases de données......Page 428
Module de données......Page 429
Connexion directe à un serveur de bases de données......Page 431
Utilisation d’un fichier dédié sur disque......Page 432
Connexion à un autre ensemble de données......Page 434
Connexion d’un ensemble de données client à un autre ensemble dedonnées dans la même application......Page 436
Utilisation d’une architecture multiniveau......Page 437
Combinaison des approches......Page 438
Conception de l’interface utilisateur......Page 439
Ecriture de rapports......Page 440
15: Utilisation de contrôles de données......Page 441
Fonctionnalités communes des contrôles de données......Page 442
Association d’un contrôle de données à un ensemble de données......Page 443
Activation et désactivation de la source de données......Page 444
Edition et mise à jour des données......Page 445
Edition des données affichées dans un contrôle......Page 446
Activation et désactivation de l’affichage des données......Page 447
Affichage d’un seul enregistrement......Page 448
Affichage et édition de champs dans une zone de saisie......Page 449
Affichage et édition de texte dans un contrôle mémo......Page 450
Affichage et édition de champs graphiques dans un contrôle image......Page 451
Affichage de données dans des boîtes liste et des boîtes à options......Page 452
Manipulation de champs booléens avec des cases à cocher......Page 455
Limitation de valeurs de champ avec des boutons radio......Page 456
Affichage de plusieurs enregistrements......Page 457
Utilisation d’un contrôle grille à son état par défaut......Page 458
Création d’une grille personnalisée......Page 459
Présentation des colonnes persistantes......Page 460
Création de colonnes persistantes......Page 461
Modification de l’ordre des colonnes persistantes......Page 462
Définition des propriétés de colonne en mode conception......Page 463
Définition d’une colonne de liste de référence......Page 464
Restauration des valeurs par défaut d’une colonne......Page 465
Affichage des champs ADT et tableau......Page 466
Définition des options de la grille......Page 468
Saisie de modifications dans la grille......Page 469
Contrôle du dessin de la grille......Page 470
Comment répondre aux actions de l’utilisateur à l’exécution......Page 471
Création d’une grille qui contient d’autres contrôles orientés données......Page 472
Navigation et manipulation d’enregistrements......Page 473
Choix des boutons visibles......Page 474
Affichage et dissimulation des boutons à l’exécution......Page 475
Utilisation d’un navigateur pour plusieurs ensembles de données......Page 476
Présentation......Page 477
Présentation des références croisées......Page 478
Instructions relatives à l’utilisation de composants d’aide à la décision......Page 479
Utilisation d’ensembles de données avec les composants d’aide à la décision......Page 481
Création d’ensembles de données de décision avec l’éditeur de requête de décision......Page 482
Utilisation des cubes de décision......Page 483
Visualisation et modification des paramètres de dimensions......Page 484
Visualisation et modification des options de conception......Page 485
Utilisation de pivots de décision......Page 486
Création de grilles de décision......Page 487
Réorganisation des lignes et des colonnes d’une grille de décision......Page 488
Propriétés des grilles de décision......Page 489
Création de graphes de décision......Page 490
Utilisation de graphes de décision......Page 491
Affichage du graphe de décision......Page 492
Personnalisation du graphe de décision......Page 493
Définition des modèles de graphe de décision par défaut......Page 494
Personnalisation des séries d’un graphe de décision......Page 495
Pivots de décision à l’exécution......Page 496
Considérations relatives au contrôle de la mémoire......Page 497
Définition de l’état des dimensions......Page 498
Utilisation de dimensions paginées......Page 499
17: Connexion aux bases de données......Page 501
Utilisation de connexions implicites......Page 502
Connexion à un serveur de bases de données......Page 503
Contrôle de la connexion au serveur......Page 504
Gestion des transactions......Page 506
Démarrage d’une transaction......Page 507
Achèvement d’une transaction non réussie......Page 509
Spécification du niveau d’isolement des transactions......Page 510
Envoi de commandes au serveur......Page 511
Fermeture d’ensembles de données sans déconnexion du serveur......Page 513
Obtention de métadonnées......Page 514
Enumération des procédures stockées disponibles......Page 515
Enumération des paramètres de procédure stockée......Page 516
18: Présentation des ensembles de données......Page 517
Utilisation des descendants de TDataSet......Page 518
Détermination des états d’un ensemble de données......Page 519
Ouverture et fermeture des ensembles de données......Page 521
Navigation dans les ensembles de données......Page 522
Utilisation des méthodes First et Last......Page 523
Utilisation de la méthode MoveBy......Page 524
Eof......Page 525
Bof......Page 526
La méthode FreeBookmark......Page 527
Utilisation de la méthode Locate......Page 528
Utilisation de la méthode Lookup......Page 529
Affichage et édition d’ensembles de données en utilisant des filtres......Page 530
Création de filtres......Page 531
Définition de la propriété Filter......Page 532
Ecriture d’un gestionnaire d’événement OnFilterRecord......Page 533
Définition d’options de filtre......Page 534
Navigation parmi les enregistrements d’un ensemble de données filtré......Page 535
Modification d’enregistrements......Page 536
Ajout de nouveaux enregistrements......Page 537
Insertion d’enregistrements......Page 538
Suppression d’enregistrements......Page 539
Annulation des modifications......Page 540
Modification d’enregistrements entiers......Page 541
Champs calculés......Page 542
Types d’ensembles de données......Page 543
Utilisation d’ensembles de données de type table......Page 545
Obtention d’informations sur les index......Page 546
Spécification d’un index avec IndexName......Page 547
Utilisation d’index pour chercher des enregistrements......Page 548
Exécution d’une recherche avec les méthodes Goto......Page 549
Recherche sur des clés partielles......Page 550
Présentation des différences entre les portées et les filtres......Page 551
Spécification de portées......Page 552
Modification d’une portée......Page 555
Création de relations maître/détail......Page 556
Comment faire de la table la partie détail d’un autre ensemble de données......Page 557
Utilisation de tables détail imbriquées......Page 559
Création de tables......Page 560
Vidage des tables......Page 563
Synchronisation des tables......Page 564
Utilisation d’ensembles de données de type requête......Page 565
Spécification d’une requête en utilisant la propriété SQL......Page 566
Spécification d’une requête en utilisant la propriété CommandText......Page 567
Utilisation de paramètres dans les requêtes......Page 568
Fourniture des paramètres pendant la conception......Page 569
Fourniture des paramètres pendant l’exécution......Page 570
Etablissement de relations maître/détail en utilisant des paramètres......Page 571
Préparation des requêtes......Page 572
Utilisation d’ensembles de résultats unidirectionnels......Page 573
Utilisation d’ensembles de données de type procédure stockée......Page 574
Utilisation de paramètres avec les procédures stockées......Page 575
Définition des paramètres pendant la conception......Page 576
Utilisation des paramètres pendant l’exécution......Page 578
Exécution de procédures stockées qui ne renvoient pas d’ensemble de résultats......Page 579
Lecture de plusieurs ensembles de résultats......Page 580
19: Manipulation des composants champ......Page 581
Composants champ dynamique......Page 582
Champs persistants......Page 583
Création de champs persistants......Page 584
Définition de nouveaux champs persistants......Page 586
Définition d’un champ de données......Page 587
Définition d’un champ calculé......Page 588
Programmation d’un champ calculé......Page 589
Définition d’un champ de référence......Page 590
Suppression de champs persistants......Page 592
Définition des propriétés d’affichage et d’édition en mode conception......Page 593
Création des ensembles d’attributs pour les composants champ......Page 595
Suppression des associations d’ensembles d’attributs......Page 596
Utilisation des formats par défaut pour les champs numériques, date etheure......Page 597
Gestion des événements......Page 598
Manipulation des méthodes de champ lors de l’exécution......Page 599
Affichage de valeurs dans les contrôles standard......Page 600
Conversion des valeurs de champs......Page 601
Accès à des valeurs par la propriété Fields d’un ensemble de données......Page 603
Utilisation de contraintes......Page 604
Utilisation des contraintes du serveur......Page 605
Utilisation des champs objet......Page 606
Utilisation des champs ADT......Page 607
Utilisation de la propriété FieldValues d’un ensemble de données......Page 608
Utilisation de champs persistants......Page 609
Affichage des champs ensemble de données......Page 610
Affichage des champs de référence......Page 611
Accès aux données d’un champ de référence......Page 612
Architecture BDE......Page 613
Utilisation d’ensembles de données BDE......Page 614
Association d’un ensemble de données avec les connexions de bases de données et de session......Page 615
Mise en cache des BLOBS......Page 616
Utilisation de TTable......Page 617
Contrôle d’accès en lecture/écriture aux tables locales......Page 618
Spécification d’un fichier d’index dBASE......Page 619
Importation des données d’une autre table......Page 620
Utilisation de TQuery......Page 621
Création de requêtes hétérogènes......Page 622
Obtention d’un ensemble de résultats modifiable......Page 623
Mise à jour des ensembles de résultats en lecture seule......Page 624
Manipulation des procédures stockées redéfinies d’Oracle......Page 625
Association d’un composant base de données à une session......Page 626
Identification de la base de données......Page 627
Ouverture d’une connexion avec TDatabase......Page 629
Gestion des sessions de bases de données......Page 630
Activation d’une session......Page 632
Spécification du comportement de la connexion de base de données par défaut......Page 633
Gestion des connexions de bases de données......Page 634
Manipulation des tables Paradox et dBASE protégées par mot de passe......Page 636
Spécification des répertoires Paradox......Page 639
Manipulation des alias BDE......Page 640
Récupération des informations d’une session......Page 642
Création de sessions supplémentaires......Page 643
Gestion de sessions multiples......Page 644
Utilisation des transactions avec le BDE......Page 646
Utilisation du SQL transparent......Page 647
Utilisation de transactions locales......Page 648
Utilisation du BDE pour placer en mémoire cache les mises à jour......Page 649
Activation des mises à jour BDE en mémoire cache......Page 650
Application des mises à jour BDE en mémoire cache......Page 651
Application des mises à jour en mémoire cache avec une base de données......Page 652
Application des mises à jour en mémoire cache avec les méthodes de composant base de données......Page 653
Création d’un gestionnaire d’événement OnUpdateRecord......Page 654
Gestion des erreurs de mise à jour en mémoire cache......Page 655
Utilisation d’objets mise à jour pour mettre à jour un ensemble de données......Page 657
Création d’instructions SQL pour les composants mise à jour......Page 658
Utilisation de plusieurs objets mise à jour......Page 663
Exécution des instructions SQL......Page 664
Création d’un composant action groupée......Page 667
Ajout et mise à jour d’enregistrements......Page 669
Mappage des types de données......Page 670
Exécution d’une action groupée......Page 671
Dictionnaire de données......Page 672
Outils de manipulation du BDE......Page 674
21: Utilisation des composants ADO......Page 677
Présentation générale des composants ADO......Page 678
Connexion à un stockage de données avec TADOConnection......Page 679
Connexions asynchrones......Page 681
Indication des types d’opérations pris en charge par la connexion......Page 682
Spécification de l’exécution automatique des transactions par la connexion......Page 683
Evénements se produisant pendant l’établissement d’une connexion......Page 684
Autres événements......Page 685
Utilisation des ensembles de données ADO......Page 686
Utilisation des ensembles d’enregistrements......Page 687
Filtrage d’enregistrements à partir de signets......Page 688
Utilisation des mises à jour groupées......Page 689
Lecture et enregistrement des données dans des fichiers......Page 692
Utilisation de TADODataSet......Page 693
Spécification de la commande......Page 695
Annulation des commandes......Page 696
Gestion des paramètres de commande......Page 697
22: Utilisation d’ensembles de données unidirectionnels......Page 699
Types d’ensembles de données unidirectionnels......Page 700
Configuration de TSQLConnection......Page 701
Spécification des paramètres de connexion......Page 702
Utilisation de l’éditeur de connexion......Page 703
Spécification des données à afficher......Page 704
Représentation d’une table en utilisant TSQLDataSet......Page 705
Représentation des résultats d’une procédure stockée......Page 706
Préparation de l’ensemble de données......Page 707
Exécution des commandes ne renvoyant pas d’enregistrement......Page 708
Exécution de la commande......Page 709
Création et modification des métadonnées du serveur......Page 710
Définition de curseurs liés maître/détail......Page 711
Récupération de métadonnées dans un ensemble de données unidirectionnel......Page 712
Structure des ensembles de métadonnées......Page 713
Débogage d’applications dbExpress......Page 717
Utilisation de TSQLMonitor pour contrôler les commandes SQL......Page 718
Utilisation d’un callback pour contrôler les commandes SQL......Page 719
23: Utilisation d’ensembles de données client......Page 721
Navigation parmi les données des ensembles de données client......Page 722
Limitation des enregistrements affichés......Page 723
Annulation des modifications......Page 726
Enregistrement des modifications......Page 727
Spécification de contraintes personnalisées......Page 728
Tri et indexation......Page 729
Ajout d’un nouvel index......Page 730
Utilisation des index pour regrouper les données......Page 731
Représentation des valeurs calculées......Page 732
Utilisation des agrégats maintenus......Page 733
Spécification d’agrégats......Page 734
Agrégats de groupes d’enregistrements......Page 735
Affectation directe des données......Page 736
Clonage d’un curseur d’ensemble de données client......Page 737
Utilisation d’un ensemble de données client pour mettre en cache les mises à jour......Page 738
Présentation de l’utilisation d’un cache pour les mises à jour......Page 740
Choix du type d’ensemble de données pour les mises à jour en cache......Page 741
Indication des enregistrements modifiés......Page 742
Application des mises à jour......Page 744
Intervention pendant l’application des mises à jour......Page 745
Conciliation des erreurs de mise à jour......Page 747
Utilisation d’un ensemble de données client avec un fournisseur......Page 749
Spécification d’un fournisseur......Page 750
Extractions incrémentales......Page 751
Obtention de paramètres de l’ensemble de données source......Page 752
Transmission de paramètres à l’ensemble de données source......Page 753
Limitation des enregistrements avec des paramètres......Page 754
Gestion des contraintes liées au serveur......Page 755
Rafraîchissement des enregistrements......Page 756
Communication avec des fournisseurs à l’aide d’événements personnalisés......Page 757
Redéfinition de l’ensemble de données source......Page 758
Création d’un nouvel ensemble de données......Page 759
Chargement des données depuis un fichier ou un flux......Page 760
Sauvegarde des données dans un fichier ou un flux......Page 761
24: Utilisation des composants fournisseur......Page 763
Utilisation d’un ensemble de données comme source des données......Page 764
Communication avec l’ensemble de données client......Page 765
Détermination du mode d’application des mises à jour à l’aide d’un fournisseur d’ensemble de données......Page 766
Spécification des champs apparaissant dans les paquets de données......Page 767
Initialisation des options contrôlant les paquets de données......Page 768
Ajout d’informations personnalisées aux paquets de données......Page 769
Comment répondre aux demandes de données des clients......Page 770
Comment répondre aux demandes de mise à jour des clients......Page 771
Modification des paquets delta avant la mise à jour de la base de données......Page 772
Comment contrôler l’application des mises à jour......Page 773
Filtrage des mises à jour......Page 774
Application des mises à jour à des ensembles de données représentant plusieurs tables......Page 775
Comment répondre aux événements générés par le client......Page 776
Gestion des contraintes du serveur......Page 777
25: Création d’applications multiniveaux......Page 779
Avantages du modèle de base de données multiniveau......Page 780
Présentation des applications multiniveaux basées sur les fournisseurs......Page 781
Présentation d’une application à niveau triple......Page 782
Structure du serveur d’applications......Page 783
Contenu du module de données distant......Page 784
Utilisation des modules de données transactionnels......Page 785
Regroupement des modules de données distants......Page 787
Utilisation de connexions Socket......Page 788
Utilisation de connexions Web......Page 789
Construction d’une application multiniveau......Page 790
Création du serveur d’applications......Page 791
Configuration de TRemoteDataModule......Page 793
Configuration de TMTSDataModule......Page 794
Configuration de TSoapDataModule......Page 795
Configuration de TCorbaDataModule......Page 796
Extension de l’interface du serveur d’applications......Page 797
Extension de l’interface d’un serveur d’applications transactionnel......Page 798
Gestion des transactions dans les applications multiniveaux......Page 799
Gestion des relations maître/détail......Page 800
Gestion des informations d’état dans les modules de données distants......Page 801
Utilisation de plusieurs modules de données distants......Page 802
Recensement du serveur d’applications......Page 803
Création de l’application client......Page 804
Connexion au serveur d’applications......Page 805
Spécification d’une connexion à l’aide de DCOM......Page 806
Spécification d’une connexion à l’aide de sockets......Page 807
Spécification d’une connexion à l’aide de SOAP......Page 808
Courtage de connexions......Page 809
Connexion au serveur......Page 810
Appel des interfaces serveur......Page 811
Connexion à un serveur d’applications qui utilise plusieurs modules de données......Page 813
Ecriture des applications client Web......Page 814
Distribution d’une application client en tant que contrôle ActiveX......Page 815
Construction des applications Web avec InternetExpress......Page 816
Construction d’une application InternetExpress......Page 817
Utilisation des bibliothèques javascript......Page 818
Droits d’accès au serveur d’applications et à son lancement......Page 819
Lecture des paquets de données XML......Page 820
Application des mises à jour à partir des paquets delta XML......Page 821
Création des pages Web avec un producteur de page InternetExpress......Page 822
Utilisation de l’éditeur de pages Web......Page 823
Définition des propriétés des éléments Web......Page 824
Personnalisation du modèle d’un producteur de page InternetExpress......Page 825
Définition des transformations......Page 827
Correspondance entre les nœuds XML et les champs du paquet de données......Page 828
Utilisation de XMLMapper......Page 830
Définition des mappages......Page 831
Génération de fichiers de transformation......Page 832
Spécification de la transformation......Page 833
Conversion de nœuds définis par l’utilisateur......Page 834
Utilisation d’un document XML comme source pour un fournisseur......Page 835
Lecture d’un document XML à partir d’un fournisseur......Page 836
Application de mises à jour d’un document XML à un fournisseur......Page 837
Partie III: Ecriture d’applications Internet......Page 839
A propos de l’agent Web et de WebSnap......Page 841
Composition d’une URL (Uniform Resource Locator)......Page 843
Activité d’un serveur HTTP......Page 844
Traitement des requêtes client par le serveur......Page 845
Types d’applications serveur Web......Page 846
Débogage d’applications serveur......Page 847
Démarrage de l’application avec le débogueur d’application Web......Page 848
Débogage d’applications Web sous forme de DLL......Page 849
Débogage sous Windows 2000......Page 850
Création d’applications serveur Web avec l’agent Web......Page 851
Module Web......Page 852
Structure d’une application agent Web......Page 853
Répartiteur Web......Page 854
Répartition des messages de requête......Page 855
URL de destination......Page 856
Choix d’un élément d’action par défaut......Page 857
Réponse aux messages de requête avec des éléments d’action......Page 858
Propriétés contenant des informations d’en-tête de requête......Page 859
Propriétés identifiant le but de la requête......Page 860
Création de messages de réponse HTTP......Page 861
Indication d’attente d’une action du client......Page 862
Définition du contenu de la réponse......Page 863
Utilisation du composant générateur de page......Page 864
Modèles HTML......Page 865
Utilisation du générateur de page depuis un élément d’action......Page 866
Chaînage de générateurs de page......Page 867
Utilisation des bases de données dans les réponses......Page 868
Utilisation des générateurs de page ensemble de données......Page 869
Choix des attributs de tableau......Page 870
Configuration d’un générateur de tableau ensemble de données......Page 871
Configuration d’un générateur de tableau requête......Page 872
29: Utilisation de WebSnap......Page 873
Type de serveur......Page 874
Options des modules d’application Web......Page 875
Composants d’application......Page 876
Modules de données Web......Page 877
Modules de page Web......Page 878
Interfaces implémentées par le module de page Web......Page 879
Champs......Page 880
Modèles......Page 881
Blocs de script......Page 882
Comment inclure un script dans une page......Page 883
Objets scriptables......Page 884
WebContext......Page 885
Utilisation de composants d’adaptation pour générer du contenu......Page 886
Requêtes action......Page 888
Requête d’image......Page 889
Répartition des éléments d’action......Page 890
Fonctions du répartiteur de page......Page 891
Etape 3. Spécification du titre de l’application......Page 892
Etape 1. Ajout des composants orientés données......Page 893
Etape 3. Ajout d’un composant adaptateur......Page 894
Etape 2. Ajout de commandes de modification à la grille......Page 895
Etape 2. Enregistrement du nouveau module......Page 896
Etape 5. Ajout de boutons......Page 897
Etape 7. Liaison des actions de la grille à la page formulaire......Page 898
Etape 3. Test de la gestion d’erreurs......Page 899
Exécution de l’application......Page 900
30: Utilisation de documents XML......Page 901
Utilisation du modèle DOM......Page 902
Utilisation de TXMLDocument......Page 903
Utilisation des nœuds XML......Page 904
Ajout et suppression de nœuds enfant......Page 905
Abstraction de documents XML avec l’expert liaison de données......Page 906
Utilisation de l’expert Liaison de données XML......Page 907
Utilisation du code généré par l’expert Liaison de données XML......Page 909
31: Utilisation de services Web......Page 911
Conception d’un serveur service Web......Page 912
Définition des interfaces invocables......Page 914
Utilisation de types complexes dans des interfaces invocables......Page 915
Création et recensement de l’implémentation......Page 916
Création de classes d’exception personnalisées pour les services Web......Page 917
Génération de documents WSDL pour une application service Web......Page 918
Importation de documents WSDL......Page 919
Appel des interfaces invocables......Page 920
Implémentation des services......Page 923
Types de connexions par socket......Page 924
Description des sockets......Page 925
Description des hôtes......Page 926
Utilisation des composants socket......Page 927
Désignation du serveur souhaité......Page 928
Désignation du port......Page 929
Réponse aux événements socket......Page 930
Evénements d’écoute......Page 931
Connexions non bloquantes......Page 932
Connexions bloquantes......Page 933
Partie IV: Développement d’applications COM......Page 935
33: Présentation des technologies COM......Page 937
Extensions de COM......Page 938
Interfaces COM......Page 939
L’interface COM de base, IUnknown......Page 940
Serveurs COM......Page 941
CoClasses et fabricants de classes......Page 942
Serveurs en processus, hors processus et distants......Page 943
Le mécanisme du marshaling......Page 944
Agrégation......Page 945
Extensions de COM......Page 946
Serveurs Automation......Page 948
Contrôles ActiveX......Page 949
Documents Active......Page 950
Objets transactionnels......Page 951
Création de bibliothèques de types......Page 952
Accès aux bibliothèques de types......Page 953
Avantages des bibliothèques de types......Page 954
Implémentation des objets COM à l’aide d’experts......Page 955
Code généré par les experts......Page 959
34: Utilisation des bibliothèques de types......Page 961
L’éditeur de bibliothèques de types......Page 962
Composants de l’éditeur de bibliothèques de types......Page 963
Barre d’outils......Page 964
Les pages d’informations de type......Page 966
Eléments d’une bibliothèque de types......Page 969
Interfaces......Page 970
Définitions de types......Page 971
Utilisation de l’éditeur de bibliothèques de types......Page 972
Types autorisés......Page 973
Utilisation de la syntaxe Pascal Objet ou IDL......Page 975
Création d’une nouvelle bibliothèque de types......Page 981
Ouverture d’une bibliothèque de types existante......Page 982
Modification d’une interface en utilisant la bibliothèque de types......Page 983
Ajout de propriétés et méthodes à une interface ou dispinterface......Page 984
Ajout d’une CoClasse à une bibliothèque de types......Page 985
Ajout d’un alias à une bibliothèque de types......Page 986
Ajout d’un module à une bibliothèque de types......Page 987
Boîte de dialogue Appliquer les mises à jour......Page 988
Recensement d’une bibliothèque de types......Page 989
Déploiement des bibliothèques de types......Page 990
35: Création de clients COM......Page 993
Importation des informations d’une bibliothèque de types......Page 994
Utilisation de la boîte de dialogue Importation de bibliothèque de types......Page 995
Utilisation de la boîte de dialogue Importation d’ActiveX......Page 996
Code généré par l’importation des informations d’une bibliothèque de types......Page 997
Contrôle d’un objet importé......Page 998
Enveloppes des serveurs Automation......Page 999
Utilisation de contrôles ActiveX orientés données......Page 1001
Exemple: impression d’un document avec Microsoft Word......Page 1002
Etape 3: utilisation d’un objet interface VTable ou de répartition pour contrôler Microsoft Word......Page 1003
Connexion à un serveur......Page 1005
Contrôle d’un serveur Automation en utilisant une interface de répartition......Page 1006
Gestion des événements dans un contrôleur Automation......Page 1007
Création de clients pour les serveurs n’ayant pas une bibliothèque de types......Page 1009
Présentation de la création d’un objet COM......Page 1011
Utilisation de l’expert objet COM......Page 1012
Utilisation de l’expert objet Automation......Page 1014
Types d’instanciation des objets COM......Page 1015
Choix d’un modèle de thread......Page 1016
Ecriture d’un objet gérant le modèle de thread libre......Page 1018
Définition de l’interface d’un objet COM......Page 1019
Ajout d’une propriété à l’interface de l’objet......Page 1020
Exposition d’événements aux clients......Page 1021
Interfaces d’Automation......Page 1023
Interfaces doubles......Page 1024
Interfaces de répartition......Page 1025
Marshaling des données......Page 1026
Restrictions de type pour le marshaling automatique......Page 1027
Recensement d’un serveur hors processus......Page 1028
Test et débogage de l’application......Page 1029
37: Création d’une page Active Server......Page 1031
Création d’un objet Active Server......Page 1032
Application......Page 1034
Response......Page 1035
Session......Page 1036
Server......Page 1037
Recensement d’un serveur en processus......Page 1038
Test et débogage d’une application ASP......Page 1039
38: Création d’un contrôle ActiveX......Page 1041
Présentation de la création d’un contrôle ActiveX......Page 1042
Bibliothèque de types......Page 1043
Génération d’un contrôle ActiveX à partir d’un contrôle VCL......Page 1044
Génération d’un contrôle ActiveX basé sur une fiche VCL......Page 1046
Licences des contrôles ActiveX......Page 1047
Personnalisation de l’interface du contrôle ActiveX......Page 1048
Ajout de propriétés et de méthodes......Page 1049
Ajout d’événement......Page 1051
Activation de la liaison de données simple avec la bibliothèque de types......Page 1052
Création d’une nouvelle page de propriétés......Page 1053
Actualisation de la page de propriétés......Page 1054
Recensement d’un contrôle ActiveX......Page 1055
Déploiement d’un contrôle ActiveX sur le Web......Page 1056
Paramétrage des options......Page 1057
39: Création d’objets MTS ou COM+......Page 1059
Principe des objets transactionnels......Page 1060
Contraintes d’un objet transactionnel......Page 1061
Activation juste-à-temps......Page 1062
Regroupement des ressources......Page 1063
Fournisseurs de ressources base de données......Page 1064
Gestionnaire de propriétés partagées......Page 1065
Libération des ressources......Page 1066
Support transactionnel MTS et COM+......Page 1067
Attributs transactionnels......Page 1068
Initialisation de l’attribut transactionnel......Page 1069
Contrôle de l’arrêt des transactions......Page 1070
Définition d’un objet transaction côté client......Page 1071
Définition d’un objet transaction côté serveur......Page 1072
Sécurité en fonction des rôles......Page 1073
Présentation de la création des objets transactionnels......Page 1074
Utilisation de l’expert objet transactionnel......Page 1075
Choix d’un modèle de thread pour un objet transactionnel......Page 1076
Activités......Page 1077
Utilisation de l’expert objet événement......Page 1078
Transfert de références d’objets......Page 1079
Utilisation de la méthode SafeRef......Page 1080
Débogage et test des objets transactionnels......Page 1081
Installation d’objets transactionnels......Page 1082
Administration d’objets transactionnels......Page 1083
Partie V: Création de composants personnalisés......Page 1085
VCL et CLX......Page 1087
Composants et classes......Page 1088
Modification de contrôles existants......Page 1089
Création de contrôles graphiques......Page 1090
Contenu d’un composant?......Page 1091
Propriétés......Page 1092
Méthodes......Page 1093
Encapsulation des graphiques......Page 1094
Création d’un nouveau composant......Page 1095
Utilisation de l’expert composant......Page 1096
Dérivation du composant......Page 1098
Recensement du composant......Page 1099
Test des composants non installés......Page 1100
Test des composants installés......Page 1101
Définition de nouvelles classes......Page 1103
Modifier les valeurs par défaut d’une classe pour éviter les répétitions......Page 1104
Ancêtres, descendants et hiérarchies des classes......Page 1105
Contrôle des accès......Page 1106
Masquer les détails d’implémentation......Page 1107
Définition de l’interface d’exécution......Page 1108
Répartition des méthodes......Page 1109
Méthodes virtuelles......Page 1110
Surcharge des méthodes......Page 1111
Classes et pointeurs......Page 1112
Pourquoi créer des propriétés?......Page 1113
Types de propriétés......Page 1114
Publication des propriétés héritées......Page 1115
Stockage interne des données......Page 1116
Méthodes d’accès......Page 1117
Méthode read......Page 1118
Valeurs par défaut d’une propriété......Page 1119
Création de propriétés tableau......Page 1120
Création de propriétés pour les sous-composants......Page 1121
Création de propriétés pour les interfaces......Page 1123
Utilisation du mécanisme de stockage et de chargement......Page 1124
Détermination du stockage......Page 1125
Initialisation après chargement......Page 1126
Création de méthodes pour le stockage et le chargement de valeurs de propriétés......Page 1127
Redéfinition de la méthode DefineProperties......Page 1128
Qu’est-ce qu’un événement?......Page 1129
Les événements sont des propriétés......Page 1130
Les types gestionnaire d’événement sont des procédures......Page 1131
Les gestionnaires d’événements sont facultatifs......Page 1132
Evénements standard pour les contrôles standard......Page 1133
Changement de la gestion des événements standard......Page 1134
Deux sortes d’événements......Page 1135
Gestionnaires d’événements spécifiques......Page 1136
Appel de l’événement......Page 1137
Les utilisateurs peuvent surcharger la gestion par défaut......Page 1138
Eviter les interdépendances......Page 1139
Noms des méthodes......Page 1140
Méthodes qui doivent être protégées......Page 1141
Déclaration des méthodes......Page 1142
Présentation des graphiques......Page 1145
Travail sur les images......Page 1147
Chargement et stockage des graphiques......Page 1148
Spécification d’une palette pour un contrôle......Page 1149
Création et gestion des bitmaps hors écran......Page 1150
Réponse aux changements......Page 1151
Compréhension du système de gestion des messages......Page 1153
Répartition des messages......Page 1154
Modification de la gestion des messages......Page 1155
Utilisation des paramètres d’un message......Page 1156
Création de nouveaux gestionnaires de messages......Page 1157
Déclaration d’un type enregistrement de message......Page 1158
Déclaration d’une nouvelle méthode de gestion d’un message......Page 1159
Recensement des composants......Page 1161
Ecriture de la procédure Register......Page 1162
Utilisation de la fonction RegisterComponents......Page 1163
Création du fichier d’aide......Page 1164
Création des entrées......Page 1165
Aide contextuelle des composants......Page 1166
Dérivation d’une classe éditeur de propriétés......Page 1167
Définition de la valeur de la propriété......Page 1169
Modification globale de la propriété......Page 1170
Spécification des attributs de l’éditeur......Page 1171
Recensement de l’éditeur de propriétés......Page 1173
Recensement d’une propriété à la fois......Page 1174
Spécification de catégories de propriétés......Page 1175
Utilisation de la fonction IsPropertyInCategory......Page 1176
Ajout d’éditeurs de composants......Page 1177
Implémentation des commandes......Page 1178
Modification du comportement suite à un double-clic......Page 1179
Recensement d’un éditeur de composants......Page 1180
Compilation des composants en paquets......Page 1181
Création et recensement du composant......Page 1183
Surcharge du constructeur......Page 1184
Spécification de la nouvelle valeur par défaut de la propriété......Page 1185
Création et recensement du composant......Page 1187
Publication des propriétés héritées......Page 1188
Déclaration du type de la propriété......Page 1189
Surcharge du constructeur et du destructeur......Page 1190
Publication du crayon et du pinceau......Page 1191
Déclaration des propriétés d’accès......Page 1192
Définition des propriétés des classes ayant un propriétaire......Page 1193
Dessin de l’image du composant......Page 1194
Adaptation du dessin de la forme......Page 1195
Création et recensement du composant......Page 1197
Publication des propriétés héritées......Page 1198
Modification des valeurs initiales......Page 1199
Redimensionnement des cellules......Page 1200
Remplissage des cellules......Page 1201
Stockage interne de la date......Page 1202
Accès au jour, au mois et à l’année......Page 1203
Génération des numéros de jours......Page 1204
Navigation de mois en mois et d’année en année......Page 1206
Navigation de jour en jour......Page 1207
Fourniture d’un événement OnChange......Page 1208
Exclusion des cellules vides......Page 1209
51: Contrôles orientés données......Page 1211
Création et recensement du composant......Page 1212
Ajout de la propriété ReadOnly......Page 1213
Autorisation des mises à jour nécessaires......Page 1214
Déclaration des propriétés d’accès......Page 1215
Initialisation du lien de données......Page 1216
Réponse aux changements de données......Page 1217
Création d’un contrôle de modification de données......Page 1218
Réponse aux messages indiquant la manipulation de la souris......Page 1219
Réponse aux messages indiquant la manipulation du clavier......Page 1220
Mise à jour de la classe lien de données sur un champ......Page 1221
Mise à jour de l’ensemble de données......Page 1222
52: Transformation d’une boîte de dialogue en composant......Page 1225
Création et recensement du composant......Page 1226
Ajout des propriétés de l’interface......Page 1227
Ajout de la méthode Execute......Page 1228
Test du composant......Page 1230
Index......Page 1231