首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS Access 2013仅显示启动表单,不显示其他内容

MS Access 2013仅显示启动表单,不显示其他内容
EN

Stack Overflow用户
提问于 2016-08-21 20:16:38
回答 2查看 34.8K关注 0票数 1

当启动我的MS Access 2013数据库时,我只需要它来显示启动表单,而不需要其他任何东西。期望的结果如下所示。背景是我的桌面。

所需:

然而,当我打开数据库时,表单打开并占据了整个屏幕。

下面的VBA代码在启动窗体加载时运行,最初它可以工作,但如果最小化窗口,我可以再次看到背景。

代码语言:javascript
复制
Option Compare Database
Option Explicit
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3

Private Declare Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long

Function fSetAccessWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm

If Err <> 0 Then
    loX = apiShowWindow(hWndAccessApp, nCmdShow)
    Err.Clear
End If

If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
    MsgBox "Cannot minimize Access with " _
    & (loForm.Caption + " ") _
    & "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
    MsgBox "Cannot hide Access with " _
    & (loForm.Caption + " ") _
    & "form on screen"
Else
    loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
fSetAccessWindow = (loX <> 0)
End Function

我有隐藏的功能区,导航窗格和所有的访问用户界面,但我也需要删除访问背景。

当前:

如有任何帮助/建议,我们将不胜感激。提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2016-08-26 23:11:39

您不需要任何API代码。

以下设置应该可以完成此操作:

文件->选项->当前数据库

取消选中“显示文档选项卡”选择选项卡式文档。

在上面还取消选中显示导航窗格。

要隐藏功能区,请在启动时执行以下一行VBA:

DoCmd.ShowToolbar“功能区”,acToolbarNo

结果屏幕将如下所示:

确保表单不是对话框,并确保它们不是弹出式表单。

要返回到“开发”模式,您可以退出数据库,然后按住Shift键重新启动-这将跳过以上所有操作并允许您进行开发。

票数 7
EN

Stack Overflow用户

发布于 2016-08-21 21:20:17

我使用主窗体和Access窗口大小的同步,因此Access窗口总是在主窗口之后。下面是后面的代码:

代码语言:javascript
复制
Private Sub Form_Resize()
'main form
'Let us know when Form is Maximized...

If CBool(IsZoomed(Me.hwnd)) = True Then
    funSetAccessWindow (SW_SHOWMAXIMIZED)
    DoCmd.Maximize
    Me.TimerInterval = 0
ElseIf CBool(IsIconic(Me.hwnd)) = True Then
    funSetAccessWindow (SW_SHOWMINIMIZED)
    Me.TimerInterval = 0
Else
    'enable constant size sync
    Me.TimerInterval = 100
    SyncMainWindowSize Me, True
End If
End Sub

Private Sub Form_Timer()
SyncMainWindowSize Me
End Sub

Public Function SyncMainWindowSize(frm As Form, Optional blnForce As Boolean = False)
Dim rctForm As RECT
Dim iRtn As Integer
Dim blnMoved As Boolean

Static x As Integer
Static y As Integer
Static cx As Integer
Static cy As Integer

#If VBA7 And Win64 Then
    Dim hWndAccess As LongPtr
#Else
    Dim hWndAccess As Long
#End If

If GetWindowRect(frm.hwnd, rctForm) Then
    If x <> rctForm.Left Then
        x = rctForm.Left
        blnMoved = True
    End If

    If y <> rctForm.Top Then
        y = rctForm.Top
        blnMoved = True
    End If
    If cx <> rctForm.Right - rctForm.Left Then
        cx = rctForm.Right - rctForm.Left
        blnMoved = True
    End If
    If cy <> rctForm.Bottom - rctForm.Top Then
        cy = rctForm.Bottom - rctForm.Top
        blnMoved = True
    End If

    If blnMoved Or blnForce Then
        'move/resize main window
        hWndAccess = Application.hWndAccessApp
        iRtn = apiShowWindow(hWndAccess, WM_SW_RESTORE)
        Call SetWindowPos(hWndAccess, 0, x, y, cx, cy, WM_SWP_NOZORDER Or WM_SWP_SHOWWINDOW)
    End If
End If
End Function

Function funSetAccessWindow(nCmdShow As Long)
'Usage Examples
'Maximize window:
'       ?funSetAccessWindow(SW_SHOWMAXIMIZED)
'Minimize window:
'       ?funSetAccessWindow(SW_SHOWMINIMIZED)
'Hide window:
'       ?funSetAccessWindow(SW_HIDE)
'Normal window:
'       ?funfSetAccessWindow(SW_SHOWNORMAL)
    Dim loX  As Long
    On Error GoTo ErrorHandler

    loX = apiShowWindow(hWndAccessApp, nCmdShow)
    funSetAccessWindow = (loX <> 0)
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39064086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档