vb6.0 combobox汉字拼音首字母过滤 例如输入zg combobox就会展开拼音首字母是zg的词语,例如 中国

2025-02-23 18:09:51
推荐回答(2个)
回答1:

这个功能非常不容易的,大致的流程如下
1,combobox 设置为编辑(重要)

2, 首先收起combobox(必要)
在文本框中,输入过滤字符时,循环combobox的记录,将满足条件的记录存放到数组,并且记录满足条件的记录的数量
然后,清空combobox
3 ,
数组(满足条件的记录)不为空,则将数组中的记录赋值给combobox,展开下拉框
如果 数组(满足条件的记录)为空,则收起combobox,重新载入所有记录

该功能在 路之遥软件网 中经常被使用,可以查看下

回答2:

添加一个combo,一个text
Public Function py(mystr As String) As String
If mystr <> "" Then
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
Case -18710 To -18527: py = "E"
Case -18526 To -18240: py = "F"
Case -18239 To -17923: py = "G"
Case -17922 To -17418: py = "H"
Case -17417 To -16475: py = "J"
Case -16474 To -16213: py = "K"
Case -16212 To -15641: py = "L"
Case -15640 To -15166: py = "M"
Case -15165 To -14923: py = "N"
Case -14922 To -14915: py = "O"
Case -14914 To -14631: py = "P"
Case -14630 To -14150: py = "Q"
Case -14149 To -14091: py = "R"
Case -14090 To -13319: py = "S"
Case -13318 To -12839: py = "T"
Case -12838 To -12557: py = "W"
Case -12556 To -11848: py = "X"
Case -11847 To -11056: py = "Y"
Case -11055 To -10247: py = "Z"
Case Else: py = mystr
End Select
End If
End Function

Private Sub Text1_Change()
If Text1 <> "" Then
For j = 0 To List1.ListCount - 1
If py(Mid(List1.List(j), Len(Text1), 1)) = UCase(Right(Text1, 1)) Then
List1.ListIndex = j
Exit For
End If
Next
End If
End Sub