Mit Scrollleiste GUI-Inhalt verschieben

  • Hallo,
    ich weiß der Titel ist bisschen umständlich aber meine frage eigentlich ganz einfach:
    Ich habe ein gui indem mehrere inputfelder sind... mit einem klick auf einen Button wird eins hinzugefügt... ich wollte nun fragen, wie ich es machen kann, das ich rechts einen Scrollbalken habe, mitdem ich die liste runterscrollen kann wenn sie zulang für das gui wird ?(

    MfG & danke ErrorKid

  • Hallo ErrorKid,

    suchst du so etwas:

    Spoiler anzeigen
    [autoit]

    ;http://www.autoit.de/index.php?page…6006#post116006
    #include <ScrollBarConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <StructureConstants.au3>
    #include <GUIScrollBars.au3>
    #include <Date.au3>
    Opt('GUIOnEventMode', 1)
    Global $pichinetgo = @ScriptDir & '\5-r.gif'
    $Gui = GUICreate('', 1003, 600, -1, -1,BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_VSCROLL,$WS_BORDER,$WS_CLIPSIBLINGS))
    GUISetBkColor(0xFFFACD, $Gui)
    GUISetOnEvent(-3, '_Exit')
    Local $arTage[31][2]
    $x = 176 ; +22
    For $i = 0 To 30
    $arTage[$i][0] = GUICtrlCreateInput(StringRight('0' & $i + 1, 2), $x, 20, 21, 20)
    $arTage[$i][1] = GUICtrlCreateInput('', $x, 41, 21, 20)
    $x += 22
    Next
    Local $aschTage[31][2]
    $x = 176 ; +22
    For $i = 0 To 30
    $aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
    $aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
    $x += 22
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Local $aschTage[31][12]
    $x = 176 ; +22
    $y = 90
    For $i = 0 To 30
    $aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
    $aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
    GUICtrlCreateInput('', $x, $y, 21, 20)
    GUICtrlCreateInput('', $x, $y, 21, 20)
    $x += 22
    $y += 21
    Next
    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    _GUIScrollBars_Init($Gui)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc ;==>_Exit
    Local $Color = 0x000000
    While 1
    Sleep(10)
    WEnd
    Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $yChar = $aSB_WindowInfo[$index][2]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0

    [/autoit] [autoit][/autoit] [autoit]

    ; Ermittelt alle Informationen der vertikalen Scrollbar
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
    ; Speichert die y-Position für einen späteren Vergleich
    $Pos = $yPos

    [/autoit] [autoit][/autoit] [autoit]

    ; Auswertung der vom System gemeldeten Scroll-Nachricht
    Switch $nScrollCode
    Case $SB_TOP ; Der Anwender klickte auf die "Pos1"-Taste
    DllStructSetData($tSCROLLINFO, "nPos", $Min)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_BOTTOM ; Der Anwender klickte auf die "Ende"-Taste
    DllStructSetData($tSCROLLINFO, "nPos", $Max)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_LINEUP ; Der Anwender klickte auf den oberen Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_LINEDOWN ; Der Anwender klickte auf den unteren Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_PAGEUP ; Der Anwender klickte oberhalb des Scrollbalkens
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_PAGEDOWN ; Der Anwender klickte unterhalb des Scrollbalkens
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

    [/autoit] [autoit][/autoit] [autoit]

    Case $SB_THUMBTRACK ; Der Anwender zog den Scrollbalken
    DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    ;~ // Setzt die neue Position und ermittelt sie danach erneut.
    ;~ // Abhängig von den Windows-Einstellungen kann es sein, dass die gelesenen Werte nicht die gleichen sind, wie die vorher gesetzten.

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ; // Falls sich die y-Position der Scrollbar geändert hat, den Fensterbereich verschieben und aktualisieren
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")
    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
    $yPos = $Pos
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $GUI_RUNDEFMSG

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>WM_VSCROLL

    [/autoit]

    bin mir nicht sicher ob GUIScrollBars.au3 von Gary Frost (AutoItScript.com) mittlerweile eine Standardinclude ist, deshalb im Anhang

    mfg (Auto)Bert

  • ok also ich hab mir das mal angeschaut... aber wie mach ich die scrollbar größer/kleiner?