Access快速开发基础教程
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

Access打开指定弹出式窗体,并将其定位在当前控件下方的示例,Access窗体定位

时 间:2022-08-13 08:48:55
作 者:鼠标   ID:27902  城市:嘉定
摘 要: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群 (群号:312594938)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助