Fait défiler le texte vers le bas ou vers le haut d'une ligne ou d'une page
#include <GuiRichEdit.au3>
_GUICtrlRichEdit_ScrollLineOrPage ( $hWnd, $sAction )
$hWnd | Handle du contrôle |
$sAction | Une des opérations suivantes: "ld"- (line down) ligne vers le bas "lu" - (line up) ligne vers le haut "pd"- (page down) page vers le bas "pu" - (page up) page vers le haut |
Succès: | Retourne le nombre de lignes qui ont effectivement défilées (positif si vers le bas). |
Échec: | Retourne 0 et définit @error <> 0. |
@error: | 101 - $hWnd n'est pas un handle 1021 - $sAction ne contient pas deux caractères 1022 - Le premier caractère doit être l (line) ou p (page) 1023 - Le deuxième caractère doit être d (down) ou u (up) |
Cette fonction se comporte bien: elle ne fait pas défiler au-delà de la dernière ligne.
_GUICtrlRichEdit_ScrollLines, _GUICtrlRichEdit_ScrollToCaret
Consultez EM_SCROLL dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <WindowsConstants.au3> Global $g_idLblMsg, $g_hRichEdit Example() Func Example() Local $hGui, $iMsg, $idBtnNext, $iStep = 0 $hGui = GUICreate("Exemple (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) $g_hRichEdit = _GUICtrlRichEdit_Create($hGui, "Ceci est un test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) $g_idLblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60) $idBtnNext = GUICtrlCreateButton("Suivant", 270, 310, 40, 30) GUISetState(@SW_SHOW) For $i = 1 To 20 _GUICtrlRichEdit_AppendText($g_hRichEdit, "Line " & $i & @CRLF) Next _GUICtrlRichEdit_AppendText($g_hRichEdit, "Line 21") $iMsg = GUIGetMsg() While $iMsg <> $GUI_EVENT_CLOSE If $iMsg = $idBtnNext Then $iStep += 1 Switch $iStep Case 1 DoIt("lu", "Défilement vers le haut d'une ligne") Case 2 DoIt("pu", "Défilement vers le haut d'une page") Case 3 DoIt("pd", "Défilement vers le bas d'une page") Case 4 DoIt("pd", "Tente de faire défiler une autre page") GUICtrlSetState($idBtnNext, $GUI_DISABLE) EndSwitch EndIf $iMsg = GUIGetMsg() WEnd _GUICtrlRichEdit_Destroy($g_hRichEdit) ; Nécessaire sauf si le script se bloque ; GUIDelete(); est OK aussi EndFunc ;==>Example Func DoIt($sAction, $sMsg) Local $iQlines $iQlines = _GUICtrlRichEdit_ScrollLineOrPage($g_hRichEdit, $sAction) GUICtrlSetData($g_idLblMsg, $sMsg & @CRLF & @CRLF & "Défilement actuel de " & @CRLF & $iQlines & " lines") EndFunc ;==>DoIt