VB控件随窗体最大化变化的方法

VB控件随窗体最大化变化的方法,第1张

概述   在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.那么,怎么才能让窗体中控件自动随窗体变化大小呢?    有三种方法供选择:1、用代码控制特定的控件随着窗体最大化展现出自己所希望的结果。第一步:窗体LOAD事件时记下每一个控件的位置属性和大小,并取得窗口大小的属性值。第二步:计算缩放比,就是用控件的LEFT和WIDTH属性分别除以窗口的WIDTH属
@H_403_1@ @H_419_2@在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.那么,怎么才能让窗体中控件自动随窗体变化大小呢?

@H_419_2@有三种方法供选择:1、用代码控制特定的控件随着窗体最大化展现出自己所希望的结果。第一步:窗体LOAD事件时记下每一个控件的位置属性和大小,并取得窗口大小的属性值。第二步:计算缩放比,就是用控件的leftWIDTH属性分别除以窗口的WIDTH属性值得到两个比值X1,X2。再用控件的topheight属性值分别除以窗口的HEIGHT属性值得到两个比值Y1,Y2。第三步:在窗体的Resize的事件中,控件的位置和大小=窗体的大小*比值。总结:这样各个控件的位置和大小由窗体的大小决定。这个问题还可以延伸:A;窗体大小改变时,控件位置改变但大小不改变。B;窗体大小改变时,控件大小改变但位置不改变。
这两个问题还可以细化窗体的
WIDTH属性和height属性值分别变化对控件的大小和位的影响。总共有六个情况。你可以打开酷狗,当你改变它的窗体大小时,你仔细观察它里面的控件的大小和位置的变化情况,细细的品味这种变化。相信你能自己写出代码,这个并不太难。

@H_419_2@ 2、使用第三方软件,但是效果很差,而且需要安装第三方软件,非常没有必要。

@H_419_2@ 3、比较推荐的一种方法:

@H_419_2@'窗体最大化定义

@H_419_2@PrivateFormolDWIDthAsLong

@H_419_2@'原始宽度

@H_419_2@PrivateFormoldHeightAsLong

@H_419_2@'原始高度

@H_419_2@'在调用Resizeform前先调用本函数

@H_419_2@PublicSubResizeInit(FormnameAsForm)

@H_419_2@DimObjAsControl

@H_419_2@FormolDWIDth=Formname.ScaleWIDth

@H_419_2@FormoldHeight=Formname.ScaleHeight

@H_419_2@OnErrorResumeNext

@H_419_2@ForEachObjInFormname

@H_419_2@Obj.Tag=Obj.left&""&Obj.top&""&Obj.WIDth&""&Obj.Height&""

@H_419_2@NextObj

@H_419_2@OnErrorGoTo0

@H_419_2@EndSub

@H_419_2@'按比例改变表单内各元件的大小,

@H_419_2@'在调用ReSizeform前先调用ReSizeInit函数

@H_419_2@PublicSubResizeform(FormnameAsForm)

@H_419_2@DimPos(4)AsDouble

@H_419_2@DimIAsLong,TempPosAsLong,StartPosAsLong

@H_419_2@DimObjAsControl

@H_419_2@DimscaleXAsDouble,ScaleYAsDouble

@H_419_2@ScaleX=Formname.ScaleWIDth/FormolDWIDth

@H_419_2@'保存窗体宽度缩放比例

@H_419_2@ScaleY=Formname.ScaleHeight/FormoldHeight

@H_419_2@'保存窗体高度缩放比例

@H_419_2@OnErrorResumeNext

@H_419_2@ForEachObjInFormname

@H_419_2@StartPos=1

@H_419_2@ForI=0To4

@H_419_2@'读取控件的原始位置与大小

@H_419_2@TempPos=InStr(StartPos,Obj.Tag,"",vbTextCompare)

@H_419_2@IfTempPos>0Then

@H_419_2@Pos(I)=MID(Obj.Tag,StartPos,TempPos-StartPos)

@H_419_2@StartPos=TempPos+1

@H_419_2@Else

@H_419_2@Pos(I)=0

@H_419_2@EndIf

@H_419_2@'根据控件的原始位置及窗体改变大小

@H_419_2@'的比例对控件重新定位与改变大小

@H_419_2@Obj.MovePos(0)*ScaleX,Pos(1)*ScaleY,Pos(2)*ScaleX,Pos(3)*ScaleY

@H_419_2@NextI

@H_419_2@NextObj

@H_419_2@OnErrorGoTo0

@H_419_2@EndSub

@H_419_2@PrivateSubForm_Resize()

@H_419_2@ResizeformMe'控件随之改变

@H_419_2@EndSub

@H_419_2@PrivateSubForm_Load()

@H_419_2@callresizeInit(Me)'确保窗体改变时控件随之改变

@H_419_2@EndSub

@H_419_2@注意:1、声明语句“PrivateFormolDWIDthAsLong”和“PrivateFormoldHeightAsLong”不可以放到“Endsub”后

@H_419_2@ 2、如果出现除数为零的情况,需要调整控件的大小。

总结

以上是内存溢出为你收集整理的VB控件随窗体最大化变化的方法全部内容,希望文章能够帮你解决VB控件随窗体最大化变化的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存