控制項伴隨窗體變化

2021-07-03 21:16:35 字數 1873 閱讀 7941

雖然這是個小功能,但是歷史可以追溯到作品展,當時就特別想讓控制項伴隨窗體的變大而變大,如果窗體變大了而控制項還是那麼小就會很難看,所以各種查資料,看書。後來算是解決了這個問題。但是當時並沒有記錄下來,直到後來又有人問我,我想應該把學到的新東西,比較陌生的做乙個總結。

下面來看看我是怎麼實現的

1、新增乙個標準模組,在模組裡寫下如下**:

option explicit

private formoldwidth as long

'儲存窗體的原始寬度

private formoldheight as long

'儲存窗體的原始高度

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

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

2、在窗體中呼叫模組的過程

private sub form_resize()

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

end sub

private sub form_load()

call resizeinit(me) '在程式裝入時加入

end sub

下面看看敲好的效果圖:

如何讓控制項隨窗體的大小變化而變化

根據 窗體的新的大小調整控制項 的 大小 新的x 新的y 控制項 private void setcontrols float newx,float newy,control cons 獲取控制項的tag屬性值,並分割後儲存字串陣列 float a convert.tosingle mytag 0 ...

如何讓窗體大小隨著控制項的大小變化而變化

2014 01 20 14 25 form的autosize true,formborderstyle fixedsingle tablelayoutpanel及其裡面的容器的dock fill,autosize true label中的文字比較貼著窗體邊緣時可以通過padding屬性來調整 因定寬...

VB控制項隨窗體大小而變化 Resize Form

vb控制項隨窗體大小而變化 當窗體大小改變時,如何動態的改變控制項的大小是許多vb程式設計師頭痛的 事。有的人設定窗體resizable但卻不改變控制項的大小 有的人則根據控制項的 絕對位置與視窗大小相加減的辦法來重新定位控制項與改變大小,這種辦法比 較繁瑣,且不可重用 當然也有人則限定視窗乾脆不讓...