自動完成功能vb實現

來源:互聯網
上載者:User

自動完成功能,vb實現

最近應某人要求,希望能用vb6實現自訂資料的自動完成功能,看了下相關文章,摸索了下,算是完成了.

首先需要引用兩個庫,http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip

建立工程,添加一個class,命名為cCusAuto

填入如下代碼
'---------------------------------------------------------------------------------------
' Module    : cCusAuto
' DateTime  : 2006-5-10 21:40
' Author    : lingll
' email     : lingll_xl@163.com
' Purpose   :
'---------------------------------------------------------------------------------------

Option Explicit

Implements olelib2.IEnumString

Private m_Str() As String
Private m_cnt As Long

Private m_pos&

'---------------------------------------------------------------------------------------
' Procedure : IniMe
' DateTime  : 2006-5-10 21:40
' Author    : lingll
' email     : lingll_xl@163.com
' Purpose   : 初始化,將資料添加進列表
'---------------------------------------------------------------------------------------
'
Public Sub IniMe()
Dim i&
m_cnt = 10
ReDim m_Str(0 To m_cnt - 1)
For i = 0 To m_cnt - 2
    m_Str(i) = "auto" & Str$(i)
Next i
m_Str(m_cnt - 1) = "wahaha"
End Sub

Private Sub IEnumString_Clone(ppenum As olelib2.IEnumString)

End Sub

Private Sub IEnumString_Next(ByVal celt As Long, rgelt As Long, pceltFetched As Long)
Debug.Print celt
If m_pos < m_cnt Then
    rgelt = StrPtr(m_Str(m_pos))
    m_pos = m_pos + 1
    pceltFetched = 1
Else
    pceltFetched = 0
    Err.Raise S_FALSE
End If
End Sub

Private Sub IEnumString_Reset()
m_pos = 0
End Sub

Private Sub IEnumString_Skip(ByVal celt As Long)
m_pos = m_pos + celt
End Sub

在表單中添加一個textbox,然後填入如下代碼
Option Explicit

Private Const CLSIDSTR_AutoComplete As String = _
    "{00BB2763-6A77-11D0-A535-00C04FD7D062}"
Private CLSID_AutoComplete As UUID
Private IID_IUnknow As UUID

Private m_auto As olelib.AutoComplete
Private m_CusAuto As cCusAuto

Private Sub Form_Load()

Dim tun As olelib.IUnknown

Set m_CusAuto = New cCusAuto
m_CusAuto.IniMe

Call CLSIDFromString(IIDSTR_IUnknown, IID_IUnknow)
Call CLSIDFromString(CLSIDSTR_AutoComplete, CLSID_AutoComplete)

CoCreateInstance CLSID_AutoComplete, Nothing, CLSCTX_INPROC_SERVER, IID_IUnknow, tun

Set m_auto = tun
'設定自動完成選項
m_auto.SetOptions ACO_AUTOSUGGEST
m_auto.Init Text1.hWnd, m_CusAuto, vbNullString, vbNullString
m_auto.Enable 1
End Sub

運行程式,在textbox中輸入"w",或"a",都會出現下拉式清單

參考文章:
在應用程式中整合自動完成功能(http://dev.csdn.net/develop/article/20/20944.shtm)
Using Autocomplete(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/ac_ovw.asp)

lingll
lingll_xl@163.com
blog.csdn.net/lingll
2006-5-10

注:經測試該程式只能在ide中運行,編譯為exe,運行就會出錯,目前沒解決辦法,極度懷疑是vb本身的問題.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.