程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 讓VB自動改變控件大小

讓VB自動改變控件大小

編輯:VB綜合教程

  當窗體大小改變時,如何動態的改變控件的大小是許 多VB程序員頭痛的事。有的人設置窗體Resizable但卻不改變控件的大小;有的人則根據控件 的絕對位置與窗口大小相加減的辦法來重新定位控件與改變大小,這種辦法比較繁瑣,且不 可重用;當然也有人則限定窗口干脆不讓改變。有沒有一種簡便易行的辦法?答案是肯定的, 下面給出一個一勞永逸的辦法,源程序如下:

OptionExplicit
PrivateFormOldWidthAsLong
保存窗體的原始寬度
PrivateFormOldHeightAsLong
保存窗體的原始高度
在調用ResizeForm前先調用本函數
PublicSubResizeInit(FormNameAsForm)
DimObjAsControl
FormOldWidth=FormName.ScaleWidth
FormOldHeight=FormName.ScaleHeight
OnErrorResumeNext
ForEachObjInFormName
Obj.Tag=Obj.Left&""&Obj.Top&""
&Obj.Width&""&Obj.Height&""
NextObj
OnErrorGoTo0
EndSub
按比例改變表單內各元件的大小,
在調用ReSizeForm前先調用ReSizeInit函數
PublicSubResizeForm(FormNameAsForm)
DimPos(4)AsDouble
DimiAsLong,TempPosAsLong,StartPosAsLong
DimObjAsControl
DimScaleXAsDouble,ScaleYAsDouble
ScaleX=FormName.ScaleWidth/FormOldWidth
保存窗體寬度縮放比例
ScaleY=FormName.ScaleHeight/FormOldHeight
保存窗體高度縮放比例
OnErrorResumeNext
ForEachObjInFormName
StartPos=1
Fori=0To4
讀取控件的原始位置與大小
TempPos=InStr(StartPos,
Obj.Tag,"",vbTextCompare)
IfTempPos>0Then
Pos(i)=Mid(Obj.Tag,
StartPos,TempPos-StartPos)
StartPos=TempPos+1
Else
Pos(i)=0
EndIf
根據控件的原始位置及窗體改變大小
的比例對控件重新定位與改變大小
Obj.MovePos(0)*ScaleX,Pos(1)
*ScaleY,Pos(2)*ScaleX,Pos(3)*ScaleY
Nexti
NextObj
OnErrorGoTo0
EndSub
PrivateSubForm_Load()
CallResizeInit(Me)在程序裝入時必須加入
EndSub
PrivateSubForm_Resize()
CallResizeForm(Me)確保窗體改變時控件隨之改變
EndSub
  本例中給出了二個函數:ResizeInit和ResizeForm, 在調用ResizeForm之前必須先調用ResizeInit。你可以將本程序拷到窗體代碼段裡,然後在 窗體裡加入任意控件即可進行測試。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved