I have got to be making this harder than it is. So someone please tell me the straight forward way to do this:
I have a listbox with a list of people.
I have a textfield above the listbox that the user can type a few letters in to limit the displayed rows.
In other words, if all 492 people are currently displayed in the listbox and the user types a “p” in the textfield, then the listbox is reloaded with only the people whose last name begins with the letter p. When the user finds the person they are looking for they double click and the person’s details are populated to the window, the listbox reloaded with everyone, and the textfield cleared and set to “”
So far so good, this works perfectly. But I also want the person the user double-clicked on to be selected in the listbox (Highlighted) and the box scrolled to where that person is visible in the listbox control.
The brute-force method I am using is to read the rows in the listbox from top to bottom and compare the rowtag which contains the ID of the person selected. when they match select the row and scroll the listbox to that row.
this is the code in the doubleclick event:
dim iRow As Integer
dim iRecID As Integer
dim i As Integer
iRow = Me.ListIndex
iRecID = Me.RowTag(iRow)
if bFiltered Then
PopulateUI(iRecID)
me.selected(iRow) = true
else
LoadRS
PopulateMembersLB(iRecID)
PopulateUI(iRecID)
tfLastNameSearch.Text = ""
i = 0
While i < me.ListCount
if me.RowTag(i) = iRecID then
me.Selected(i) = true
me.ScrollPosition = i - 1
exit
end if
i = i + 1
wend
end if
This code works correctly, BUT is there a more straightforward way to do this?