TControl, TWinControl et TCustomControl
Dans l'environnement de développement Lazarus (utilisant le langage Pascal et la bibliothèque LCL), les classes TControl, TWinControl et TCustomControl sont des éléments de base pour la création d'interfaces graphiques. Elles héritent les unes des autres et permettent de gérer des composants visuels.
- Héritage
TCustomControl = class(TWinControl) TWinControl = class(TControl) TControl = class(TLCLComponent)
TControl
TControl
est la classe de base pour tous les contrôles visuels dans Lazarus. Elle fournit les fonctionnalités de base pour afficher un composant à l'écran et interagir avec les événements utilisateur (comme les clics de souris ou les pressions sur les touches).
Caractéristiques
- Propriétés communes : Position (
Left
,Top
), Taille (Width
,Height
), visibilité (Visible
), couleur de fond (Color
), etc. - Événements : Gestion des événements de base comme
OnClick
,OnMouseMove
,OnKeyDown
, etc. - Dessin :
TControl
ne dessine pas son contenu lui-même. Cette classe est plutôt utilisée pour encapsuler les propriétés et comportements généraux des composants. - Aucun support de conteneur :
TControl
ne peut pas contenir d'autres contrôles visuels.
TWinControl
TWinControl
est une classe qui hérite de TControl
et qui ajoute des capacités pour gérer les contrôles ayant une “fenêtre” Windows (c'est-à-dire une handle de fenêtre).
Cela signifie qu'elle peut recevoir des messages Windows directement et servir de conteneur pour d'autres contrôles.
Caractéristiques
- Conteneur de contrôles : TWinControl peut contenir d'autres contrôles visuels (enfants) et gère leur affichage, leur positionnement, etc.
- Gestion des focus : Les instances de TWinControl peuvent recevoir le focus de la fenêtre (ce qui signifie qu'elles peuvent être activées pour la saisie clavier).
- Gestion des messages Windows : Grâce à la présence d'un handle de fenêtre, TWinControl peut intercepter et traiter directement les messages Windows (comme WM_PAINT, WM_LBUTTONDOWN, etc.).
- Support des fenêtres natives : Les instances de TWinControl sont capables d'interagir avec les API Windows, ce qui est essentiel pour les contrôles complexes.
TCustomControl
TCustomControl
hérite de TWinControl
et est conçu pour servir de base à la création de contrôles personnalisés. Contrairement à TWinControl
, TCustomControl
est une classe qui expose le processus de dessin pour que les développeurs puissent définir la manière dont le contrôle se dessine à l'écran.
Caractéristiques
- Dessin personnalisé : TCustomControl introduit la méthode Paint, que les développeurs peuvent surcharger pour dessiner leur propre contenu à l'intérieur du contrôle.
- Flexibilité élevée : En héritant de TCustomControl, vous pouvez créer des composants graphiques totalement personnalisés avec des comportements spécifiques.
- Conteneur de contrôles : Comme il hérite de TWinControl, TCustomControl peut également contenir d'autres contrôles visuels.
Tableau comparatif
Caractéristique | TControl | TWinControl | TCustomControl |
---|---|---|---|
Classe de base | Oui | Non | Non |
Dessin personnalisé | Non | Non | Oui |
Conteneur de contrôles | Non | Oui | Oui |
Gestion du focus | Non | Oui | Oui |
Gestion des messages Windows | Non | Oui | Oui |
En résumé
- TControl est la classe de base pour tous les composants visuels, mais elle ne gère pas le dessin ou les enfants.
- TWinControl est utilisée pour les contrôles qui doivent gérer des enfants et interagir directement avec l'API Windows.
- TCustomControl est parfaite pour créer des contrôles visuels personnalisés avec un rendu graphique spécifique tout en ayant la capacité de contenir d'autres contrôles.
Ces classes sont souvent utilisées ensemble dans Lazarus pour créer des applications GUI riches et personnalisées.