无法在VBA访问中捕获ActiveX映像组合控件的任何事件

问题描述 投票:0回答:1

我在我的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
vba ms-access access-vba activex
1个回答
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属性上的省略号也是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.