怎么用VB实现文本框或组合框的自动完成功能?

解决方案 »

  1.   

    我已经自定义了一些资源,而这些就是其中一部分 
    比如:
    a1
    a2
    a3当我输入a的时候就自动把a开头的资源列出来供选择 同样,当输入gh的时候就把gh开头的列出来 
      

  2.   

    两个.net的:
    http://www.vibig.net/Article_Show.asp?ArticleID=560
    http://faq.lvjiyong.com/item/26215/
    vb的:
    模仿IE自动完成的ComboBox 
    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 Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const CB_SHOWDROPDOWN = &H14F
    Private Const WM_SETREDRAW As Long = &HB&
    Private Const CB_FINDSTRING As Long = &H14C& 'iKeyCode目的:传递KeyDown事件中的KeyCode
    Private iKeyCode As Integer Public Sub SearchCombo(InControl As Object)
        On Error GoTo errTrap
         
        Dim StrPos As Long
        Dim lPos As Long
        Dim SearchStr As String
         
        If TypeOf InControl Is ComboBox Then
            StrPos = InControl.SelStart
            SearchStr = Left$(InControl.Text, StrPos)
            
            lPos = SendMessage(InControl.hwnd, CB_FINDSTRING, 0, ByVal SearchStr)
            
            If lPos >= 0 Then
                InControl.Text = InControl.List(lPos)
                InControl.ListIndex = lPos
            End If
            
            With InControl
                .SelStart = StrPos
                .SelLength = Len(InControl.Text)
            End With
        End If
        Exit Sub
    errTrap:
         MsgBox Err.Description
    End Sub
      Private Sub Combo1_Change()
        If iKeyCode <> vbKeyBack And iKeyCode <> vbKeyReturn Then
            SearchCombo Combo1
            SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
        End If
    End Sub Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
        iKeyCode = KeyCode
    End Sub Private Sub Form_Load()
        Combo1.AddItem "asqwed"
        Combo1.AddItem "fgtthgh"
        Combo1.AddItem "nfgftrtyr"
        Combo1.AddItem "werwerwe"
        Combo1.AddItem "ytrtyrtyrty"
        Combo1.AddItem "bfrthrtyrt"
        Combo1.AddItem "rewerwe"
        Combo1.AddItem "vsfsdf"
    End Sub http://www.cnblogs.com/lxcc/archive/2004/11/17/64717.html
      

  3.   

    http://www.freevbcode.com/source/AutoCompleteComboBox.zip
      

  4.   

    就象IE的地址栏一样的功能,但要求能使用自定义资源。查询了一些资料“在应用程序中集成自动完成功能”,比如http://dev.csdn.net/develop/article/20/20944.shtm 都是用VC实现的,VB6中如何实现呢?
    因为一些特殊的原因,不能使用组合框加列表框模拟的方式,并且效果也不好。
    所以看来只能通过IAutoComplete接口了。
    在.NET中是比较容易实现的,直接提供了这样的功能,但VB6就不知道怎么办了……
    请帮帮我把
      

  5.   

    http://www.applevb.com/sourcecode/ssystem.htm
      

  6.   

    谁能通过IAutoComplete接口实现自动完成功能,帮帮忙把
      

  7.   

    你可以借助几个隐藏的listbox来完成。
      

  8.   

    jiangsheng(蒋晟.Net[MVP]) ,你贴的地址那个是用Delphi帮忙实现的(并且这个DLL的作者是应我的要求才帮我写的,在此表示感谢)。现在想用VB来写。用类型库(TLB)是允许的,因为编译后不用带上这个TLB文件。
    bayougeng(红雨) ,前面已经说了,不用这个来模拟,而且效果不会怎么好。
    其实,用VB来实现的代码也有,作者也是帮我的忙才写的(在此表示感谢),地址:
    http://blog.csdn.net/lingll/archive/2006/05/10/722760.aspx
    但是不知道是什么原因,这个代码在IDE下正常,编译后就出错……
    调试出错程序发现,出错点在Err.Raise S_FALSE处,但不知道应该怎么解决这个问题。
    高手们努力吧,这个功能不错的!
    谢谢。