如何将子表单的高度和宽度设置为 ms access 2010 中可用屏幕空间的百分比?特别是,我在上传到此文件共享 url 的数据库中有一个标记为“Tab A”的嵌套导航子表单:http://jmp.sh/v/HGctZ4Ru74vDAjzN43Wq
在文件共享链接的数据库中,具有不同屏幕分辨率设置的不同用户的导航子表单中的选项卡 A 以各种不同的大小显示,包括一些子表单在可用屏幕空间中所占比例小得离谱。导航子表单的详细信息部分的高度设置为 5.5542 英寸。有没有办法设置它,使高度是子窗体顶部下方可用空间的 90%?我还希望标记为“Tab 1”的子表单的宽度为左边缘右侧宽度的 90%。在 java 中,这很容易使用偏移量和计算宽度。我似乎找不到有关如何在 Access 2010 中执行相对尺寸的说明。
关于该主题的 Google 搜索似乎没有产生任何解决方案,我想通过将高度设置增加一两英寸来避免搞砸所有其他用户的屏幕。
最佳答案
在 Access 表单中,所有百分比或相对大小都必须由您计算。我承认在 Access 中调整窗体和元素的大小有点死板和笨拙,但许多桌面应用程序 GUI 环境确实如此。我认为 .NET WPF 已尝试解决此问题,但这与 MS Access 无关。
我通常最终会使用这样的东西。此代码属于主窗体。这就是我调整大小的地方。
Private Sub Form_Resize()
On Error Resume Next
Me.subform1.Width = Me.WindowWidth - 390
'or if you want to account for the form's left property
'Me.subform1.Width = Me.WindowWidth - (Me.subform1.Left + 100)
End Sub
编辑1:
在回答您的评论时,390 和 100 是缇。虽然 Access 中的设计时确实使用英寸,但运行时属性必须使用缇设置。
我把它弄乱了一点,无法得到我认为完全准确的任何东西。我在下面发布对我来说最合乎逻辑的代码,但是我不知道在 MS Access 中如何计算表单大小的来龙去脉。看来我可能遗漏了一些东西,因为下面的代码没有产生准确的结果。我发现通过增加我的边距并减少子表单高度计算的百分比/小数,我能够得到一些看起来相对接近但如果你要求精确和准确的数字就不能令人满意的东西。
Private Sub Form_Resize()
On Error Resume Next
Const RMARGIN = 0
Const BMARGIN = 0
Me.subform1.Left = Round(Me.WindowWidth * 0.1) - RMARGIN
Me.subform1.Top = Round(Me.WindowHeight * 0.1) - BMARGIN
Me.subform1.Width = Round(Me.WindowWidth * 0.9) - (Me.subform1.Left + RMARGIN)
Me.subform1.Height = Round(Me.WindowHeight * 0.9) - (Me.subform1.Top + BMARGIN)
End Sub
关于ms-access - MS Access 2010 中子表单的相对大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19990988/