VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在vb中让控件大小和位置随着表单的大小成比例变化的方法
发表评论(0)作者:, 平台:, 阅读:11418, 日期:2000-05-14
资料整理:影子 VB爱好者乐园 http://yingzi007.126.com

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

作者:中国农业大学图书馆

洪重阳

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步就可实现让控件大小和位置随着表单的大小变化而成比例变化,从而解决界面因表单大小的改变而变得不均匀的问题。