Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:classes:tcontrols:tcontrols2 [29/08/2024 18:56]
thierry [Savoir quelle partie (TRect) du Control est affiché]
prog:lazarus:classes:tcontrols:tcontrols2 [29/08/2024 19:07] (Version actuelle)
thierry [Savoir quelle partie (TRect) du Control est affiché]
Ligne 96: Ligne 96:
  
 ===== Savoir quelle partie (TRect) du Control est affiché ===== ===== Savoir quelle partie (TRect) du Control est affiché =====
 +
 +La fonction ''​TMyControl.GetVisibleRect''​ ci-dessous __calcule la partie visible d'un contrôle__ personnalisé sous forme d'un ''​TRect'',​ en tenant compte des limites imposées par ses parents dans la hiérarchie visuelle.\\ ​
 +Elle traverse tous les parents du contrôle, réduisant progressivement le rectangle visible à l'​intersection avec chaque parent. Le résultat est le rectangle visible final en coordonnées locales, retourné par la fonction.
 <code pascal> <code pascal>
 function TMyControl.GetVisibleRect:​ TRect; function TMyControl.GetVisibleRect:​ TRect;
Ligne 105: Ligne 108:
   assert(assigned(Parent));​   assert(assigned(Parent));​
  
-  vRect := BoundsRect;+  vRect := BoundsRect; ​// Le TControl en entier, pas juste ClientRect
   if assigned(Parent) then   if assigned(Parent) then
   begin   begin
Ligne 112: Ligne 115:
     vRect.Offset(vP);​     vRect.Offset(vP);​
  
 +    { On scan tous les Parents }
     while assigned(vParent) and not (vRect.IsEmpty) do     while assigned(vParent) and not (vRect.IsEmpty) do
     begin     begin
Ligne 128: Ligne 132:
  
 </​code>​ </​code>​
 +** Utilité de la fonction TMyControl.GetVisibleRect **
 +
 +La fonction `TMyControl.GetVisibleRect` permet de déterminer quelle partie d'un contrôle est réellement visible à l'​écran,​ en tenant compte des limitations imposées par ses parents dans la hiérarchie des contrôles.
 +
 +** Contexte d'​utilisation **
 +  * **Rendu graphique** : Identifie quelles portions du contrôle doivent être redessinées en fonction de leur visibilité.
 +  * **Détection de clics** : Vérifie si une interaction utilisateur,​ comme un clic, se produit dans une zone visible du contrôle.
 +  * **Optimisation** : Aide à concentrer les ressources sur la partie visible du contrôle pour améliorer les performances.
 +
 +** Autres applications **
 +  * **Défilement automatique** : Lorsqu'​un contrôle est contenu dans un `ScrollBox`,​ la fonction aide à gérer le défilement en ajustant dynamiquement la partie visible.
 +  * **Animations ou effets visuels** : Pour des effets qui doivent se limiter aux zones visibles, cette fonction garantit que seules les parties pertinentes du contrôle sont affectées.
 +  * **Validation et gestion des collisions** : Dans des applications comme les jeux ou les simulations,​ elle peut servir à déterminer les parties visibles d'un objet pour des vérifications ou interactions précises.
 +
 +