jeg har lavet en dropdown combobox, der indlæser sine strenge fra en fil. nu skal jeg hente en record fra en database og comboboxen skal vise den streng der svarer til det jeg får fra databasen. jeg ved godt at jeg kan bruge combo.text = combo.list(index), men hvordan finder jeg på en nem måde det korrekte index?
Jeg kan ikke gøre dette direkte(combo.Text = minTekst), da jeg så får den besked at Text-properti'en er read-only, så jeg skal vælge et element fra listen.
Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long
Public Enum emuConst CB_FINDSTRINGEXACT = &H158 ' ComboBox CB_FINDSTRING = &H14C ' ComboBox Match LB_FINDSTRINGEXACT = &H1A2 ' ListBox LB_FINDSTRING = &H18F ' ListBox Match End Enum
Public Function FindListIndex(Control As Object, strText As String, eConst As emuConst) As Long Dim nIndex As Long nIndex = -1 If TypeOf Control Is ListBox Then nIndex = SendMessage(Control.hWnd, eConst, -1, ByVal strText) ElseIf TypeOf Control Is ComboBox Then nIndex = SendMessage(Control.hWnd, eConst, -1, ByVal strText) End If FindListIndex = nIndex End Function
Private Sub Form_Load() With Combo1 .AddItem "Visual" .AddItem "Basic" .AddItem "VBA" .AddItem "VB.NET"
' Her vil vi gerne finde 'Basic' men vil ikke skrive hele teksten. (ba) .ListIndex = FindListIndex(Combo1, "ba", CB_FINDSTRING)
' Her vil vi gerne finde 'Basic' men det skal være hele teksten. (basic) .ListIndex = FindListIndex(Combo1, "basic", CB_FINDSTRINGEXACT) End With End Sub ' ------------------------------ Form1 ------------------------------
det er jo ikke for sjovt "man" bliver programmør..
men hvis du bedre kan uden API så gør du bare sådan..
Private Sub Form_Load() Dim i As Integer Dim strText As String
strText = "vBa" strText = LCase$(strText)
With Combo1 .AddItem "Visual" .AddItem "Basic" .AddItem "VBA" .AddItem "VB.NET" For i = 0 To (.ListCount - 1) If LCase$(.List(i)) = strText Then .ListIndex = i Exit For End If Next End With End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.