无法在 VBA 访问中捕获 ActiveX 图像组合控件的任何事件
Cannot catch any events of an ActiveX Image Combo Control in VBA Access
我在我的 VBA Access 应用程序中使用 ActiveX 图像组合控件,但我遇到了很多问题。几乎没有关于它的文档。我无法从控件中捕获任何事件。我尝试使用它们中的 "on change, on get focus, and on exit events" 和 none。当表单初始化时,事件会触发,仅此而已。有谁知道这个控件是怎么回事?我正在考虑是否应该减少损失并使用没有任何图像的普通组合框。
ActiveX控件的全称是"Microsoft ImageComboBox Control, version 6.0"
这是我的调试代码
Private Sub ImageCombo8_Change()
Debug.Print "change"
End Sub
Private Sub ImageCombo8_Enter()
Debug.Print "entered"
End Sub
Private Sub ImageCombo8_Exit(Cancel As Integer)
Debug.Print "exit"
End Sub
Private Sub ImageCombo8_GotFocus()
Debug.Print "focused"
End Sub
在初始化时,我得到这些输出
entered
focused
exit
change
change
当我实际对控件进行任何操作时,什么也没有发生。
设置控件的项目:
Private Sub Form_Load()
Dim objNewItem As ComboItem
Set objNewItem = ImageCombo8.ComboItems.Add(1, , "Option 1", "pic1key")
objNewItem.Indentation = 1
Set objNewItem = ImageCombo8.ComboItems.Add(2, , "Option 2", "pic2key")
objNewItem.Indentation = 1
End Sub
我发现 GotFocus 事件仅在 Tab 进入控件时触发,而不是鼠标单击。只有 Change 事件在表单加载期间触发,它不会在选择项目时触发,也不会 Updated。 Enter、Exit、GotFocus、LostFocus 都会适当触发。此外,当单击列表中的项目时,会触发 Click 事件。
这是我的工作代码:
Private Sub Form_Load()
Dim objNewItem As ComboItem, x As Integer
For x = 1 to 2
Set objNewItem = ImageCombo8.ComboItems.Add(x, , "Option " & x, "pic" & x & "key")
objNewItem.Indentation = 1
Next
End Sub
Private Sub ImageCombo8_Click()
MsgBox Me.ImageCombo8.SelectedItem.Text
End Sub
即使 ControlSource 属性 在 属性 sheet 上显示可用,但如果绑定到某个字段,它也会出错。值 属性 在代码中也失败。使用文本 属性 从所选项目和代码中捕获信息以将数据保存到字段。
花了很长时间才搞清楚如何设置 ImageList 和 ImageCombo 控件。关于这些小动物的信息不多,而且大部分都涉及非 Access 程序。最后发现在设计视图中双击控件会打开一个对话框,然后发现在自定义 属性 上单击省略号也是一样的。
我在我的 VBA Access 应用程序中使用 ActiveX 图像组合控件,但我遇到了很多问题。几乎没有关于它的文档。我无法从控件中捕获任何事件。我尝试使用它们中的 "on change, on get focus, and on exit events" 和 none。当表单初始化时,事件会触发,仅此而已。有谁知道这个控件是怎么回事?我正在考虑是否应该减少损失并使用没有任何图像的普通组合框。
ActiveX控件的全称是"Microsoft ImageComboBox Control, version 6.0"
这是我的调试代码
Private Sub ImageCombo8_Change()
Debug.Print "change"
End Sub
Private Sub ImageCombo8_Enter()
Debug.Print "entered"
End Sub
Private Sub ImageCombo8_Exit(Cancel As Integer)
Debug.Print "exit"
End Sub
Private Sub ImageCombo8_GotFocus()
Debug.Print "focused"
End Sub
在初始化时,我得到这些输出
entered
focused
exit
change
change
当我实际对控件进行任何操作时,什么也没有发生。
设置控件的项目:
Private Sub Form_Load()
Dim objNewItem As ComboItem
Set objNewItem = ImageCombo8.ComboItems.Add(1, , "Option 1", "pic1key")
objNewItem.Indentation = 1
Set objNewItem = ImageCombo8.ComboItems.Add(2, , "Option 2", "pic2key")
objNewItem.Indentation = 1
End Sub
我发现 GotFocus 事件仅在 Tab 进入控件时触发,而不是鼠标单击。只有 Change 事件在表单加载期间触发,它不会在选择项目时触发,也不会 Updated。 Enter、Exit、GotFocus、LostFocus 都会适当触发。此外,当单击列表中的项目时,会触发 Click 事件。
这是我的工作代码:
Private Sub Form_Load()
Dim objNewItem As ComboItem, x As Integer
For x = 1 to 2
Set objNewItem = ImageCombo8.ComboItems.Add(x, , "Option " & x, "pic" & x & "key")
objNewItem.Indentation = 1
Next
End Sub
Private Sub ImageCombo8_Click()
MsgBox Me.ImageCombo8.SelectedItem.Text
End Sub
即使 ControlSource 属性 在 属性 sheet 上显示可用,但如果绑定到某个字段,它也会出错。值 属性 在代码中也失败。使用文本 属性 从所选项目和代码中捕获信息以将数据保存到字段。
花了很长时间才搞清楚如何设置 ImageList 和 ImageCombo 控件。关于这些小动物的信息不多,而且大部分都涉及非 Access 程序。最后发现在设计视图中双击控件会打开一个对话框,然后发现在自定义 属性 上单击省略号也是一样的。