Keypress İle Listedeki İstediğimiz Kayda Gitmek

30/04/2020, 10:02

accessman

bir dinamik arama metin kutumuz var liste girilen her karakter ile güncelleniyor
ama listede tek eleman kalması için çok fazla karakter girmemiz gerekiyor
mesela arama kutusuna 4 karakter girdikten sonra listede 9 kayıt kalıyor 

Reno Sembol 2010 model 11.000 km
Reno Sembol 2010 model 21.000 km
Reno Sembol 2010 model 31.000 km
Reno Sembol 2010 model 41.000 km
Reno Sembol 2010 model 51.000 km
Reno Sembol 2010 model 61.000 km
Reno Sembol 2010 model 71.000 km
Reno Sembol 2010 model 81.000 km
Reno Sembol 2010 model 91.000 km

biz mouse elimize almadan mesela 7. sıradaki kayda keypress ile nasıl gideriz
mesela yardımcı tuşlardan birisiyle birlikte 7 tuşuna bassak olur mu 
Kod:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyA And Shift = acCtrlMask Then 'Catch Ctrl+A
        KeyCode = 0 'Suppress normal effect
        On Error GoTo ExitSub 'ActiveControl causes a runtime error if none is active
        If TypeOf Me.ActiveControl Is TextBox Then
            With Me.ActiveControl
                .SelStart = 0
                .SelLength = Len(.Text)
            End With
        End If
    End If
ExitSub:
End Sub
şöyle bir şeyler yazmak lazımmış ama nasıl
şimdilik şöyle çözüm buldum
Kod:
Private Sub ara_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next
    Dim result As Integer
    result = 0
   
    If Shift = acCtrlMask Then
        If KeyCode = 48 Or KeyCode = 96 Then 'Catch Ctrl+0
        ElseIf KeyCode = 49 Or KeyCode = 97 Then
            result = 1
        ElseIf KeyCode = 50 Or KeyCode = 98 Then
            result = 2
        ElseIf KeyCode = 51 Or KeyCode = 99 Then
            result = 3
        ElseIf KeyCode = 52 Or KeyCode = 100 Then
            result = 4
        ElseIf KeyCode = 53 Or KeyCode = 101 Then
            result = 5
        ElseIf KeyCode = 54 Or KeyCode = 102 Then
            result = 6
        ElseIf KeyCode = 55 Or KeyCode = 103 Then
            result = 7
        ElseIf KeyCode = 56 Or KeyCode = 104 Then
            result = 8
        ElseIf KeyCode = 57 Or KeyCode = 105 Then
            result = 9
        End If
   
        If (result > 0) Then
            If (Me.lst_ara.ListCount >= result) Then
                Me.lst_ara.Width = 0
                Me.lst_ara.Height = 0
                kayitDegistir CInt(Me.lst_ara.ItemData(result))
                Me.btn_ek2.SetFocus
                lst_ara.Visible = False
            End If
        End If
    End If
End Sub
30/04/2020, 11:50

ozanakkaya

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   
If (KeyCode = vbKeyNumpad1) And ((Shift And acAltMask) <> 0) Then
KeyCode = 0
Me!Liste0.Selected(0) = True
ElseIf (KeyCode = vbKeyNumpad2) And ((Shift And acAltMask) <> 0) Then
KeyCode = 0
Me!Liste0.Selected(1) = True
ElseIf (KeyCode = vbKeyNumpad3) And ((Shift And acAltMask) <> 0) Then
KeyCode = 0
Me!Liste0.Selected(2) = True
End If
   
End Sub
30/04/2020, 12:05

accessman

çok teşekkürler