Fenster mit Vertikalen Scroll?

  • Hallo und guten Morgen Leibe leute!

    Kann mir vieleicht jemand ''einfache'' erklären wie man einen vertikalen scroll im fenster erstellt???
    Es geht darum stellt euch vor das viel input, label,l button in einer gui sind aber es so viele sind das sie nicht auf ein desktop passen und ich sie durch ein scroll nach unten abrufen möchte!
    Den vertikalen scroll habe ich schon nur wie kann ich ihm sagen das er nach unten und bis zum ende der daten scrollt, habe da eine funktion
    bei Exemplare gefunden aber die läst meine gui flakern und ich möchte wissen was es vieleicht für möglichkeiten gäbe!?


    LG Kleiner

    Einmal editiert, zuletzt von kleiner27 (9. Oktober 2009 um 17:53)

  • is egtl ganz einfach.

    brauchst einfach nur den Style

    [autoit]

    $WS_VSCROLL ;0x00200000 Erzeugt ein Fenster mit einem vertikalen Scroll-Balken.

    [/autoit]

    (kopiert aus der hilfe, kannst es dir ja da nochmal ansehn ;) )

  • Guten morgen schnitzel!
    Das habe ich schon nur wie kann ich dem befehl sagen das er runter srollen soll bis die daten zu ende sind, das heißt wenn ich nur den befehl verwende dann tut sich nichts und wie schon gesagt eine func habe eich gefunden aber die läst meine gui flakern. Ich bin auf der suche nach ander möglichkeiten. Ich habe schon gesehen das es themen dazu gib werde ich mir anschauen wenn ich zu hause bin kann aber sein das einer von euch eine simple ( func befehle lösung ) hat! und sie mir zu verfügung stellt!

    LG Kleiner

  • welche andere funktion haste denn? sowas immer dazuschreiben bitte dann weiß man sofort bescheid...

    also ne andere lösung wäre sowas:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #Include <GUIScroll.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 400, 150)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Scrollbar_Create($Form1, $SB_VERT, 1000)
    Scrollbar_Step(20, $Form1, $SB_VERT)

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

    For $i = 20 to 980 step 20
    GUICtrlCreateLabel("Hier Steht ein unwichtiger Text an der Position: " & $i, 10, $i, 380, 15)
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Die GuiScroll.au3:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.13.3 (beta)
    Author: Kip

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #cs

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

    Functions:

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

    Scrollbar_Create($hWnd, $iBar, $iMax)
    Scrollbar_Scroll($hWnd, $iBar, $iPos)
    Scrollbar_GetPos($hWnd, $iBar)
    Scrollbar_Step($iStep, $hWnd=0, $iBar=0)

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

    #CE

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

    #Include <GuiScrollBars.au3>
    #include<GuiconstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <ScrollBarConstants.au3>

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

    Global $SCROLL_AMOUNTS[1][3]
    $SCROLL_AMOUNTS[0][0] = 1

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

    func Scrollbar_Create($hWnd, $iBar, $iMax)

    Local $Size = WinGetClientSize($hWnd)

    If $iBar = $SB_HORZ Then
    $Size = $Size[0]
    ElseIf $iBar = $SB_VERT Then
    $Size = $Size[1]
    Else
    Return 0
    EndIf

    ReDim $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)+1][3]
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][0] = $hWnd
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][1] = $iBar
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][2] = $SCROLL_AMOUNTS[0][0]

    _GUIScrollBars_EnableScrollBar($hWnd, $iBar)
    _GUIScrollBars_SetScrollRange($hWnd, $iBar, 0,$iMax-1)

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

    _GUIScrollBars_SetScrollInfoPage($hWnd, $iBar, $Size)

    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

    Return $iMax

    EndFunc

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

    Func Scrollbar_GetPos($hWnd, $iBar)

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

    Return DllStructGetData($tSCROLLINFO, "nPos")

    EndFunc

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

    Func Scrollbar_Scroll($hWnd, $iBar, $iPos)

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

    $iCurrentPos = DllStructGetData($tSCROLLINFO, "nPos")

    DllStructSetData($tSCROLLINFO, "nPos", $iPos)
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $iBar, $tSCROLLINFO)

    If $iBar = $SB_VERT Then

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

    If Not $iRound Then Return 0

    _GUIScrollBars_ScrollWindow($hWnd, 0, Round(($iCurrentPos-$iPos)/$iRound)*$iRound)
    ElseIf $iBar = $SB_HORZ Then

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

    If Not $iRound Then Return 0

    _GUIScrollBars_ScrollWindow($hWnd, Round(($iCurrentPos-$iPos)/$iRound)*$iRound, 0)
    Else
    Return 0
    EndIf

    Return 1

    EndFunc

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

    Func Scrollbar_Step($iStep, $hWnd=0, $iBar=0)

    If not $hWnd or Not $iBar Then

    $SCROLL_AMOUNTS[0][0] = $iStep
    Return 1

    EndIf

    $iID = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $iBar Then
    $iID = $i
    ExitLoop
    EndIf
    Next

    If Not $iID Then Return 0

    $SCROLL_AMOUNTS[$iID][2] = $iStep

    Return 1

    EndFunc

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

    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]

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

    if Not $iRound Then Return $GUI_RUNDEFMSG

    Switch $nScrollCode
    Case $SB_TOP ; user clicked the HOME keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Min)

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

    Case $SB_BOTTOM ; user clicked the END keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Max)

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

    Case $SB_LINEUP ; user clicked the top arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)

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

    Case $SB_LINEDOWN ; user clicked the bottom arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)

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

    Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

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

    Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

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

    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

    ;~ // Set the position and then retrieve it. Due to adjustments
    ;~ // by Windows it may not be the same as the value set.

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

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")


    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, 0, $yPos - $Pos)
    EndIf

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

    Return $GUI_RUNDEFMSG

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

    EndFunc ;==>WM_VSCROLL

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

    Func WM_HSCROLL($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]

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

    if Not $iRound Then Return $GUI_RUNDEFMSG

    Switch $nScrollCode
    Case $SB_TOP ; user clicked the HOME keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Min)

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

    Case $SB_BOTTOM ; user clicked the END keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Max)

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

    Case $SB_LINEUP ; user clicked the top arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)

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

    Case $SB_LINEDOWN ; user clicked the bottom arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)

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

    Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

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

    Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

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

    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

    ;~ // Set the position and then retrieve it. Due to adjustments
    ;~ // by Windows it may not be the same as the value set.

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

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")


    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, $yPos - $Pos, 0)
    EndIf

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

    Return $GUI_RUNDEFMSG

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

    EndFunc ;==>WM_HSCROLL

    [/autoit]
  • Schnitzel den zweiten spoiler habe ich ausprobirt und da flakert meine gui (das ist die func die ich zu hause gefunden hatte)wie gesagt da flakert die gui, ich bin nicht zu hause bitte um verständnis!


    Lg Kleienr

  • kein problem, bin auch nich zuhause...

    kann leider jetz auch nich sagen an was es liegen könnte. am besten isses wohl du postest dein script wenn du wieder zuhause bist.

  • Bin daheim!

    Habe diene beiden spoiler getestet bei mir kann ich die codes nicht ausfüren???

    Ich zeige dir ein beispiel von mir: umso mehr ich an inputs, Buttons, label erstelle desto schlimmer flakert es beim start????

    Spoiler anzeigen
    [autoit]

    #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)
    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
    GUISetState()
    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    _GUIScrollBars_Init($Gui)
    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

    [/autoit]


    LG Kleiner

  • hallo kleiner27,

    probier es mal so:

    Spoiler anzeigen
    [autoit]

    #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)
    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]

    Großes Problem => einfache Lösung: ich habe nur GuiSetState verschoben

    mfg (Auto)Bert

  • Vielen Dank! :thumbup:

    Ich habe gerade große Augen bekommen, ich dachte mir haa das habe ich doch gestern doch schon mal getestet das wirt nicht klapen!!!
    Und sch.... klapt doch :D dann habe ich gestern wohl ein andere kombi gehabt! 8|


    nachtrag: in der hilfe wird es so gezeigt!!

    [autoit]

    GUIRegisterMsg($WM_SIZE, "WM_SIZE") ; Fenstergröße ändern
    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL") ; Vertikales Scrollen
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL") ; Horizontales Scrollen

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

    GUISetState()

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

    _GUIScrollBars_Init($hGUI)
    _GUIScrollBars_Init($h_cGUI)

    [/autoit]

    LG Kleiner