Ungewöhnliches Scrollverhalten einer Listivew

  • Hi,

    ich lasse eine Lisview über eine Funktion immer zum Ende Scrollen, nur bei mir geht die Schiebeleiste immer hoch und runter anstatt unten zu bleiben.
    Hoffentlich könnt ihr mir helfen

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $hGui_Chat = GUICreate("Chat", 314, 268, -1, -1)
    $cChat_Send = GUICtrlCreateButton("Senden", 245, 240, 64, 20)
    $cChat_List = GUICtrlCreateListView("", 8, 8, 297, 227, BitOR($LVS_NOCOLUMNHEADER, $LVS_REPORT, $WS_HSCROLL))
    $cChat_Input = GUICtrlCreateInput("", 8, 240, 233, 21)
    _GUICtrlListView_AddColumn($cChat_List, "", 200)

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

    For $x = 0 To 13
    GUICtrlCreateListViewItem(Random(), $cChat_List)
    Next

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

    AdlibRegister("ScrollLV")
    GUISetState(@SW_SHOW)
    While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case -3
    Exit
    Case $cChat_Send
    ;~ $sData = GetLongInf()
    $sData = GUICtrlRead($cChat_Input)
    If $sData = "" Then ContinueLoop
    GUICtrlSetData($cChat_Input, "")
    $aArray = StringTrimAfter($sData, 25)
    If IsArray($aArray) Then
    For $x = 1 To $aArray[0] ;-1
    GUICtrlCreateListViewItem($aArray[$x], $cChat_List)
    Next
    EndIf
    EndSwitch
    WEnd

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

    Func ScrollLV()
    $aLV = _GUICtrlListView_GetItemRect($cChat_List, 0)
    If UBound($aLV) = 4 Then _GUICtrlListView_Scroll($cChat_List, 0, _GUICtrlListView_GetItemCount($cChat_List) * $aLV[3] - $aLV[1])
    EndFunc ;==>ScrollLV

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

    Func StringTrimAfter($sString, $iCount)
    Local $iSplit = 0
    $iCount = Int($iCount)
    If $iCount < 0 Then Return -1
    If $iCount >= StringLen($sString) Then
    Local $aArray[2]
    $aArray[0] = 1
    $aArray[1] = $sString
    Return $aArray
    EndIf
    $iSplit = Int(StringLen($sString) / $iCount)
    Dim $aArray[$iSplit] = [0]

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

    For $x = 1 To $iSplit - 1
    $aArray[$x] = StringLeft($sString, $iCount)
    $sString = StringTrimLeft($sString, $iCount)
    $aArray[0] += 1
    Next
    Return $aArray
    EndFunc ;==>StringTrimAfter

    [/autoit]
  • Hallo.
    Schreib Zeile 39 mal so:

    [autoit]

    If UBound($aLV) = 4 Then _GUICtrlListView_Scroll($cChat_List, 0, _GUICtrlListView_GetItemCount($cChat_List) * $aLV[2])

    [/autoit]

    Das funzt bei mir.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.