Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
prog:lazarus:classes:tcontrols:tcontrol [13/08/2024 13:10] thierry [TControl] |
prog:lazarus:classes:tcontrols:tcontrol [19/08/2024 11:02] (Version actuelle) thierry [Code] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== TControl ====== | ====== TControl ====== | ||
+ | **TControl** est une classe de base dans le framework LCL (Lazarus Component Library) utilisée pour la création d'interfaces utilisateur graphiques. Elle est la classe ancêtre de tous les composants visuels dans Lazarus et fournit des fonctionnalités de base pour la gestion de l'affichage, des événements, et des propriétés fondamentales des contrôles. | ||
+ | |||
+ | ===== Héritage ===== | ||
+ | **TControl** est une classe abstraite qui fait partie de la hiérarchie des composants visuels de Lazarus. Elle hérite de **TPersistent** et est elle-même la classe parente directe de nombreuses autres classes de contrôle plus spécifiques. Voici une vue simplifiée de la hiérarchie : | ||
+ | <code delphi Héritage> | ||
+ | TObject = class | ||
+ | TPersistent = class(TObject,IFPObserved) | ||
+ | TComponent = class(TPersistent,IUnknown,IInterfaceComponentReference) | ||
+ | TLCLComponent = class(TComponent) | ||
+ | TControl = class(TLCLComponent) | ||
+ | </code> | ||
+ | |||
+ | ===== Propriétés Principales ===== | ||
+ | **TControl** expose un ensemble de propriétés de base que l'on retrouve dans tous les composants visuels dérivés. Ces propriétés permettent de contrôler l'apparence, la position, et le comportement général du contrôle. | ||
+ | |||
+ | * **Left**, **Top** : Ces propriétés définissent la position du contrôle par rapport à son parent. | ||
+ | * **Width**, **Height** : Ces propriétés définissent la taille du contrôle. | ||
+ | * **Visible** : Un booléen qui détermine si le contrôle est visible ou non. | ||
+ | * **Enabled** : Un booléen qui détermine si le contrôle peut recevoir des événements utilisateur. | ||
+ | * **Color** : Définit la couleur de fond du contrôle, si applicable. | ||
+ | * **Hint** : Un texte qui s'affiche lorsque l'utilisateur survole le contrôle avec la souris. | ||
+ | |||
+ | ===== Méthodes Principales ===== | ||
+ | En tant que classe de base, **TControl** fournit un ensemble de méthodes pour interagir avec le contrôle. | ||
+ | |||
+ | * **Invalidate()** : Demande la réactualisation du contrôle en invalidant sa zone de dessin. Le contrôle sera redessiné lors du prochain cycle de peinture. | ||
+ | * **Update()** : Force le redessin immédiat du contrôle. | ||
+ | * **BringToFront()** : Amène le contrôle au premier plan dans la pile Z. | ||
+ | * **SendToBack()** : Envoie le contrôle à l'arrière-plan dans la pile Z. | ||
+ | * **SetBounds(ALeft, ATop, AWidth, AHeight: Integer)** : Définit la position et la taille du contrôle en une seule opération. | ||
+ | |||
+ | ===== Événements ===== | ||
+ | **TControl** gère les événements de base qui sont cruciaux pour les interactions utilisateur. Ces événements sont souvent réassignés ou étendus dans des classes dérivées pour fournir des comportements plus spécifiques. | ||
+ | |||
+ | * **OnClick** : Se déclenche lorsqu'un utilisateur clique sur le contrôle. | ||
+ | * **OnDblClick** : Se déclenche lors d'un double-clic. | ||
+ | * **OnMouseDown** / **OnMouseUp** : Se déclenche lors de l'appui ou du relâchement d'un bouton de souris. | ||
+ | * **OnMouseMove** : Se déclenche lorsque la souris se déplace au-dessus du contrôle. | ||
+ | * **OnKeyDown** / **OnKeyUp** : Se déclenche lorsqu'une touche du clavier est pressée ou relâchée alors que le contrôle a le focus. | ||
+ | * **OnEnter** / **OnExit** : Se déclenche lorsque le contrôle reçoit ou perd le focus. | ||
+ | |||
+ | ===== Dessin et Affichage ===== | ||
+ | Contrairement à certaines de ses sous-classes comme **TCustomControl**, **TControl** ne fournit pas de mécanisme de dessin natif. Les contrôles qui dérivent directement de **TControl** n'ont pas de gestion personnalisée du rendu graphique. Le rôle de **TControl** est davantage de servir de base structurelle pour les contrôles qui seront ensuite spécialisés dans des classes descendantes. | ||
+ | |||
+ | ===== Limitations ===== | ||
+ | En tant que classe de base, **TControl** ne peut pas être utilisée directement pour créer des composants graphiques fonctionnels. Ses limitations incluent : | ||
+ | * **Pas de conteneur de contrôles** : **TControl** ne peut pas contenir d'autres contrôles visuels, contrairement à **TWinControl**. | ||
+ | * **Pas de gestion native du dessin** : Pour créer des contrôles personnalisés, il faut généralement hériter de **TCustomControl** ou d'une autre classe dérivée qui gère le dessin. | ||
+ | * **Pas de support direct pour les messages Windows** : Contrairement à **TWinControl**, **TControl** ne gère pas directement les messages Windows, ce qui limite son utilisation pour des contrôles nécessitant des interactions natives avec le système d'exploitation. | ||
+ | |||
+ | ===== Utilisation Courante ===== | ||
+ | Dans la pratique, **TControl** est rarement utilisé tel quel. Il sert principalement de classe parent pour définir les propriétés et méthodes communes à tous les contrôles visuels. Les développeurs Lazarus travaillent généralement avec des classes dérivées de **TControl** comme **TWinControl** pour créer des interfaces utilisateurs fonctionnelles et interactives. | ||
+ | |||
+ | ===== En résumé ===== | ||
+ | **TControl** est une brique essentielle de la LCL, offrant les fondations nécessaires pour l'élaboration de composants visuels dans Lazarus. Bien qu'elle ne soit pas directement utilisée pour créer des contrôles, elle définit un cadre solide sur lequel s'appuient les autres classes de contrôle pour développer des interfaces graphiques riches et interactives. | ||
===== Propriétées ===== | ===== Propriétées ===== | ||
==== Public ==== | ==== Public ==== | ||
Ligne 672: | Ligne 727: | ||
</code> | </code> | ||
+ | ===== Sources & Ressources ===== | ||
+ | |||