Access打开指定弹出式窗体,并将其定位在当前控件下方的示例;Access窗体定位;Access窗体置顶代码;Access代码设置弹出与模式的示例-鼠标
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


Access打开指定弹出式窗体,并将其定位在当前控件下方的示例;Access窗体定位;Access窗体置顶代码;Access代码设置弹出与模式的示例

发表时间:2022/8/13 8:48:55 评论(0) 浏览(5165)  评论 | 加入收藏 | 复制
   
摘 要:Access打开指定弹出式窗体,并将其定位在当前控件下方。
正 文:

'经修改Access网友的源码而来

'函数名称: OpenFormFor

'frmName:,必选参数,需要打开的窗体名称
'功能描述: 打开一个弹窗式窗体定位到当前活动窗体活动控件

'2022-08-13更新了一下代码

Public Function OpenFormFor(frmName As String, Optional strArgs As String, Optional lngX As Long = 0, Optional lngY As Long = 0)
    On Error GoTo Err_OpenFormFor
    Dim lngLeft As Long
    Dim lngTop As Long
    Dim lngWidth As Long
    Dim lngHeight As Long
    Dim lngBorderWidth As Long
    Dim CurrentCtl As Control
    
    With Screen.ActiveForm
        Dim frm As Object
        '获取当前活动窗体控件名称
        For Each frm In CurrentProject.AllForms
            Set CurrentCtl = Screen.ActiveForm.ActiveControl
        Next frm
        '计算窗体左右边框宽度
        lngBorderWidth = (.WindowWidth - .InsideWidth) / 2 
        lngLeft = .WindowLeft + CurrentCtl.Left
        '判断是否有记录选择器
        If .RecordSelectors Then lngLeft = .WindowLeft + .WindowWidth - .InsideWidth + CurrentCtl.Left - CurrentCtl.BottomPadding / 2
        '====================
        lngHeight = (.WindowHeight - .InsideHeight - lngBorderWidth)
        '计算定位的Y位置
        lngTop = .WindowTop + CurrentCtl.Top + CurrentCtl.Height + lngHeight / 2 + lngBorderWidth - CurrentCtl.BottomPadding
        '判断活动控件位置在窗体页眉或页脚位置
        Select Case CurrentCtl.Section
        Case acDetail
            lngTop = lngTop + .Section(acHeader).Height
        Case acFooter
            lngTop = lngTop + .Section(acHeader).Height + .Section(acDetail).Height
        End Select
        '打开指定窗体,strArgs传递参数
        DoCmd.OpenForm frmName, , , , , , strArgs
        '定位打开窗体到活动窗体控件,lngX,lngY微调补正位置
        Forms(frmName).Move lngLeft + lngX, lngTop + lngY
    End With
    
Exit_OpenFormFor:
    Exit Function
    
Err_OpenFormFor:
    If Err = 2462 Then
        Resume Next
    Else
        MsgBox Err.Description, vbCritical, "Error For Function OpenFormFor"
        Resume Exit_OpenFormFor
    End If
End Function




示   例:

点击下载此附件


演   示:

点击图片查看大图



Access软件网交流QQ群(群号:198465573)
 
 相关文章
Access定位窗体的位置,Access定位窗体大小,Access...  【收藏文章  2008/7/22】
【Access入门示例】Access打开指定对象在屏幕的显示位置、...  【麥田  2011/10/26】
access2007\2010小技巧一则---控件自适应窗体、屏幕...  【麥田  2011/10/29】
【Access入门】Access定位消息盒MsgBox默认坐标位置...  【麥田  2012/7/6】
【Access入门示例】默认让子窗体光标定位到倒数第二条记录的示例  【麥田  2019/5/28】
常见问答
技术分类
相关资源
文章搜索
关于作者

鼠标

文章分类

文章存档

友情链接