Проблем с кирилицата
2 отговора
121 прегледа
Проблем с кирилицата
Използвам Combo Box като DropDown List. Искам, като натисна буква, автоматично да се превърта ако има съвпадение.В Win98 работи безпроблемно, но в XP се гъби.Иска задължително да го разпъна(F4) за да се превърта и да е DropDownCombo.Как да го направя?
Има го
Наистина го има този проблем с кирилицата на ХР за съжаление, така че от майкрософт като се се издънили ние трябва да вземем нещата в свои ръце. Този код върши същата работа, без да създава проблеми и когато първата буква е на латиница.
[prе]
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim ch As String * 1, i%
ch = UCase(Chr(KeyAscii))
For i = Combo1.ListIndex + 1 To Combo1.ListCount - 1
If ch = UCase(Left(Combo1.List(i), 1)) Then
Combo1.ListIndex = i
KeyAscii = 0
Exit Sub
End If
Next i
For i = 0 To Combo1.ListIndex - 1
If ch = UCase(Left(Combo1.List(i), 1)) Then
KeyAscii = 0
Combo1.ListIndex = i
Exit Sub
End If
Next i
End Sub
[/prе]
[prе]
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim ch As String * 1, i%
ch = UCase(Chr(KeyAscii))
For i = Combo1.ListIndex + 1 To Combo1.ListCount - 1
If ch = UCase(Left(Combo1.List(i), 1)) Then
Combo1.ListIndex = i
KeyAscii = 0
Exit Sub
End If
Next i
For i = 0 To Combo1.ListIndex - 1
If ch = UCase(Left(Combo1.List(i), 1)) Then
KeyAscii = 0
Combo1.ListIndex = i
Exit Sub
End If
Next i
End Sub
[/prе]
Вече го няма:)
Благодаря ти много:)) Позволих си да побутна малко кода за да работи по съвпадение не само на първа буква.
Dim ch as String ' в декларацията на формата
Private Sub izd_KeyPress(KeyAscii As Integer)
Dim i%, M%
ch = ch & UCase(Chr(KeyAscii))
For i = izd.ListIndex + 1 To izd.ListCount - 1
M = Len(ch)
If ch = UCase(Left(izd.List(i), M)) Then
izd.ListIndex = i
KeyAscii = 0
Exit Sub
End If
Next i
For i = 0 To izd.ListIndex - 1
If ch = UCase(Left(izd.List(i), M)) Then
KeyAscii = 0
izd.ListIndex = i
Exit Sub
End If
Next i
End Sub
Dim ch as String ' в декларацията на формата
Private Sub izd_KeyPress(KeyAscii As Integer)
Dim i%, M%
ch = ch & UCase(Chr(KeyAscii))
For i = izd.ListIndex + 1 To izd.ListCount - 1
M = Len(ch)
If ch = UCase(Left(izd.List(i), M)) Then
izd.ListIndex = i
KeyAscii = 0
Exit Sub
End If
Next i
For i = 0 To izd.ListIndex - 1
If ch = UCase(Left(izd.List(i), M)) Then
KeyAscii = 0
izd.ListIndex = i
Exit Sub
End If
Next i
End Sub