改变窗体大小后如何让控件仍居中显示
我的窗体上有几个fram,控件分别放在不同的fram中,窗体大小改变(最大化、最小化)后,如何继续让里面的控件居中显示?1楼的大哥给出了一个思路,但是如果控件是放在fra...
我的窗体上有几个fram,控件分别放在不同的fram中,窗体大小改变(最大化、最小化)后,如何继续让里面的控件居中显示?
1楼的大哥给出了一个思路,但是如果控件是放在fram或者sstab中的,那么它的位置参数是不变的,
Debug.Print Me.Controls(i).Name & " " & Controls(i).top & " " & Controls(i).left & " " & Controls(i).height & " " & Controls(i).width
把这句代码放入循环中就可以看出。另外
MeWidth = Me.ScaleWidth
MeHeight = Me.ScaleHeight
这两句好像没有用啊?
2楼的说的table是什么东西我根本就没弄明白。 展开
1楼的大哥给出了一个思路,但是如果控件是放在fram或者sstab中的,那么它的位置参数是不变的,
Debug.Print Me.Controls(i).Name & " " & Controls(i).top & " " & Controls(i).left & " " & Controls(i).height & " " & Controls(i).width
把这句代码放入循环中就可以看出。另外
MeWidth = Me.ScaleWidth
MeHeight = Me.ScaleHeight
这两句好像没有用啊?
2楼的说的table是什么东西我根本就没弄明白。 展开
2个回答
展开全部
不需要一直在死胡同裏走
可以换个思路考虑
现在你只是想让控件一直保持在程序的最中央是吧?
那就在ReSize事件裏 写上移动控件位置的代码就好了啊
举个例子
原来程序的窗体 高度300 x 宽度400
有一个按钮 大小是 高度30 x 宽度80
那要把这个按钮移动到中间 只需要
Private Sub Form_Resize()
Command1.Top = (Form1.ScaleHeight - Command1.Height) / 2
Command1.Left = (Form1.ScaleWidth - Command1.Width) / 2
End Sub
代码写成这样 是为了更好地显示原理
你可以先试下这段代码 看看是不是已经实现了你想要的功能?
代码还可以稍微简化下
Private Sub Form_Resize()
Command1.Move (Form1.ScaleWidth - Command1.Width) / 2, (Form1.ScaleHeight - Command1.Height) / 2
End Sub
还有你说的 在Frame或者其他容器中 也可以很容易的解决的
在Form_Resize()过程中 先把这个容器的大小修改到跟窗体一样的比例 就可以了
还是上面那个例子
现在添加一个Frame 然后把Command控件放进这个Frame裏
代码如下:
Private Sub Form_Resize()
Frame1.Left = 60
Frame1.Top = 30
Frame1.Width = Form1.ScaleWidth - 120
Frame1.Height = Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub
现在试试看是不是实现你的要求了
同样可以简化下:
Private Sub Form_Resize()
Frame1.Move 60, 30, Form1.ScaleWidth - 120, Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub
如果有很多个Frame的话 你自己Frame所占的窗体大小的比例 就可以了.
可以换个思路考虑
现在你只是想让控件一直保持在程序的最中央是吧?
那就在ReSize事件裏 写上移动控件位置的代码就好了啊
举个例子
原来程序的窗体 高度300 x 宽度400
有一个按钮 大小是 高度30 x 宽度80
那要把这个按钮移动到中间 只需要
Private Sub Form_Resize()
Command1.Top = (Form1.ScaleHeight - Command1.Height) / 2
Command1.Left = (Form1.ScaleWidth - Command1.Width) / 2
End Sub
代码写成这样 是为了更好地显示原理
你可以先试下这段代码 看看是不是已经实现了你想要的功能?
代码还可以稍微简化下
Private Sub Form_Resize()
Command1.Move (Form1.ScaleWidth - Command1.Width) / 2, (Form1.ScaleHeight - Command1.Height) / 2
End Sub
还有你说的 在Frame或者其他容器中 也可以很容易的解决的
在Form_Resize()过程中 先把这个容器的大小修改到跟窗体一样的比例 就可以了
还是上面那个例子
现在添加一个Frame 然后把Command控件放进这个Frame裏
代码如下:
Private Sub Form_Resize()
Frame1.Left = 60
Frame1.Top = 30
Frame1.Width = Form1.ScaleWidth - 120
Frame1.Height = Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub
现在试试看是不是实现你的要求了
同样可以简化下:
Private Sub Form_Resize()
Frame1.Move 60, 30, Form1.ScaleWidth - 120, Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub
如果有很多个Frame的话 你自己Frame所占的窗体大小的比例 就可以了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询