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:components:scrollbars [07/04/2020 18:06]
thierry créée
prog:lazarus:components:scrollbars [09/04/2020 19:16] (Version actuelle)
thierry [Connaitre la taille des Scrollbar]
Ligne 34: Ligne 34:
 <code deplhi defines.inc>​ <code deplhi defines.inc>​
 { Scroll Bar notifications } { Scroll Bar notifications }
-      SB_LINEUP = 0; +      SB_LINEUP = 0;  // On appuis sur le bouton a l’extrémité haute 
-      SB_LINEDOWN = 1; +      SB_LINEDOWN = 1; // On appuis sur le bouton a l’extrémité basse 
-      SB_LINELEFT = 0; +      SB_LINELEFT = 0; // On appuis sur le bouton a l’extrémité gauche 
-      SB_LINERIGHT = 1; +      SB_LINERIGHT = 1;// On appuis sur le bouton a l’extrémité droite 
-      SB_PAGEUP = 2; +      SB_PAGEUP = 2;  // On click entre la Scroll Box et le bouton à l’extrémité haute 
-      SB_PAGEDOWN = 3; +      SB_PAGEDOWN = 3;  // On click entre la Scroll Box et le bouton à l’extrémité basse 
-      SB_PAGELEFT = 2; +      SB_PAGELEFT = 2;  // On click entre la Scroll Box et le bouton à l’extrémité gauche 
-      SB_PAGERIGHT = 3; +      SB_PAGERIGHT = 3;  // On click entre la Scroll Box et le bouton à l’extrémité droite 
-      SB_THUMBPOSITION = 4; +      SB_THUMBPOSITION = 4;  // On relâche (drop) le Scroll Box ou on utilise la molette de la souris 
-      SB_THUMBTRACK = 5; +      SB_THUMBTRACK = 5;   // On tire (drag) le Scroll Box 
-      SB_ENDSCROLL = 8; +      SB_ENDSCROLL = 8;  // On sort de la Scrollbar 
-      SB_LEFT = 6; +      SB_LEFT = 6; // On positionne la Scroll Box a l'​extremité gauche (avec le menu contextuel) 
-      SB_RIGHT = 7; +      SB_RIGHT = 7;  // On positionne la Scroll Box a l'​extremité droite (avec le menu contextuel) 
-      SB_BOTTOM = 7; +      SB_BOTTOM = 7;  // On positionne la Scroll Box a l'​extremité basse(avec le menu contextuel) 
-      SB_TOP = 6; +      SB_TOP = 6;  // On positionne la Scroll Box a l'​extremité haute (avec le menu contextuel)
 </​code> ​     ​ </​code> ​     ​
 +==== Modifier la Scrollbar avec ScrollInfo ====
 +Source : [[https://​docs.microsoft.com/​en-us/​windows/​win32/​api/​winuser/​ns-winuser-scrollinfo]]
 +=== Structure TScrollInfo ===
 +
 +<code delphi>
 +tagScrollInfo = record
 +    cbSize : UINT; // Taille de cette structure = sizeof(TScrollInfo)
 +    fMask : UINT; // Voir ci dessous
 +    nMin: Integer;
 +    nMax: Integer;
 +    nPage: UInt;  // Taille de la ScrollBox proportionnellement au range de la ScrollBar
 +    nPos: Integer; // Position par rapport au range de la ScrollBar
 +    nTrackPos: Integer;
 +  end;
 +  PScrollInfo = ^TScrollInfo;​
 +  TScrollInfo = tagScrollinfo;​
 +  </​code>​
 +== fMask ==
 +
 +fMask : Spécifie les paramètres de la ScrollBar à définir ou à récupérer. ​
 + 
 +^ Valeur ​   ^Signification ​                                                                                       ^
 +|''​SIF_ALL''​ | ''​SIF_PAGE''​ or ''​SIF_POS''​ or ''​SIF_RANGE''​ or  ''​SIF_TRACKPOS''​ |
 +|''​SIF_DISABLENOSCROLL''​ |Cette valeur n'est utilisée que lors de la définition des paramètres d'une barre de défilement.\\ Si les nouveaux paramètres de la barre de défilement la rendent inutile, désactivez la barre de défilement au lieu de la supprimer.|
 +|''​SIF_PAGE''​ |Le membre ''​nPage''​ contient la taille de page pour une Scrollbar proportionnelle. |
 +|''​SIF_POS''​ |Le membre de ''​nPos''​ contient la position de la Scroll Box, qui n'est pas mise à jour lorsque l'​utilisateur fait glisser la Scroll Box.|
 +|''​SIF_RANGE''​ |Les membres ''​nMin''​ et''​ nMax''​ contiennent les valeurs minimales et maximales de la plage de défilement.|
 +|''​SIF_TRACKPOS''​ |Le membre ''​nTrackPos''​ contient la position actuelle de la Scroll Box pendant que l'​utilisateur la fait glisser. |
 +== nPage ==
 +C'est la taille que doit faire la ScrollBox, proportionnellement au range de la ScrollBar.
 +
 +Par exemple si on défini nPage a 100 et que la ScrollBar a un Min de 0 et un  Max de 1000, la taille de la ScrollBox fera un dixième de la taille de la ScrollBar.
 +
 +Apparemment il y aurait un minimum, c'est a dire que si on défini nPage à 1, la ScrollBox ne s'​adapte pas exactement a la taille, elle reste a une taille convenable pour être saisie.
 +
 +
 +==== Connaitre la taille des Scrollbar ====
 +Les valeurs ci-dessous sont les valeurs relevées sur mon system.
 +<code delphi>
 +uses windows;
 +
 +  GetSystemMetrics(SM_CXHSCROLL) = 17
 +  GetSystemMetrics(SM_CYHSCROLL) = 17
 +  GetSystemMetrics(SM_CXHTHUMB) = 17
 +  GetSystemMetrics(SM_CXVSCROLL) = 17
 +  GetSystemMetrics(SM_CXVSCROLL) = 17
 +  GetSystemMetrics(SM_CYVTHUMB) = 17
 +  GetSystemMetrics(SM_MOUSEHORIZONTALWHEELPRESENT) = 0 // 0 = pas de molette horizontale sur ma souris.
 +  GetSystemMetrics(SM_MOUSEWHEELPRESENT) = 1 // 1 = Une molette verticale est presente sur ma souris
 +</​code>​
 +Source : [[https://​docs.microsoft.com/​en-us/​windows/​win32/​api/​winuser/​nf-winuser-getsystemmetrics]]
 +
 +
 +
 ==== Autres fonctions ==== ==== Autres fonctions ====
 <code delphi func.inc>​ <code delphi func.inc>​
Ligne 62: Ligne 116:
  
 </​code>​ </​code>​
 +Source : [[https://​docs.microsoft.com/​en-us/​windows/​win32/​controls/​bumper-scroll-bars-reference-functions]]