我在VBA Access应用程序中使用ActiveX Image Combo Control,我遇到了很多问题。关于它的文档几乎没有。我无法从控件中捕获任何事件。我尝试使用“on change,on get focus,以及退出事件”,但没有一个工作。表单初始化时会触发事件,但就是这样。有谁知道这个控件是什么?我正在讨论是否应该减少损失并使用没有任何图像的普通组合框。
ActiveX控件的全名是“Microsoft ImageComboBox Control,版本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
答案 0 :(得分:1)
我发现只有在选中控件而不是鼠标点击时才会触发GotFocus事件。只有Change事件在表单加载期间触发,它不会在选择项目时触发,也不会在更新时触发。 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属性在属性表上显示可用,但如果绑定到字段,则会出错。 Value属性在代码中也失败。使用Text属性从所选项目和代码中捕获信息,以将数据保存到字段中。
永远弄清楚如何设置ImageList和ImageCombo控件。关于这些小动物的信息并不多,其中大部分都涉及非Access程序。最后发现在设计视图中双击控件打开了一个对话框,然后发现单击Custom属性上的省略号也是如此。