控制Access中表单的大小

时间:2008-10-19 23:05:59

标签: ms-access access-vba

所以我有一个Access应用程序,我想要一些表单在打开时最大化,而其他表单在打开时要中等大小。但是,如果我尝试这样的事情:

Private Sub Form_Activate()
  DoCmd.Maximize
End Sub

Private Sub Form_Activate()
  DoCmd.Restore
End Sub

它具有最大化或恢复每个打开的窗口的效果,这不是我正在寻找的。

有什么方法吗?

我正在使用Access 2003。

4 个答案:

答案 0 :(得分:2)

Access是一个MDI(多文档界面)应用程序,这就是它们的工作方式:所有子窗口都被最大化,或者没有。

您需要做的是找到一种方法来发现Access应用程序窗口的维度,然后以编程方式设置表单的.InsideWidth和.InsideHeight属性。 Application对象有hwndAccessApp,可能可以与某些Windows API调用一起使用来查找其宽度和高度。

附录

感谢Philippe Grondier找到相关的代码示例,code sample的一般想法是:

  • 声明以下Win32 API元素:
    • struct Rect(VBA中为Type Rect…
    • const SW_SHOWNORMAL = 1(适用于ShowWindow)
    • GetParent(给予一个hwnd,得到它的父母的hwnd)
    • GetClientRect(从hwnd检索位置和大小)
    • IsZoomed(布尔值;如果窗口最大化,则为true)
    • ShowWindow(更改窗口状态)
    • MoveWindow(更改窗口的位置和大小)
  • 如果您的表单已最大化(IsZoomed(frm.hWnd) = True),则将其还原(ShowWindow frm.hWnd, SW_SHOWNORMAL
  • 从表单的hWnd(GetClientRect GetParent(frm.hWnd, rect)
  • 获取MDI客户端区域
  • 使用rect数据更改窗口的位置和大小(MoveWindow frm.hWnd, 0, 0, rect.x2-rect.x1, rect.y2-rect.y1

(以上基本上是对代码示例的解释;我没有复制粘贴代码,因为我不确定作者是否允许它。)

答案 1 :(得分:2)

ΤΖΩΤΖΙΟΥ在说全部最大化或没有最大化时是100%正确的。如果你真的想要管理这个问题,你将需要阅读一点here(查看建议的代码和调用它的方法),了解做了什么,并最终构建自己的解决方案取决于您的需求。

答案 2 :(得分:0)

您可以使用MoveSize:

DoCmd.MoveSize 100,100

更多信息:http://msdn.microsoft.com/en-us/library/aa141514(office.10).aspx

答案 3 :(得分:0)

这里有几个选项:http://www.jamiessoftware.tk/articles/resolution.html

我过去使用ADHResize并完成了工作。