VB自動改變控制項大小

2021-04-26 22:54:03 字數 2020 閱讀 5332

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

option explicit

private formoldwidth as long

`儲存窗體的原始寬度

private formoldheight as long

`儲存窗體的原始高度

`在呼叫resizeform前先呼叫本函式

public sub resizeinit(formname as form)

dim obj as control

formoldwidth = formname.scalewidth

formoldheight = formname.scaleheight

on error resume next

for each obj in formname

obj.tag = obj.left & " " & obj.top & " "

& obj.width & " " & obj.height & " "

next obj

on error goto 0

end sub

`按比例改變表單內各元件的大小,

在呼叫resizeform前先呼叫resizeinit函式

public sub resizeform(formname as form)

dim pos(4) as double

dim i as long, temppos as long, startpos as long

dim obj as control

dim scalex as double, scaley as double

scalex = formname.scalewidth / formoldwidth

`儲存窗體寬度縮放比例

scaley = formname.scaleheight / formoldheight

`儲存窗體高度縮放比例

on error resume next

for each obj in formname

startpos = 1

for i = 0 to 4

`讀取控制項的原始位置與大小

temppos = instr(startpos,

obj.tag, " ", vbtextcompare)

if temppos > 0 then

pos(i) = mid(obj.tag,

startpos, temppos - startpos)

startpos = temppos + 1

else

pos(i) = 0

end if

`根據控制項的原始位置及窗體改變大小

的比例對控制項重新定位與改變大小

obj.move pos(0) * scalex, pos(1)

* scaley, pos(2) * scalex, pos(3) * scaley

next i

next obj

on error goto 0

end sub

private sub form_load()

call resizeinit(me) `在程式裝入時必須加入

end sub

private sub form_resize()

call resizeform(me) `確保窗體改變時控制項隨之改變

end sub

----本例中給出了二個函式:resizeinit和resizeform,在呼叫resizeform之前必須先呼叫resizeinit。你可以將本程式拷到窗體**段裡,然後在窗體裡加入任意控制項即可進行測試  

vb中自動調整控制項的大小

機房收費系統中有很多查詢記錄類的窗體用到了mshflexgrid控制項。當沒有調整該控制項的大小時,查詢結果可能會如圖所示 而我們需要的是 這本來是乙個很簡單的調整mshflexgrid列寬的問題,只需要設定allowuserresizing即可,如圖 然後再調出 call adjustcolwid...

VB控制項隨窗體大小改變而改變 控制項自適應窗體大小

大家在設計程式的是 經常碰到的情況是 設計時介面很wonderful 實際執行時也不錯 可是一旦當使用者改變的窗體大小 一下子就不和諧了 那麼現在就給一段 讓窗體內的控制項隨窗體縮放的百分比進行縮放 資料取自網路 非原創 只是略加整理好了 所以就不說什麼了 copy到from裡即可 option e...

動態改變控制項大小

一 方法使用 getlayoutparams 和setlayoutparams 方法二 示例 linearlayout.layoutparams linearparams linearlayout.layoutparams aaa.getlayoutparams 取控制項aaa 當前的布局引數 li...