Ceci est une ancienne révision du document !


Utilisation et gestion des Scrollbars

Dans un component

Affichage

Affichage : API Windows ShowScrollBar(Handle, SB_BOTH, true);

  • Handle = Handle du component (TWinControl.handle)
  • SB_BOTH = affichage des deux SB_HORZ et SB_VERT
  • True = visible

Capter les messages de Scroll

Pour capter les scrolling, implementer les procedures suivantes

      procedure WMHScroll(var Msg: TLMScroll); message WM_HSCROLL;
      procedure WMVScroll(var Msg: TLMScroll); message WM_VSCROLL;

Le message TLMScroll contient les membres suivants:

LMessages
 TLMScroll = record
    Msg: Cardinal;
    ...
    ScrollCode: SmallInt; // code voir plus bas
    SmallPos: SmallInt;    // Position sous forme d'un SmallInt
    ScrollBar: HWND;        // Handle de la scrollbar
    ...
    Result: LRESULT;        // See remark
    Pos: LongInt;                 // Position en integer
  end;      

ScrollCodes

defines.inc
{ Scroll Bar notifications }
      SB_LINEUP = 0;
      SB_LINEDOWN = 1;
      SB_LINELEFT = 0;
      SB_LINERIGHT = 1;
      SB_PAGEUP = 2;
      SB_PAGEDOWN = 3;
      SB_PAGELEFT = 2;
      SB_PAGERIGHT = 3;
      SB_THUMBPOSITION = 4;
      SB_THUMBTRACK = 5;
      SB_ENDSCROLL = 8;
      SB_LEFT = 6;
      SB_RIGHT = 7;
      SB_BOTTOM = 7;
      SB_TOP = 6; 

Modifier la Scrollbar avec ScrollInfo

Structure TScrollInfo

tagScrollInfo = record
    cbSize : UINT; // Taille de cette structure = sizeof(TScrollInfo)
    fMask : UINT; // Voir ci dessous
    nMin: Integer;
    nMax: Integer;
    nPage: UInt;
    nPos: Integer;
    nTrackPos: Integer;
  end;
  PScrollInfo = ^TScrollInfo;
  TScrollInfo = tagScrollinfo;
 
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.

Autres fonctions

func.inc
function SetScrollPos(hWnd:HWND; nBar:longint; nPos:longint; bRedraw:WINBOOL):longint; external 'user32' name 'SetScrollPos';
function GetScrollPos(hWnd:HWND; nBar:longint):longint; external 'user32' name 'GetScrollPos';
function SetScrollRange(hWnd:HWND; nBar:longint; nMinPos:longint; nMaxPos:longint; bRedraw:WINBOOL):WINBOOL; external 'user32' name 'SetScrollRange';
function GetScrollRange(hWnd:HWND; nBar:longint; lpMinPos:LPINT; lpMaxPos:LPINT):WINBOOL; external 'user32' name 'GetScrollRange';
function ShowScrollBar(hWnd:HWND; wBar:longint; bShow:WINBOOL):WINBOOL; external 'user32' name 'ShowScrollBar';
function EnableScrollBar(hWnd:HWND; wSBflags:UINT; wArrows:UINT):WINBOOL; external 'user32' name 'EnableScrollBar';
function GetScrollInfo(hWnd: HWND; BarFlag: Integer; var ScrollInfo: TScrollInfo): BOOL; external 'user32' name 'GetScrollInfo';
function SetScrollInfo(hWnd: HWND; BarFlag: Integer; const ScrollInfo: TScrollInfo; Redraw: BOOL): Integer; external 'user32' name 'SetScrollInfo';
Vous pourriez laisser un commentaire si vous étiez connecté.