显示没有默认Access框架的Access GUI

时间:2009-08-18 01:21:00

标签: forms user-interface ms-access vba

有没有办法告诉访问只显示表单/报告而不显示访问窗口本身(访问表单填充在其中的“shell”窗口)。

5 个答案:

答案 0 :(得分:13)

实际上,这里的大部分帖子都相当陈旧,并且基于较旧版本的Access。自2007年以来,您只需点击几下鼠标和一行代码即可隐藏界面。 在文件 - 选项 - >当前数据库

选择选项卡式文档,选择隐藏文档选项卡。 取消选中显示导航窗格以及是否要显示状态栏。

然后在加载的启动表单中放置这一行代码:

DoCmd.ShowToolbar "Ribbon", acToolbarNo

结果如下:

enter image description here 因此,除非有人想要增加世界贫困,否则不需要所有这些带API的疯狂解决方案,代码等等。

只需点击几下鼠标,就可以在最后3个版本(2007年以后)中隐藏Access UI一行代码。

答案 1 :(得分:8)

是的,你可以。请参阅Basics for Building Microsoft Office Access 2003 Runtime-Based Solutions中的“设置启动选项”。

  

您可以使用“启动”对话框   指定以下内容:

     
      
  • 是否应在启动时显示数据库窗口。
  •   

答案 2 :(得分:5)

为了做到这一点,我利用了一些聪明人编写的代码并在网上提供(我认为它最初由Terry Kreft编写?)并引用了一些Windows API。

我先这个:

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

Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3

那个

Function fSetAccessWindow(nCmdShow As Long)
      'Usage Examples
      'Maximize window:
      '       ?fSetAccessWindow(SW_SHOWMAXIMIZED)
      'Minimize window:
      '       ?fSetAccessWindow(SW_SHOWMINIMIZED)
      'Hide window:
      '       ?fSetAccessWindow(SW_HIDE)
      'Normal window:
      '       ?fSetAccessWindow(SW_SHOWNORMAL) 

      Dim loX  As Long
      Dim loForm As Form

   On Error Resume Next
   Set loForm = Screen.ActiveForm
   If Err <> 0 Then 'no Activeform
       If nCmdShow = SW_HIDE Then
           MsgBox "Cannot hide Access unless a form is on screen"
       Else
           loX = apiShowWindow(hWndAccessApp, nCmdShow)
           Err.Clear
       End If
   Else
       If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
           MsgBox "Cannot minimize Access with this form on screen:" & (loForm.Caption + " ")
       Else
           If nCmdShow = SW_HIDE And loForm.PopUp <> True Then
               MsgBox "Cannot hide Access with this form on screen:" & (loForm.Caption + " ")
           Else
               loX = apiShowWindow(hWndAccessApp, nCmdShow)
           End If
       End If
   End If
   fSetAccessWindow = (loX <> 0)

End Function

启动程序时,我会以这种方式调用函数

'function is called by autoexec Macro'
...
fSetAccessWindow (SW_HIDE)
...
DoCmd.OpenForm my_Startup_Form
Forms(my_Startup_Form).Controls(my_Active_Control).SetFocus

屏幕会“闪烁”一点,主窗口会短暂出现,然后消失。我的焦点窗口将单独显示。

答案 3 :(得分:1)

如果您创建一个MDE并在Access Runtime下运行它,它将执行剥离(大多数,如果不是全部)Access GUI的程序。

这是设计的。 Access Runtime旨在允许您分发应用程序的副本,同时剥夺用户常规的Access陷阱。

答案 4 :(得分:1)

没有。 Access是一个经典的多文档界面(MDI),其中所有子窗口都在父窗口中。

但是,Access确实有很多方法可以更改父窗口菜单和工具栏。您可以创建自己的菜单和工具栏布局,只有您想要的内容。 Google在Access中创建菜单栏和工具栏,它应该指向正确的方向。

编辑:

JP钉了它....我的大脑忘了那个小金块......