Fait défiler le texte vers le bas ou vers le haut d'un certain nombre de lignes
#include <GuiRichEdit.au3>
_GUICtrlRichEdit_ScrollLines ( $hWnd, $iQlines )
$hWnd | Handle du contrôle |
$iQlines | Nombre de lignes de défilement souhaité |
Succès: | Retourne True. |
Échec: | Retourne False et définit @error <> 0. |
@error: | 101 - $hWnd n'est pas un handle 102 - $iQlines n'est pas numérique 700 - tentative de défilement d'une seule ligne |
Pour faire défiler vers le bas, mettre $iQlines à une valeur positive; pour faire défiler vers le haut, une valeur négative.
_GUICtrlRichEdit_ScrollLines() se comporte bien:
si $iQlines est plus grand que le nombre de lignes en dessous de la ligne courant, la fonction fait défiler pour afficher uniquement la dernière ligne;
si $iQlines est négatif et indique une ligne avant la première, la fonction fait défiler pour afficher la première ligne en haut de la fenêtre du contrôle.
_GUICtrlRichEdit_ScrollLineOrPage, _GUICtrlRichEdit_ScrollToCaret
Consultez EM_LINESCROLL dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <WindowsConstants.au3> Global $g_idLblMsg Example() Func Example() Local $hGui, $iMsg, $idBtnNext, $hRichEdit, $iStep = 0 $hGui = GUICreate("Exemple (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) $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($hRichEdit, "Line " & $i & @CRLF) Next _GUICtrlRichEdit_AppendText($hRichEdit, "Ligne 21") $iMsg = GUIGetMsg() While $iMsg <> $GUI_EVENT_CLOSE If $iMsg = $idBtnNext Then $iStep += 1 Switch $iStep Case 1 _GUICtrlRichEdit_ScrollLines($hRichEdit, -10.2) Report("A défilé vers le haut") Case 2 _GUICtrlRichEdit_ScrollLines($hRichEdit, +100) Report("A défilé vers le bas pour que la dernière ligne soit montrée") Case 3 _GUICtrlRichEdit_ScrollLines($hRichEdit, -200) Report("A défilé vers le haut tout le texte") GUICtrlSetState($idBtnNext, $GUI_DISABLE) EndSwitch EndIf $iMsg = GUIGetMsg() WEnd _GUICtrlRichEdit_Destroy($hRichEdit) ; Nécessaire sauf si le script se bloque ; GUIDelete(); est OK aussi EndFunc ;==>Example Func Report($sMsg) GUICtrlSetData($g_idLblMsg, $sMsg) EndFunc ;==>Report