所以根据上面介绍的原理,在窗体被缩放之后,只要按照下面的关系来设置控件的Left和Top属性值即可。 调整后控件的Left属性值=(控件原Left属性值/窗体原Left属性值)*窗体.ScaleWidth; 调整后控件的Top属性值=(控件原Top属性值/窗体原Top属性值)*窗体.ScaleHeight; 3、实现按窗体缩放比例调整控件大小及位置的具体方法 我们知道,Resize事件是窗体响应的一个事件。当窗体第一次显示或当窗体的状态被改变时(如窗体被最大化、最小化或被还原时)该事件发生。所以只要将对控件大小、位置的调整代码写入窗体的Resize事件中便可达到目的。具体可在窗体的Resize事件过程中使用对象的Move方法:
其中: Object是需要调整大小和位置的任意一个控件的名称; NewLeft, NewTop, NewWidth与NewHeight分别是窗体缩放后控件应有的新的Left, Top,Width与Height的属性值,它们确定了当窗体被缩放后控件的大小和位置。NewWidth, NewHeight的值可由1中的两个公式得到:NewLeft, NewTop的值可由2中的两个公式得到。 4、窗体的多控件的处理 当一个窗体中有多个控件时,如果对每一个控件都用上述方法处理显然比较繁琐。为此,以下给出一个通过编程来处理窗体内多个控件的一般方法(注意:如果窗体内有不可见的控件,则应该在程序中加入相应的代码以避免检查这些控件的尺寸,否则将出错)。 (1)自定义一个数据类型 在标准模块的声明段写入:
(2)定义一个窗体级数组 在窗体模块的声明段写入:
(3)定义一个通用过程
(4)在窗体的Load事件过程中写入代码:
(5)在窗体的Resize事件过程中写入代码:
以下三行需在一行内写完
不难看出,上面的代码具有普遍意义:即对于任何VB程序,只要将上面给出的代码按照要求写入程序中,则无论该VB程序的一个窗体中具有多少控件,均能使窗体内的控件自适应于窗体尺寸缩放,从而解决了控件与窗体在尺寸和位置两方面的比例失调问题。
|
|
来自: 昵称728549 > 《vb窗体控件自适应》