【发布时间】:2017-06-13 22:05:15
【问题描述】:
我在表单上的子报表/表单控件中的报表中滚动时遇到问题。我可以通过单击并拖动滚动条来滚动,但我想使用鼠标滚轮。
我认为这个functionality was removed 是在 2007 年到 2010 年过渡期间本地发生的事情。 (我知道链接说它适用于子表单,但我很确定它也适用于基于我读过的所有其他内容的子报表)。
我像这样修改了他们的解决方法代码
Private Sub Report_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
Dim r As Long
If Not Me.Dirty Then
Do While r < Abs(Count)
If (Count < 0) And (Me.CurrentRecord >= 1) Then
DoCmd.GoToRecord , , acPrevious, 1
ElseIf (Count > 0) then 'And (Me.CurrentRecord < Me.Count) Then 'This said Me.RecordSet.RecordCount but that was wrong. Also looking at the count here seems to just mess things up actually.
DoCmd.GoToRecord , , acNext, 1
End If
r = r + 1
Loop
End If
End Sub
但是当控件具有焦点时,这根本不起作用。显示“2016 年 6 月”的文本框是下图中的焦点。
当只有报表部分有焦点/没有控件有焦点时,它确实工作得很好。 IE。当您单击报告宽度的右侧时。我不确定这个状态到底是什么。
我不知道如何设置该部分以使焦点远离其他所有可聚焦控件。
编辑:
您可以通过以下步骤重现我正在尝试修复的场景(这是 Access 2010,但它应该适用于 Access 2013。我不能说 2016)
当您在表单视图中运行打开表单时,将焦点放在子报表中并使用鼠标滚轮没有任何反应。框架不滚动,CurrentRecord 也不改变。
【问题讨论】:
-
我不确定这是否适用于子报表,但这里有一个部分列表,以防您以前没有看过它:msdn.microsoft.com/en-us/library/office/ff192668.aspx。也许您可以访问子报表
Forms.frmName....Form.sfrmName...之类的子报表;Reports.rptName...Report.srptName。 Hth. -
如果有解决方案我会很感兴趣 - 我有同样的问题并且有类似的解决方法,只有当表单不是控件具有焦点时才有效。我想知道在单击任何控件时将焦点设置到子容器是否有效?
-
这就是我的想法。我没有马上想到我上面的评论仍然涉及点击和设置焦点。也许不是想要的,但可能会奏效。我怀疑只是悬停和滚动是可能的。
-
我在 access 2010 上试过这个,但无法重新制作。无论列或行是否具有焦点,它都会滚动/导航每条记录。
-
@wazz 我在表单中使用子报表(对象类型,但我的报表本身没有子报表)。它确实有所不同,因为报表中的子报表可以正常工作。我的文件是一个 accdb。
标签: ms-access vba ms-access-2010 ms-access-2013