求助,在线等待!

xiongchen 2004-04-04 08:29:05
'这段代码用来实现这样一功能:比如说我在Combo1中输入了一个文本
'则A数组中含有这个文本的项目都自动显示出来.
'这一点有点象VB自带的那个API浏览器一样,输入函数名称,就会自动显示并选中该函数名称.
'现在我遇到了问题,看不到效果.
'哪位高手帮忙看一下这个代码,找找BUG啊!
'或者给我一个类似于API浏览器的代码一下也行,
'不过我是要在ComboBox中实现象API浏览器一样的效果
'急!!!!!!!


Dim Temp As String
Dim A(3) As String
Private Const CB_SHOWDROPDOWN = &H14F
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

Private Sub Combo1_Change()
On Error Resume Next
Dim I As Integer

A(0) = "dsfs"
A(1) = "dsaf"
A(2) = "fb"
A(3) = "bgsd"
Temp = UCase(Combo1.Text)

For I = 0 To 3
If InStr(1, A(I), Temp) <> 0 Then
Combo1.AddItem A(I)
End If
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
Next I
End Sub


...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongchen 2004-04-05
  • 打赏
  • 举报
回复
我已经解决了啊,今天来看一下,谢谢各位了,散分!
northwolves 2004-04-04
  • 打赏
  • 举报
回复
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
Private Sub Combo1_Change()
Dim iStart As Integer
Dim sString As String
Static iLeftOff As Integer

iStart = 1
iStart = Combo1.SelStart

If iLeftOff <> 0 Then Combo1.SelStart = iLeftOff: iStart = iLeftOff

sString = CStr(Left(Combo1.Text, iStart))
Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal CStr(Left(Combo1.Text, iStart)))

If Combo1.ListIndex = -1 Then iLeftOff = Len(sString): Combo1.Text = sString
If Combo1.Text <> "" Then SendMessage Combo1.hwnd, &H14F, True, 0

Combo1.SelStart = iStart
Combo1.SelLength = 0
iLeftOff = 0

End Sub
Private Sub Form_Load()
Dim a(1 To 500) As String
Dim i As Long
For i = 1 To 500
Randomize
a(i) = Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97)
Combo1.AddItem a(i)
Next
Combo1.Text = ""
End Sub
dragon525 2004-04-04
  • 打赏
  • 举报
回复
Temp = UCase(Combo1.Text)

--》改为
Temp = LCase(Combo1.Text)
dragon525 2004-04-04
  • 打赏
  • 举报
回复
晕,我写错了。
dragon525 2004-04-04
  • 打赏
  • 举报
回复

If InStr(1, A(I), Temp) <> 0 Then
改为
If Mid(1, A(I), Temp) <> 0 Then

但按你的功能要求,你的代码还是远远不够的~!
xiongchen 2004-04-04
  • 打赏
  • 举报
回复
我想用户在ComboBox中填写内容时,ComboBox自动下拉,并一步步缩小用户选取值的范围,用户可以录入几个字后用在选框里选全要录入的内容.离开ComboBox时再还原,
不知这要怎么做?特别是对于如何用程序下拉ComboBox的的方法让我很伤脑筋,
另外,如何把更接近用户输入的内容排在前面也是个不大不小的问题,请高手指点!

xiongchen 2004-04-04
  • 打赏
  • 举报
回复
难道CSDN没有人在线吗?

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧