Evo nažalost prisiljen sam nastaviti ovaj topic, jer naišao sam opet na jedan dtugi problemčić, a ovaj put ima veze sa sadržajem lisbox-a. Poželio sam napraviti da korisnik može unošenjem slova preko textboxa, (koji se nalazi iznad listboxa) pronalazi taj sadržaj u listboxu.
Koliko sam skuzio najlakši način za to je preko API-a i čak sam pronašao dva primjera za to:
Code:
1.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
2.
Const LB_FINDSTRING = &H18F
3.
Private Sub Text1_Change()
4.
'Retrieve the item's listindex
5.
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
6.
End Sub
A drugi primjer je sa funkcijom:
Code:
Code:
Option Explicit
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
'Searchs a listbox for a matching string. Returns the listindex of the matching item.
Function ListboxFindString(strSearchString As String, lHwndListbox As Long) As Long
Const LB_FINDSTRING = &H18F
ListboxFindString = SendMessage(lHwndListbox , LB_FINDSTRING, -1, ByVal strSearchString)
End Function
Code:
Private Sub Text1_Change()
Me.List1.ListIndex = ListboxFindString(Me.Text1, Me.List1.hWnd)
End Sub
Private Sub Form_Load()
With List1
.AddItem "Haresoftware"
.AddItem "LocateSoft"
.AddItem "EncodeSoft"
.AddItem "IconSoft"
End With
End Sub
Sad api funkcija kod mene postoji samo se zove apiSendMessage, a isto tako na samom početku je navedena i tražena konstanta.
Ono što nikako ne mogu postići (a vjerujte mi, pokušavam već 2 dana sve i svašta i sa listindexom,Itemdata, i nema sa cime nisam pokusao), ma kako god prilagođivao se ovom Api-u, bilo na prvi ili drugi način je da mi promjena(OnChange) u texbox-u utječe na taj listbox.
Može li mi tko pomoći, opet?