_GUICtrlListView_EnsureVisibleEx

  • Als Abfallprodukt meines CSV-Editor erhielt ich nun eine Funktion, die im Unterschied zu _GUICtrlListView_EnsureVisible auch das gesuchte SubItem anzeigt.
    Ich hoffe, das das jemand brauchen kann.

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>

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

    GUICreate("Test _GUICtrlListView_EnsureVisibleEx", 600, 600)

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

    Local $sHeader
    For $i = 1 To 50
    $sHeader &= "|Col" & $i
    Next
    $sHeader = "Col0" & $sHeader

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

    Global $hLV = GUICtrlCreateListView($sHeader, 5, 5, 590, 590)

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

    Local $sItem
    For $i = 1 To 1000
    For $j = 0 To 50
    $sItem &= Random(1, 1000, 1) & "|"
    Next
    GUICtrlCreateListViewItem($sItem, $hLV)
    $sItem = ""
    Next

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

    AdlibRegister("_Test_GUICtrlListView_EnsureVisibleEx", 4000)
    _Test_GUICtrlListView_EnsureVisibleEx()

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

    GUISetState()
    Do
    Until GUIGetMsg() = -3

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

    Func _GUICtrlListView_EnsureVisibleEx($hwnd, $iIndex, $iSubItem = 0, $fPartialOK = False)
    ;funkey April 15, 2010
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    _SendMessage($hWnd, $LVM_ENSUREVISIBLE, $iIndex, $fPartialOK)
    Local $aRect = _GUICtrlListView_GetItemRect($hWnd, $iSubItem)
    Local $iPixel
    For $i = 0 To $iSubItem - 2 ; 2 means: show at second visible column
    $iPixel += _GUICtrlListView_GetColumnWidth($hWnd, $i)
    Next
    _GUICtrlListView_Scroll($hWnd, $iPixel + $aRect[0], 0)
    EndFunc

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

    Func _Test_GUICtrlListView_EnsureVisibleEx()
    Local $iItem = Random(1, 1000, 1)
    Local $iSubItem = Random(0, 50, 1)
    Local $sText = _GUICtrlListView_GetItemText($hLV, $iItem, $iSubItem)
    ToolTip(StringFormat("EnsureVisible %i/%i - %s", $iItem, $iSubItem, $sText))
    _GUICtrlListView_EnsureVisibleEx($hLV, $iItem, $iSubItem)
    _GUICtrlListView_SetItemSelected($hLV, $iItem)
    _GUICtrlListView_SetSelectedColumn($hLV, $iSubItem)
    EndFunc

    [/autoit]
  • Sieht sehr gut aus , wenn ich wieder mit Listview arbeite kann ich es sicher gebrauchen

    gruß Simon