Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
prog:lazarus:classes:tcontrols:tcontrol [13/08/2024 13:05]
thierry créée
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 ​ =====
 +==== Public ====
 +  * [[prog:​lazarus:​classes:​tcontrols:​tcontrolstyletype|ControleStyle ]] :  spécifie les comportements et les caractéristiques du ''​TControl''​. Il s'agit d'un ensemble de styles (''​set''​) basé sur l'​énumération ''​TControlStyleType''​
 +
 ===== Code ===== ===== Code =====
  
Ligne 668: Ligne 727:
  
 </​code>​ </​code>​
 +===== Sources & Ressources =====
 +