IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Partie I : Composants non visuels


précédentsommairesuivant

Introduction

Ce tutoriel a été écrit avec le support de Delphi 2005 édition Architecte. Si vous possédez une version antérieure ou une édition inférieure, il est possible que vous ne puissiez pas utiliser certaines des fonctionnalités présentées ici.

Certains liens dans ce tutoriel font référence à l'aide locale de Delphi 2005 - ils commencent tous par « ms-help:// » -, ces liens ne fonctionnent que si vous avez enregistré ce tutoriel sur votre disque local et que vous possédez une version de Delphi supérieure ou égale à la version 2005.

Pour commencer, nous allons découvrir comment créer des composants non visuels. Ces composants n'apparaissent qu'en mode design sous forme de petit carré avec une icône. Un exemple très utilisé de composant non visuel est le TMainMenu.

Certains se diront, en apprenant que l'on va commencer par les composants non visuels, que cette partie va être très ennuyeuse et auront envie de passer directement à la suivante.
À ceux-là, je répondrai que les composants non visuels sont aussi utiles que les composants visuels, et qu'ils facilitent souvent des tâches d'une grande complexité. Vous pouvez prendre à titre d'exemple la bibliothèque Indy, dont tous les composants sont non visuels. Cette bibliothèque est une suite de composants encapsulant des API réseau.

On s'aperçoit donc que la notion de composant n'est pas liée à la notion de graphisme, puisqu'un composant non visuel ne dessine rien.

Vous voyez que vous ne vous ennuierez pas durant cette partie, et au contraire, vous découvrirez, peut-être avec enthousiasme, les portes que Delphi nous ouvre vers la souplesse de la création de composants.

I. Qu'est-ce qu'un composant exactement ?

Premièrement, il semble important de faire le point sur ce sujet.

I-A. Définition

Un composant, au sens où on l'entend généralement, est un objet (au sens commun du terme, et non au sens de la POO) que l'on peut placer sur une fiche Delphi. En théorie, un composant est un descendant (direct ou non) de la classe de base TComponent.

TComponent descend de la classe TPersistent, elle-même descendant de TObject.

I-B. Héritage de TPersistent

TPersistent encapsule le comportement commun à tous les objets pouvant être affectés à d'autres objets et pouvant lire ou écrire leurs propriétés dans un fichier de fiche (fichier .dfm ou .xfm). Cela signifie que les descendants de cette classe seront capables de se recopier via la méthode Assign et également de s'enregistrer dans un flux (stream). Bien entendu, pour que ces capacités soient supportées, il faut implémenter certaines choses.

I-C. Héritage de TComponent

La classe TComponent est l'ancêtre partagé de chaque composant de la VCL. TComponent implémente directement l'une de ces capacités, à savoir le fait qu'il peut être enregistré dans un flux. Nous pouvons remercier Borland de cela, car sinon nous devrions effectuer un travail considérable à chaque fois que l'on créerait un nouveau composant !

Ainsi, tout composant enregistre automatiquement toutes ses propriétés déclarées published (nous verrons plus loin ce que cela signifie ; pour l'instant, contentez-vous de savoir que c'est une directive au même titre que public).

I-D. Possession et composition

TComponent apporte également d'autres fonctionnalités, telles que le fait que tout descendant de TComponent possède un propriétaire (owner) qui se chargera de le détruire lorsque lui-même sera détruit.

On peut effectuer ici un parallèle avec les LEGO : il existe des blocs de base avec lesquels on peut en créer de plus complexes.

On retrouve ici la notion de composition de UML. Le propriétaire désigne la relation particulière entre un composant maître et plusieurs objets le constituant. Le propriétaire étant responsable de la libération des parties qui le composent. Les composants ont donc une existence dépendante du composé.

Exemple : une fenêtre Windows est composée de menus, d'ascenseurs, de boutons… Si la fenêtre est détruite alors tous les composants (menus, ascenseurs, boutons…) sont également détruits.

Chaque objet peut être propriétaire de 0 ou n autres objets. Par contre, il est impossible de créer un cycle de procession : si, à partir d'un objet donné, on remonte chaque fois à son propriétaire, on ne pourra jamais retrouver le premier objet.

Sachez, pour en terminer à propos de la possession, que tout composant placé sur une fiche a pour propriétaire cette fiche.

I-E. Réutilisation des composants

Le principal atout de la POO est la réutilisation du code.

Les composants n'échappent pas à cette règle, aussi peut-on, à partir d'un composant, l'améliorer facilement en dérivant un nouveau composant de celui-ci.

I-F. Différences entre développement de composants et d'applications

Extrait de la documentation de Delphi 6 sur les classes et composants

Comme les composants sont des classes, les créateurs de composants manipulent les objets à un niveau différent de celui des développeurs d'applications. La création de nouveaux composants nécessite de dériver de nouvelles classes.

Brièvement, il existe deux différences principales entre la création des composants et leur utilisation dans des applications. Pour la création de composants, vous avez accès à des parties de la classe qui sont inaccessibles aux programmeurs d'applications. Vous ajoutez de nouvelles parties (des propriétés, par exemple) aux composants. À cause de ces différences, il faut prendre en compte un plus grand nombre de conventions, et réfléchir à la manière dont les développeurs d'applications vont utiliser les composants.

I-G. Conclusion

Bref, les composants permettent à tous les développeurs d'augmenter les possibilités de Delphi, et donc de simplifier le développement d'applications.

Vous savez désormais ce qu'est un composant au sens premier du terme. Nous allons maintenant entrer dans le vif du sujet : la création de votre premier composant !


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Sébastien Doeraene. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.