很多软件里面有那种一输入信息下面就打开并跟着变的那种combox,请问怎么实现呢

akiy 2004-05-03 05:03:50
如题
或者有空件也好呀
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
akiy 2004-05-08
  • 打赏
  • 举报
回复
那Combo再查到数据后列表能自己打开么
ljf88888 2004-05-05
  • 打赏
  • 举报
回复
up
northwolves 2004-05-05
  • 打赏
  • 举报
回复
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 i As Long
For i = 1 To 500
Randomize
Combo1.AddItem 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)
Next
Combo1.Text = ""
End Sub
luoxiaoxiang 2004-05-03
  • 打赏
  • 举报
回复
咱组件中加载Form2.0??
看不懂
qygzxj 2004-05-03
  • 打赏
  • 举报
回复
咱组件中加载Form2.0,那里有一个ComboBox 控件,可实现你的要求,另外,该控件可以实现多列显示,具体的你自己看帮助吧,帮助文件名你可以查找Fm20.*,通常情况下,只要安装了Office就会有该帮助。
XmagicX 2004-05-03
  • 打赏
  • 举报
回复
在change事件中用SQL语句判断数据库 LIKE
yenight 2004-05-03
  • 打赏
  • 举报
回复
即时查找!!!??记得用API函数可实!!!
personalzhang 2004-05-03
  • 打赏
  • 举报
回复
在change事件中写代码啊
zglnew 2004-05-03
  • 打赏
  • 举报
回复
没看懂
wumy_ld 2004-05-03
  • 打赏
  • 举报
回复
在列表框中查找匹配的项目(组合框稍微一改就可以)
在Win95风格的帮助系统中一般都有一个“索引”页,索引页含有一个文本框和一个列表框,当用户在文本框中输入文字时,下拉列表会动态地显示与文本框中文字最匹配的项目,为用户提供了最大的方便。这种效果在应用程序的帮助系统中很容易实现(只要按照Win95帮助系统的正常制作过程制作就可以实现),如果想在应用程序的其它地方实现这种特性就需费一番心思了。
而使用SendMessage函数实现上述特性则非常简单,甚至只需一条语句就足够了,那就是在文本框的Change事件中给列表框发一条LB_FINDSTRING(&H18F)消息,该消息告诉列表框在列表中查找匹配的项目。
在发LB_FINDSTRING消息时,wParam参数代表从列表框的哪一个项目后面开始查找,一般情况下该参数可定为-1,表示从List1(0)即第一项开始向后循环查找,lParam则传进欲搜索的字符串(必须采用值传递)。
具体的代码和运行画面与后面的例4合并在一起演示。
例4 为ListBox添加水平滚动条
在VB中,列表框控件仅提供垂直滚动条,没有设置水平滚动条的能力,当某些项目的文本宽度较长时,超出列表框宽度部分的文本就无法显示出来,因此,很有必要为ListBox添加一个水平滚动条来方便操作。
为添加水平滚动条,只需发一条LB_SETHORIZONTALEXTENT(&H194)消息给列表框即可。发送消息时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度,也可随便给一个大于最大文本宽度的数字,如本例的250),lParam无用。下面是例3和例4合并在一起的代码和运行画面
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 Const LB_FINDSTRING=&H18F
Public Const LB_SETHORIZONTALEXTENT=&H194
Private Sub Form_Load()
List1.AddItem "软件"
List1.AddItem "电脑游戏"
List1.AddItem "电视机"
List1.AddItem "电视台"
List1.AddItem "电脑"
List1.AddItem "电脑游戏软件"
’下一句为列表框添加水平滚动条
SendMessage List1.hwnd,LB_SETHORIZONTALEXTENT,250,0
End Sub
Private Sub Text1_Change()
’注意!当lParam传入的是字符串时,必须用ByVal传递
List1.ListIndex = SendMessage(List1.hwnd,LB_FINDSTRING,-1,ByVal Text1.Text)
End Sub


象MS_GETTXT这样的常量,要用MSDN来查找。
sendmessage后面的两个参数,会根据要发送的消息而变化,所以,还是用MSDN

7,762

社区成员

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

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