Style Problem

  • hi @all

    Ich habe mal wieder eine Frage
    wenn ich folgende Stile in einer GUI verwende (in GUICreate)

    [autoit]

    BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_VSCROLL,$WS_BORDER,$WS_CLIPSIBLINGS

    [/autoit]

    Dann erscheint zwar mein scrollbar an der seite aber ganz klein(das ding zum ziehen) aber wenn ich daran runterzeihe (runterscrolle) springt es nach dem loslassen wieder nach oben
    Obwohl der GUI Inhalt weiter nach unten geht
    die gui inhalte habe ich mit for und next erstellt es sind lauter label und buttons.

    Ich hoffe jemand kann mir helfen

    Vielen Dank für Eure Antworten

  • Hallo simon,

    hattest du an so etwas gedacht:

    Spoiler anzeigen
    [autoit]

    #include <ScrollBarConstants.au3>
    ;http://www.autoit.de/index.php?page…6006#post116006
    #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]

    mfg (Auto)Bert

  • Super danke funktioniert allerdings kann man immer noch zuweit scrollen meine gui hat eine höhe von 400 und scrollen geht ein wenig weiter aber da der scroll bar in etwa so klein ist wie ein
    "|"
    geht es um einiges weiter so die gui keinen inhalt mehr hat wie kann ich das ändern

  • Hallo simon,

    Dann erscheint zwar mein scrollbar an der seite aber ganz klein(das ding zum ziehen) aber wenn ich daran runterzeihe (runterscrolle) springt es nach dem loslassen wieder nach oben
    Obwohl der GUI Inhalt weiter nach unten geht
    die gui inhalte habe ich mit for und next erstellt es sind lauter label und buttons.

    Das Hauptproblem ist doch gelöst. Das Skript mit WM_VScroll habe ich in [gelöst] Fenster mit Vertikalen Scroll? gefunden.
    Du kannst dir aber auch einmal die Hilfe zu _GUIScrollBars_Init anschauen, vielleicht hilft dir das ja weiter.

    mfg (Auto)Bert