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源碼網店

常見問答:

技術分類:

相關資源:

專欄作家

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助