Sign in to follow this  
Followers 0
funkey

_GUICtrlListView_EnsureVisibleEx

2 posts in this topic

While working with my CSV-Editor I needed a function to ensure visible items AND subItems. So I made this funktion.

I hope someone will need this.

Function

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

Test-Code

#include <GuiListView.au3>

GUICreate("Test _GUICtrlListView_EnsureVisibleEx", 600, 600)

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

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

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

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

Share this post


Link to post
Share on other sites



thx for that :blink:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0