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
#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
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
AdlibRegister("_Test_GUICtrlListView_EnsureVisibleEx", 4000)
_Test_GUICtrlListView_EnsureVisibleEx()
GUISetState()
Do
Until GUIGetMsg() = -3
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
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