如何在ms access 2010中将子窗体的高度和宽度设置为可用屏幕空间的百分比?特别是,我在数据库中标记为“标签A”的嵌套导航子表单,我上传到此文件共享网址:http://jmp.sh/v/HGctZ4Ru74vDAjzN43Wq
在文件共享链接的数据库中,具有不同屏幕分辨率设置的不同用户具有导航子窗体,其中选项卡A以所有不同的尺寸显示,包括一些子窗体可用屏幕空间的可笑小百分比。导航子窗体的详细信息部分的高度设置为5.5542英寸。有没有办法设置它,以便高度是子窗体顶部下方可用空间的90%?我还希望标记为“Tab 1”的子窗体的宽度为左边缘右边的90%。在java中,使用偏移和计算宽度很容易。我似乎无法找到如何在Access 2010中执行相对维度的说明。
谷歌搜索这个话题似乎没有产生任何解决方案,我想通过在高度设置上添加一两英寸来避免搞砸所有其他用户的屏幕。
答案 0 :(得分:5)
在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