gpt4 book ai didi

vba - 如何在 MS Access 表单上动态保持控件居中(相对位置)?

转载 作者:行者123 更新时间:2023-12-04 17:47:40 25 4
gpt4 key购买 nike

我正在使用 Access 2013 并且有许多控件(列表框、按钮等),我希望在调整表单大小时作为一个组在表单上保持居中。

锚定无法完成我正在寻找的内容,因为我不想将控件锁定到顶部/底部/左侧/右侧。我希望他们留在中心。

简单地在窗体的 resize 事件上使用这样的代码 me.mycontrol.left = myform.Width/2 并不能满足我的要求,因为它将各个控件与中心对齐。我希望控件组居中。

有没有办法做到这一点?

编辑:这是一个例子,这可能会使这一点更清楚。假设我有一个 100 x 100 的表格,上面有两个按钮。按钮高 20 个单位,间隔 10 个单位。他们将有以下职位:

Button1.Top = 25
(10 单位空间从 45 开始)
Button2.Top = 55

如果将窗体大小调整为 200 x 200,则控件将具有以下位置:

Button1.Top = 75
(10 单位空间从 95 开始)
Button2.top = 105

理想情况下,我很想把它变成一个模块,在这里我只是传递一个表单,它会获取每个控件的原始位置并计算新位置。

编辑2:

这是一次失败的尝试,使用我的真实代码,基于 Krish 的想法:

Private Sub Form_Resize()

Dim resizeFactor As Double

resizeFactor = Me.WindowWidth / Me.Width

Me.lstModule.Left = Me.lstModule.Left * resizeFactor
Me.ctlSubform.Left = Me.ctlSubform.Left * resizeFactor
Me.Box6.Left = Me.Box6.Left * resizeFactor

End Sub

最佳答案

我认为锚定实际上就是答案。您只需在控件周围创建一个布局网格并像这样设置锚定:

_____________________|___stretch down____|___________________
stretch across top___|___your controls___|stretch across top
_____________________|___stretch down____|___________________

这样,您的控件将始终位于表单/子表单的中间。

编辑:截图

Layout view
Form view

编辑:添加了有关边界的信息

添加边框可能会很痛苦,但在某种程度上,这是可能的。您可以通过设置网格线颜色、将按钮的网格线样式设置为实心(默认为透明)并添加一些填充来做到这一点。在下面的示例中,我将第一个按钮的网格线样式设置为 LEFT、RIGHT 和 TOP 的实心,并将这些边的填充设置为 0.1"。如果您继续使用类似的方式,您的结果将如下所示:

Design view
Form view

关于vba - 如何在 MS Access 表单上动态保持控件居中(相对位置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com