Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何调整访问表单的大小以适应屏幕_Vba_Ms Access_Ms Access 2016 - Fatal编程技术网

Vba 如何调整访问表单的大小以适应屏幕

Vba 如何调整访问表单的大小以适应屏幕,vba,ms-access,ms-access-2016,Vba,Ms Access,Ms Access 2016,所以我最近从Access 2003升级到Access 2016,当然,我讨厌处理2016年无法改变的令人讨厌的白色背景。最大化表单/报告不是我们的选择,因为我们经常在任何给定时间使用多个表单/报告,并且需要能够在它们之间查看和更改以完成我们的工作 我想出了一个我认为非常聪明的解决方案,我创建了一个空的背景形式,除了它有一个深灰色的背景,使它更容易对你的眼睛。当您打开一个新表单或报表(在打开事件时)时,它会将该表单放在堆栈的顶部,这样您就有了一个打开表单和报表的层次结构 如果您单击不在顶部的表单或

所以我最近从Access 2003升级到Access 2016,当然,我讨厌处理2016年无法改变的令人讨厌的白色背景。最大化表单/报告不是我们的选择,因为我们经常在任何给定时间使用多个表单/报告,并且需要能够在它们之间查看和更改以完成我们的工作

我想出了一个我认为非常聪明的解决方案,我创建了一个空的背景形式,除了它有一个深灰色的背景,使它更容易对你的眼睛。当您打开一个新表单或报表(在打开事件时)时,它会将该表单放在堆栈的顶部,这样您就有了一个打开表单和报表的层次结构

如果您单击不在顶部的表单或报表(在激活事件时),则它会移回堆栈顶部。然后,如果您不小心单击了背景窗体,它将遍历堆栈,从底部开始,依次为每个窗体或报表设置焦点,而不是覆盖您正在处理的所有内容。以下是我如何为你们中感兴趣的人所做的:

Private Sub Form_GotFocus()
  Dim db As DAO.Database
  Dim rst As DAO.Recordset
  Set db = CurrentDb
  Set rst = db.OpenRecordset("SELECT ID, FormName, FrmRpt FROM FormStack ORDER BY ID", dbOpenSnapshot)
  If rst.EOF Then
    DoCmd.OpenForm "frmMenu"
  Else
    While Not rst.EOF
      If rst.Fields("FrmRpt") = "Form" Then
        Forms(rst.Fields("FormName")).SetFocus
      Else
        DoCmd.SelectObject acReport, rst.Fields("FormName")
      End If
      rst.MoveNext
    Wend
  End If
  rst.Close
  Set rst = Nothing
End Sub
这一切都很完美,我只需要确保我将代码添加到我创建的任何新表单或报表中

所以这是我的困境,这个背景表格需要足够大,以填满使用它的人的屏幕,否则,你会看到边缘周围的白色。因为每个人都有不同的显示器,所以我决定将表格制作得非常大(21英寸x13英寸),这样它就可以填满所有使用它的人的屏幕。我的“自动居中”、“自动调整大小”和“适合屏幕”都设置为“是”

我没有边框、记录选择器、导航按钮、跳转线、滚动条、控制框、关闭按钮或最小-最大按钮,而且它也不可移动。细节部分可以增长也可以收缩。所以现在一切都正常了,除了这个窗体比任何人的访问窗口都大之外,现在在访问窗口上有滚动条,这样你就可以四处移动,看到整个背景窗体的单调、深灰色光环

如果它能够完美地填充访问窗口,这样这些滚动条就不会出现,也不会让用户感到困惑,那就太好了

有人知道如何解决这个问题吗?

我会的

  • 最大化背景窗体以覆盖Access背景
  • 将所有表单+报告设置为
    Popup=Yes
    ,则即使打开了最大化表单,它们也不会被最大化
  • 教育用户,他们现在可以更自由地移动窗口,并且应该避免覆盖菜单栏。
    如果其中一些具有双监视器设置,还可以将一些窗口移动到第二个监视器(访问主窗口之外)。这可能非常有用
  • (而且最重要的是)以各种形式废除所有这些代码

进入访问设置=>
文档窗口选项
并选择选项卡式文档。任何您想要具有特定大小的表单,都可以设置为“弹出”

您仍然可以使用自定义bg颜色、1cmx1cm大小、无滚动、无导航栏、无记录选择器、borderstyle
的自定义表单。放置一个矩形,并将
锚定
属性设置为“
向下和横向拉伸
”,这将填充整个access应用程序,用户将无法关闭它

设置页面

样本结果


迟来的答案,但我找到的最好的解决方案是在彼得的软件旁的收缩拉伸器。它遍历所有控件并调整窗体(及其子窗体)上的所有内容的大小,以适应应用程序窗口。开发人员许可证的功能是合理的。

这不会调整窗体大小以适应屏幕,但Access现在有一个深灰色主题,它为我提供了一个黑色背景并解决了我的问题。

我不确定我是否理解您的情况。制作所有表单/报告
Popup=Yes
难道不能解决所有问题吗?然后你可以将访问窗口设置得非常小。难道你不能将背景形式最大化吗?这是一个很酷的想法,我以前从未使用过弹出窗口,但它并不真正满足我们的需要。首先,我们有一个自定义菜单栏(现在是外接程序的一部分),我们需要它随时可用。我还觉得在屏幕的角落有一个较小的窗口会让我们的一些老员工感到非常困惑。老实说,如果没有办法调整背景表单的大小,我宁愿使用滚动条。最大化不起作用,如果最大化一个表单或报表,那么所有其他打开的表单和报表都会最大化,包括打开时的新表单和报表。因此,在它们之间导航非常困难。也许这个技巧是:最大化任何表单,获取
Me.WindowHeight和Me.WindowWidth的值,恢复到您想要的任何值,并使用捕获的值更改背景表单的大小。这几乎可以实现,事实上,如果我没有任何模式表单,它也可以实现。但是,如果表单是模态的,并且是弹出窗口,那么它会阻止对菜单栏的访问,因此无法打开另一个表单。我知道这是模态的一种奇怪用法,但是有些表单我需要放在顶部,除非您还需要打开菜单栏中可访问的其中一个表单。例如,当我有一个数据输入表单需要保留在打开它的表单的顶部时,我可能仍然希望搜索或拉取有关我输入数据的客户的报告。很抱歉,响应太慢。我尝试过这个方法,使用这个解决方案,我根本不需要背景表单,其他表单被有效地最大化(如果它们不是弹出窗口的话)。然而,虽然这可以解决亮白色背景的问题,但它会降低应用程序的可用性,因为您无法再同时查看两个不同的表单或报表,除非我将它们都制作成弹出窗口,这样会