窗体上的一些控件全部是动态生成的,由于一页看不完有向下的滚动条,当显示屏下面控件获得焦点时,这是如果再按 TAB 键, 滚动条应自动往下移. 现在出现的问题是:
如果当下面的控件获得焦点滚动条应要往下移动的时,该控件被包含在一个frame容器内,所以objName(objIndex).Top只是控件到容器的距离,而不是最初想要的到窗体的距离.
如果在加上容器.top也可以,问题,怎么判断该控件是否包含在frame内? 被包含在哪个 frame内? frame也是动态生成的,可以有很多.
难啊,请高手帮忙!Private Sub moveToView(ByVal objName As Object, ByVal objIndex As Integer)
On Error Resume Next
If Not objName(objIndex) Is Nothing Then
If objName(objIndex).Top + objName(objIndex).Height > (Me.ScaleHeight+ Me.vBAR.Value - Me.tbForm.Height Then
vBAR.Value = objName.Top(objIndex) + objName.Height - (Me.ScaleHeight - IIf(hBAR.Visible, hBAR.Height, 0)) + Me.tbForm.Height + 280
End If
If objName(objIndex).Top < Me.vBAR.Value Then
vBAR.Value = IIf(objName.Top(objIndex) - 240 > 0, objName.Top(objIndex) - 240, 0)
End If
如果当下面的控件获得焦点滚动条应要往下移动的时,该控件被包含在一个frame容器内,所以objName(objIndex).Top只是控件到容器的距离,而不是最初想要的到窗体的距离.
如果在加上容器.top也可以,问题,怎么判断该控件是否包含在frame内? 被包含在哪个 frame内? frame也是动态生成的,可以有很多.
难啊,请高手帮忙!Private Sub moveToView(ByVal objName As Object, ByVal objIndex As Integer)
On Error Resume Next
If Not objName(objIndex) Is Nothing Then
If objName(objIndex).Top + objName(objIndex).Height > (Me.ScaleHeight+ Me.vBAR.Value - Me.tbForm.Height Then
vBAR.Value = objName.Top(objIndex) + objName.Height - (Me.ScaleHeight - IIf(hBAR.Visible, hBAR.Height, 0)) + Me.tbForm.Height + 280
End If
If objName(objIndex).Top < Me.vBAR.Value Then
vBAR.Value = IIf(objName.Top(objIndex) - 240 > 0, objName.Top(objIndex) - 240, 0)
End If
If objName(objIndex).Top + objName(objIndex).Height > (Me.ScaleHeight+ Me.vBAR.Value - Me.tbForm.Height Then
vBAR.Value = objName.Top(objIndex) + objName.Height - (Me.ScaleHeight - IIf(hBAR.Visible, hBAR.Height, 0)) + Me.tbForm.Height + 280无法执行,导致滚动条不能下移!
如何是好??????????
没看懂什么意思,能说清楚点吗