自動完成功能,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本身的問題.