@H_403_1@ @H_419_2@在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.那么,怎么才能让窗体中控件自动随窗体变化大小呢? @H_419_2@有三种方法供选择:1、用代码控制特定的控件随着窗体最大化展现出自己所希望的结果。第一步:窗体LOAD事件时记下每一个控件的位置属性和大小,并取得窗口大小的属性值。第二步:计算缩放比,就是用控件的left和WIDTH属性分别除以窗口的WIDTH属性值得到两个比值X1,X2。再用控件的top和height属性值分别除以窗口的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控件随窗体最大化变化的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)