AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VB编程

在VB中让控件大小和位置随着表单的大小成比例变化的方法

51自学网 http://www.wanshiok.com
vb的可视化编程方法使得windows的一般编程变得简单直观。尤其是程序界面设计,只需用鼠标将相应的控件(按钮、图框、表格等)拖放到表单(form)上直接调整其位置和大小,即可设计出漂亮实用的界面。但在程序运行期间,如果改变表单的大小,表单上控件的大小和位置并非成比例地发生相应变化,导致界面呈现难看的不均匀现象。
---- 上述现象和问题,可在表单Form_Resize()过程编程,通过定义表单的ScaleMode属性和表单中控件的Height、Width、Top、Left属性来解决这个问题。具体实现方法如下:

用表单的Height、Width、Top、Left属性设计表单在屏幕中的位置和大小。将表单中的控件大小和位置调整好,直到得到满意的界面。

选择表单的ScaleMode属性为user;设定ScaleHeight、ScaleWidth的值,如可将这俩个值设定为100或1000或其他的数值,也可使这俩个值不等,视个人的习惯而定,这里我们将其设为1000;使ScaleTop=0、ScaleLeft=0。
---- ScaleMode属性决定了表单的ScaleHeight、ScaleWidth、ScaleTop、ScaleLeft属性值和表单中控件的Height、Width、Top、Left属性值的度量单位(用户自定义、缇、点、像素、字符、英寸、毫米、厘米等)。一般使Scaletop和ScaleLeft等于零。ScaleHeight、ScaleWidth属性值表示以ScaleMode值为度量单位的表单的高和宽,它们的改变不会使表单的大小和位置发生变化。改变ScaleMode的值不会影响表单和表单中控件的位置和大小,只是表单的ScaleHeight、ScaleWidth属性值和表单中控件的Height、Width、Top、Left属性值要根据新的度量单位自动发生变化。由于表单的大小、表单中控件的位置和大小已经设定,除了"用户自定义"度量单位外,表单的ScaleHeight、ScaleWidth、ScaleTop、ScaleLeft属性值是一定的。只要手工改变表单的ScaleHeight、ScaleWidth、ScaleTop、ScaleLeft任一属性值,ScaleMode的值就变成了"用户自定义"。
---- 用户自定义ScaleHeight值表示将表单的高度等分了ScaleHeight等份,表单中控件的Height属性值是以表单高度等分了ScaleHeight等份的一份为单位。用户自定义ScaleWidth值表示将表单的宽度等分了ScaleWidth等份,表单中控件的Width属性值是以表单宽度等分了ScaleWidth等份的一份为单位。

---- 例如:有一个表单form1,form1中有一个控件Cammand1,Cammand1的位置和大小已经设计好

form1.ScaleMode=user
form1.Height=6800
form1.ScaleHeight=1000
这时Cammand1.Height的值是以6800/1000=6.8为单位的,
即为表单高度的千分之六点八为单位。

记下表单中每一个希望与表单大小变化而成比例变化的控件的Height、Width、Top、Left值。

用鼠标双击表单没有控件的地方,点出编程界面右上方的表单过程名表,选择Form_Resize过程,在Form_Resize过程编程如下:
Private Sub Form_Resize()
ScaleHeight = 1000
ScaleWidth = 1000
表单中控件名1.top=步骤3记下的值
表单中控件名1.Width=步骤3记下的值
表单中控件名1.Left=步骤3记下的值
表单中控件名2.Height=步骤3记下的值
表单中控件名2.top=步骤3记下的值
表单中控件名2.Width=步骤3记下的值
表单中控件名2.Left=步骤3记下的值
表单中控件名2.Height=步骤3记下的值
... ...
End sub

---- 总之, 通过以上4步就可实现让控件大小和位置随着表单的大小变化而成比例变化,从而解决界面因表单大小的改变而变得不均匀的问题。

 

 

 
上一篇:如何在VB中使用Delphi的控件  下一篇:自制控件方面的有关知识