让VB控件大小随窗体改变而改变.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
让VB控件大小随窗体改变而改变.doc

让VB控件大小随窗体改变而改变   摘 要: 当VB窗体大小改变时,其中的控件(以及控件上的文字)大小不会自动随之改变,这是VB的一个缺陷,要解决该问题,应该保证控件宽度、高度、距窗体左边和上边的距离,以及窗体宽度、高度的比值不变,控件上的文字面积和窗体面积的比值不变,据此,给出了较为完美、简单、健壮的解决方法。   关键词: VB; 窗体; 控件; 文字   中图分类号:TP312 文献标志码:A 文章编号:1006-8228(2014)03-42-02   0 引言   VB简单易学,是非常适合非专业程序员的可视化程序设计语言[1]。但当窗体大小改变时,其中的控件大小不会自动随之改变,这将破坏原来的布局,因此改变几乎毫无意义,所以很多程序员只好限制窗体改变大小,但这样编写出来的程序不完美。对于这样的“先天”不足,我们在此尝试“后天”弥补。   1 原理   当窗体大小改变时,对于控件,应保证其宽度、高度、距窗体左边和上边的距离,以及窗体宽度、高度的比值不变。记下最初的这几个比值,以后据此足以算出控件新的大小和位置。   控件上可能有文字,如果不对其处理,即大小不变,扩大窗体文字又可能显得太小,特别是逐渐缩小窗体,文字将由横排变成竖排、边缘缺失,甚至控件布局也将错乱(见图2,原来大小一致(见图1)的小文本框(里面有文字,但尚未输入)变得不一致(如其中第61和62个)),而且窗体还不能太小(届时鼠标将不能再向小拖动边框),因此文字的大小也应随窗体改变。   但窗体中文字高度(即字号)、宽度的比值是固定的,无法同时保证其宽度、高度,以及窗体宽度、高度的比值不变,所以不能沿用对控件的做法,文献[2]很难得注意到了这个问题,提出了一个解决方法,即:保证文字高度和窗体高度的比值不变。但这样如果只改变窗体宽度和文字高度,也即大小(因高度、宽度的比值固定)将不会改变,缩小宽度时还将出现前述的情形,可见这种方法并没有完全解决问题。本文认为,应该保证文字面积和窗体面积的比值不变,即   故   Controls(i).Font.Size   =Controls(i).Font.Size   =Controls(i).Font.Size   =ap(i).sp   其中,Controls(i).Font.Size是控件i上的文字最初的高度[3],Controls.(i).Font.Size是它在窗体改变后的高度,Form1.Width是窗体最初的宽度,Form1.Width是窗体改变后的宽度,Form1.Height是窗体最初的高度,Form1.Height是窗体改变后的高度,a是文字宽度、高度的比值,ap(i).sp是控件上的文字高度和窗体最初面积的平方根的比值。这样只要窗体大小改变,文字大小就会随之改变,窗体可以小到只剩标题栏,而且原来的布局不变(见图3)。      图1 原来的窗体      图2 缩小的窗体(文字大小不变)      图3 缩小的窗体(文字大小随之改变)   具体地说,窗体高度包括上、下边框、标题栏的高度,它们不与窗体高度成比例改变(与窗体类型有关,对于某一类型的窗体其实是固定值),因此为保证布局不变,应用窗体内部高度(除去上、下边框、标题栏的高度)而不是窗体高度,那么它的值是多少呢?幸运的是,属性ScaleHeight[4]表示的就是窗体内部高度,不用再想办法求出。窗体宽度包括左、右边框的宽度,其余和窗体高度类似。   2 代码   具体的程序代码(所用的VB版本是6.0)如下:   Private Type cp   wp As Single   hp As Single   tp As Single   lp As Single   sp As Single   End Type   Private ap() As cp   Private Sub Form_Load()   ReDim ap(0 To Controls.Count-1)   Dim i As Integer   On Error Resume Next当发生错误(因有的控件(如图像框)没有Font属性;有的控件(如定时器)没有Width、Height属性)时,忽略该行,继续执行   For i=0 To Controls.Count-1   ap(i).wp=Controls(i).Width/Form1.ScaleWidth   记录控件宽度和窗体内部宽度的比值   ap(i).hp=Controls(i).Height/Form1.ScaleHeight   记录控件高度和窗体内部高度的比值   ap(i).tp=Controls(i).Top/Fo

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档