问题内容:
==========================================================================
大家经常都会用到这样一个问题。当用户往一个TextBox(MultiLine = False)输入数据或文字时,自动在其下下方(或上方)弹出一个下拉框,下拉框中列出用户以前在此输入的一些数字(或文字串)。
如:我们经常去Google搜索,当我们准备在搜索框里面键入我们要搜索的东西的时候,其下方都会弹出一个下拉框,里面列出我们以前在此搜索过的东西。这种下拉框和普通的ComboBox是不同的:
1.它没有下拉按钮
2.它的下拉列表的右下角会有一个小三角形,用鼠标拖动它可以更改下拉框的大小注:如果各位喜欢分的话,我可以多开几个帖子,分我有得是。
谢谢!哦,忘记说问题了,问题就是这个控件在哪个ocx里面,谢谢!
==========================================================================答案(虫子):
'==============================================================================
Option ExplicitPublic Enum SHAutoCompleteFlags
' // Currently (SHACF_FILESYSTEM | SHACF_URLALL)
SHACF_DEFAULT = &H0
' // This includes the File System as well as the rest of the shell
' (Desktop\My Computer\Control Panel\)
SHACF_FILESYSTEM = &H1
' // URLs in the User's History
SHACF_URLHISTORY = &H2
' // URLs in the User's Recently Used list.
SHACF_URLMRU = &H4
' // Use the tab to move thru the autocomplete possibilities
' instead of to the next dialog/window control.
SHACF_USETAB = &H8
SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
' // This includes the File System
SHACF_FILESYS_ONLY = &H10 '#if (_WIN32_IE >= = &H0600)
' // Same as SHACF_FILESYS_ONLY except it only includes directories,
' UNC servers, and UNC server shares.
SHACF_FILESYS_DIRS = &H20
'#End If ' // (_WIN32_IE >= = &H0600)
' // Ignore the registry default and force the feature on.
SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
' // Ignore the registry default and force the feature off.
SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
' // Ignore the registry default and force the feature on.
' (Also know as AutoComplete)
SHACF_AUTOAPPEND_FORCE_ON = &H40000000
' // Ignore the registry default and force the feature off.
' (Also know as AutoComplete)
SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
End EnumPrivate Declare Function SHAutoComplete Lib "shlwapi.dll" ( _
ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, _
ByVal lpszWindow As String) As LongPrivate Const S_OK = 0Public Function AutoComplete( _
ByVal hWnd As Long, _
ByVal eFlags As SHAutoCompleteFlags _
)
Dim lR As Long
lR = SHAutoComplete(hWnd, eFlags)
AutoComplete = (lR <> S_OK)
End Function
Public Function GetComboBoxEdithWnd(ByVal hWnd As Long) As Long
GetComboBoxEdithWnd = FindWindowEx(hWnd, 0, "EDIT", vbNullString)
End Function'To test the function, add a TextBox and a ComboBox to the Project's form. Name the TextBox "txtTest" and the ComboBox "cboTest". Then add this code to the project's form:Private Sub Form_Load()
AutoComplete txtTest.hWnd, SHACF_FILESYS_ONLY
AutoComplete GetComboBoxEdithWnd(cboTest.hWnd), SHACF_FILESYS_ONLY
End Sub'在文本框内输入c:\ 然后就可以看到效果!
'==============================================================================
==========================================================================
大家经常都会用到这样一个问题。当用户往一个TextBox(MultiLine = False)输入数据或文字时,自动在其下下方(或上方)弹出一个下拉框,下拉框中列出用户以前在此输入的一些数字(或文字串)。
如:我们经常去Google搜索,当我们准备在搜索框里面键入我们要搜索的东西的时候,其下方都会弹出一个下拉框,里面列出我们以前在此搜索过的东西。这种下拉框和普通的ComboBox是不同的:
1.它没有下拉按钮
2.它的下拉列表的右下角会有一个小三角形,用鼠标拖动它可以更改下拉框的大小注:如果各位喜欢分的话,我可以多开几个帖子,分我有得是。
谢谢!哦,忘记说问题了,问题就是这个控件在哪个ocx里面,谢谢!
==========================================================================答案(虫子):
'==============================================================================
Option ExplicitPublic Enum SHAutoCompleteFlags
' // Currently (SHACF_FILESYSTEM | SHACF_URLALL)
SHACF_DEFAULT = &H0
' // This includes the File System as well as the rest of the shell
' (Desktop\My Computer\Control Panel\)
SHACF_FILESYSTEM = &H1
' // URLs in the User's History
SHACF_URLHISTORY = &H2
' // URLs in the User's Recently Used list.
SHACF_URLMRU = &H4
' // Use the tab to move thru the autocomplete possibilities
' instead of to the next dialog/window control.
SHACF_USETAB = &H8
SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
' // This includes the File System
SHACF_FILESYS_ONLY = &H10 '#if (_WIN32_IE >= = &H0600)
' // Same as SHACF_FILESYS_ONLY except it only includes directories,
' UNC servers, and UNC server shares.
SHACF_FILESYS_DIRS = &H20
'#End If ' // (_WIN32_IE >= = &H0600)
' // Ignore the registry default and force the feature on.
SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
' // Ignore the registry default and force the feature off.
SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
' // Ignore the registry default and force the feature on.
' (Also know as AutoComplete)
SHACF_AUTOAPPEND_FORCE_ON = &H40000000
' // Ignore the registry default and force the feature off.
' (Also know as AutoComplete)
SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
End EnumPrivate Declare Function SHAutoComplete Lib "shlwapi.dll" ( _
ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, _
ByVal lpszWindow As String) As LongPrivate Const S_OK = 0Public Function AutoComplete( _
ByVal hWnd As Long, _
ByVal eFlags As SHAutoCompleteFlags _
)
Dim lR As Long
lR = SHAutoComplete(hWnd, eFlags)
AutoComplete = (lR <> S_OK)
End Function
Public Function GetComboBoxEdithWnd(ByVal hWnd As Long) As Long
GetComboBoxEdithWnd = FindWindowEx(hWnd, 0, "EDIT", vbNullString)
End Function'To test the function, add a TextBox and a ComboBox to the Project's form. Name the TextBox "txtTest" and the ComboBox "cboTest". Then add this code to the project's form:Private Sub Form_Load()
AutoComplete txtTest.hWnd, SHACF_FILESYS_ONLY
AutoComplete GetComboBoxEdithWnd(cboTest.hWnd), SHACF_FILESYS_ONLY
End Sub'在文本框内输入c:\ 然后就可以看到效果!
'==============================================================================
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货