显示没有默认访问框架的Access GUI [英] Displaying an Access GUI without the default Access frame

查看:224
本文介绍了显示没有默认访问框架的Access GUI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法告诉访问只显示窗体/报表而不显示访问窗口本身(访问窗体填充在里面的shell窗口)。

为此,我利用一些聪明人编写的代码并在网络上可用(我认为它最初由Terry Kreft编写?),并提到一些Windows API。



我有第一个:

 声明函数apiShowWindow Libuser32 _ 
AliasShowWindow(ByVal hwnd As Long,_
ByVal nCmdShow As Long)As Long

全局常量SW_HIDE = 0
全局常量SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3



 函数fSetAccessWindow(nCmdShow As Long)
'用法示例
'最大化窗口:
' ?fSetAccessWindow(SW_SHOWMAXIMIZED)
'最小化窗口:
'?fSetAccessWindow(SW_SHOWMINIMIZED)
'隐藏窗口:
'?fSetAccessWindow(SW_HIDE)
'正常窗口:
'?fSetAccessWindow(SW_SHOWNORMAL)

Dim loX As Long
Dim loForm As Form

On Error Resume Next
设置loForm =屏幕。 ActiveForm
如果Err < ;> 0然后'没有Activeform
如果nCmdShow = SW_HIDE然后
MsgBox不能隐藏Access,除非窗体在屏幕上
其他
loX = apiShowWindow(hWndAccessApp,nCmdShow)
Err.Clear
End If
其他
如果nCmdShow = SW_SHOWMINIMIZED并且loForm.Modal = True然后
MsgBox无法最小化Access在屏幕上的这种形式:& (loForm.Caption +)
其他
如果nCmdShow = SW_HIDE和loForm.PopUp<> True Then
MsgBox无法在屏幕上隐藏Access:& (loForm.Caption +)
Else
loX = apiShowWindow(hWndAccessApp,nCmdShow)
End If
End If
End If
fSetAccessWindow =( loX<> 0)

End Function

,然后我会调用这个函数

 '函数被autoexec调用宏'
...
fSetAccessWindow(SW_HIDE)
...
DoCmd.OpenForm my_Startup_Form
Forms(my_Startup_Form).Controls(my_Active_Control).SetFocus

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


Is there a way to tell access to only display the forms/reports without displaying the access window itself (the "shell" window that the access forms populate inside of).

解决方案

To do so, I take advantage of a piece of code written by some clever guys and available on the net (I think it was originally written by Terry Kreft?) and referring to some windows API.

I have first this:

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

and that

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

When starting my program, I will then call the function this way

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

The screen will 'flicker' a little bit, and the main window will appear briefly, then disappear. My focussed window will then be displayed alone.

这篇关于显示没有默认访问框架的Access GUI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆