Hopes

          Start Here..

           

          VB自動改變控件大小

          當窗體大小改變時,如何動態(tài)的改變控件的大小是許 多VB程序員頭痛的事。有的人設置窗體Resizable但卻不改變控件的大小;有的人則根據(jù)控件 的絕對位置與窗口大小相加減的辦法來重新定位控件與改變大小,這種辦法比較繁瑣,且不 可重用;當然也有人則限定窗口干脆不讓改變。有沒有一種簡便易行的辦法?答案是肯定的, 下面給出一個一勞永逸的辦法,源程序如下:
          OptionExplicit
          PrivateFormOldWidthAsLong
          保存窗體的原始寬度
          PrivateFormOldHeightAsLong
          保存窗體的原始高度
          在調用ResizeForm前先調用本函數(shù)
          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函數(shù)
          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
          根據(jù)控件的原始位置及窗體改變大小
          的比例對控件重新定位與改變大小
          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
            本例中給出了二個函數(shù):ResizeInit和ResizeForm, 在調用ResizeForm之前必須先調用ResizeInit。你可以將本程序拷到窗體代碼段里,然后在 窗體里加入任意控件即可進行測試。

          posted on 2012-05-25 14:56 ** 閱讀(229) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          導航

          統(tǒng)計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宁都县| 南充市| 若羌县| 延庆县| 云南省| 肇源县| 淳化县| 盐城市| 商城县| 砚山县| 德钦县| 资中县| 日喀则市| 西畴县| 福海县| 婺源县| 汝城县| 江津市| 修水县| 黎川县| 涿鹿县| 屏边| 年辖:市辖区| 漠河县| 加查县| 沙洋县| 北安市| 雷州市| 杭锦后旗| 灌阳县| 鄂温| 广德县| 湘潭县| 固阳县| 崇明县| 衡山县| 洛阳市| 崇州市| 汕尾市| 龙州县| 延津县|