我实现过,程序找不到了,我就告诉你方法吧。
我用的是dao配合access使用,在文本框内追踪key_press事件,遇到比如“.”时,根据小点前面的字符串,在数据库中找到所要列出的数据,让下拉框可见,并且获得焦点,挑中所要的数据后,响应下拉框的键盘事件,让text1.text=text1.text+combo1.text,通过文本框sellength,selstart等属性定位于最后一个字符。至于下拉框出现的位置是一个技巧,因为文本框的字符大小已经固定,所以下拉框的top,left和字符的个数和行数有一定的比例关系
好像是个数乘以125,试试吧

解决方案 »

  1.   

    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 CB_FINDSTRING = &H14CPrivate 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
       End If
       sString = CStr(Left(Combo1.Text, iStart))
       Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal CStr(Left(Combo1.Text, iStart)))
       If Combo1.ListIndex = -1 Then
          iLeftOff = Len(sString)
          Combo1.Text = sString
          
       End If
       Combo1.SelStart = iStart
       iLeftOff = 0
    End SubPrivate Sub Text1_Change()
       Combo2.ListIndex = SendMessage(Combo2.hwnd, CB_FINDSTRING, -1, ByVal CStr(Text1.Text))
    End Sub
      

  2.   

    怎么在数据库中找到所要列出的数据,放到下拉框可见
    Bardo(巴顿) 讲具体点。
    CStr(Text1.Text)是不是搞错了,Text1.Text本来就是文本呀
      

  3.   

    dbcomboMatchEntry 属性
          返回或设置一个值,它指示 DataCombo 控件或 DataList 控件如何在用户输入的基础上执行查找。语法object.MatchEntry [= value ]MatchEntry 属性的语法包含以下部分:部件 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 一个常量或值,当控件获得焦点且用户输入一个或多个字符时这个值定义控件的行为,这点正如设置中所述。 
    设置value 的设置情况如下:设置 数值 描述 
    dblBasicMatching 0 基本匹配:(缺省)对于使用列表输入项的第一个字母输入字符,该控件查找下一个匹配。重复键入相同的字母可以循环浏览列表中所有以那个字母开头的输入项。 
    dblExtendedMatching 1 扩展匹配:控件查找与输入的所有字符相匹配的项。键入字符后,查找就完成了,键入更多的字符可以使查找更准确。 
    说明当 MatchEntry 属性被设置为 dblExtendedMatching 且用户输入了一个 backspace 键或等待数秒钟之后,匹配的字符串被重新设置。数据类型Integer
      

  4.   

    经典例子:
    http://www.dapha.net/vb/list.asp?id=1538